Kubernetes helm & helmc

0 %
100 %
Information about Kubernetes helm & helmc

Published on June 20, 2016

Author: ayaigarashi338

Source: slideshare.net

1. 1 k8s helm & helmc Kubernetes meetup Tokyo #2

2. 2 ABOUT MESoftware Engineer I’m developing cloud services. AYA IGARASHI NTT Communications @Ladicle

3. 3 AGENDA INTRODUCTION 01 02 03 今までの管理方法 04 HOW TO MANAGE MANIFESTS? ABOUT K8S HELM & HELMC WHICH IS BETTER? HAPPY HELMING どんなものか、違いは何か どちらをどのような構成で使うべきか まとめ

4. 4 How to mange Manifests?

5. 5 BASH MANAGEMENT of MANIFEST 1 source env.sh 2 printf "cat <<++EOSn%sn++EOSn" "$(cat *service.yaml *deployment.yaml)" 3 | sh > all-in-one.yaml 環境ごとに変更したい値をbash変数としてManifestに埋め込み、 実行したい環境の設定ファイルを読み込んでからシェル芸をしていた 今まで 1 apiVersion: extensions/v1beta1 2 kind: Deployment 3 metadata: 4 name: rabbitmq${SUFFIX} 5 spec: 6 replicas: ${REPLICA_NUMBER} 7 template: 8 metadata: 9 labels: 04 02 rabbitmq-deployment.yaml labels以降は省略している install-service-and-deployment.sh env.shの中で変数をexport

6. 6 PROBLEMS MANAGEMENT of MANIFEST 01 DUPLICATE DEFINITIONS containersのenvフィールドに複数のファイルに共 通の環境変数が定義されているため、修正漏れが 発生する。(連想配列が使いたい….) 02 HARD TO READ シンプルに構造的な変数を定義できないため設定 ファイルが読みづらい。 03 YAML LINT IS NOT ENOUGH 心の平穏のためmanifestをk8sへインストールする前 に試験を実施したかったが、YAML lintでは結果が PASSEDであってもk8sで動かないことが多々あった。 PROBLEM BASH

7. 7 By Helm

8. 8 What is Helm? ABOUT K8S HELM & HELMC GolangのTemplate拡張ライブラリであるSprigの記法を使ってManifestファイルを 定義することができる。また、サブコマンドとして文法チェックを行う lintコマンドが提供されている。 K8Sのパッケージマネージャ 1 # Githubb上で公開されているnginxパッケージを検索 2 $ helmc search nginx 3 example-nginx - An example nginx + git-sync application 4 nginx - Nginx http service 5 nginx-alpine - Nginx http service 6 7 # Kubernetesへnginxをインストールする 8 $ helmc install nginx 9 ---> No chart named "nginx" in your workspace. Fetching now. 10 ---> Running `kubectl create -f` ... 11 service "nginx" created 12 replicationcontroller "nginx" created 13 ---> Done

9. 9 Diff Helm Helmc

10. 10 ALL Different HELM CLASSIC KUBERNETES HELM Oct 18, 2015にDEISによって作られた CLIでChartの作成/削除/更新ができる。 ChartのバージョンはGitのSHAsで判定 されている。 Nov 1, 2015にk8sへ取り込まれたクライア ントサーバ型のツール。12FactorAppの思 想をもとにChart + Config = Release という 構成をとっている。 What is Chart? k8sのインスタンスを作成するために必要な テンプレート/値の集合体

11. 11 02KUBERNETES GITHUB install uninstall NGINX WORD PRESS MYSQL HELMC CHART FILES publish, fetch Create using kubectl Helm Classic ABOUT K8S HELM & HELMC

12. 12 02KUBERNETES install chart delete Release TILLER CHART FILES Kubernetes Helm ABOUT K8S HELM & HELMC HELM REST/JSONgRPC STORAGE NGINX WORD PRESS MYSQL Create Chart files contain Chart packages Package Chart files NGINX CHART PACKAGE get/update Release TarBall

13. 13 Which is Better?

14. 14 Which is better? Kubernetes HelmはまだバージョンAlpha-1がリリースされ たばかりで動かないものが多いため。 Which is better? Now HELM CLASSIC Helm Classicはメンテナンスされなくなるため、ある程度安定してか らは移った方がよい。ロードマップによるとBeta1にはChart.yamlの フォーマットをFixするらしいのでその頃には移動してもよさそう ROAD MAP: https://github.com/kubernetes/helm/issues/694 Feature KUBERNETES HELM

15. 15 How to use Helmc

16. 16 How to use Helmc? WHICH IS BETTER? テンプレートと変数は見通しがよいようにディレクトリを新たに切っている。 また、変数は環境ごとにファイルを分割し共通のデフォルト値は直接templateに定義している。 FILE STRUCTURE Variable file format Helmcでは変数ファイルのフォーマットはJSON/ YAML/TOMLの中から選択できるが、k8s HelmはTOML のみのため、移行のしやすさからTOMLがおすすめ deployments-generator.sh 次ページで説明するCustomize generatorから呼びだ しているManifestの生成スクリプト └── rabbitmq ├── Chart.yaml ├── README.md ├── deployemnts-generator.sh ├── manifests ├── templates │ ├── service.yaml │ └── deployment.yaml └── variables └── lab1.toml.tpl └── lab2.toml.tpl

17. 17 Custom Generator WHICH IS BETTER? deployments-generator.sh (抜粋) ( 1 # helm:generate $HELM_GENERATE_DIR/deployemnts-generator.sh 2 apiVersion: extensions/v1beta1 3 kind: Deployment 1 echo "deploymentType = "${type}"" > $tempdir/values.toml 2 3 for type in "age" "hoge"; do 4 helmc template -d $tempdir/values.toml 5 -o manifests/${type}-deployment.yaml $HELM_GENERATE_FILE 6 done deployment.yaml (抜粋) templateコマンドを使ってManifestを生成すると各ファイル毎に実行しなければならないが、generateコ マンドを使用すると以下のdeployment.yamlのように一行目にgeneratorが指定されているものをChartディ レクトリの中から収集し、一括してManifestを生成することができる。(Jenkinsとの相性よし!)

18. 18 More Information

19. 19 More Information HAPPY HELMING 01 02 03 http://slack.kubernetes.io/ KUBERNETES SLACK #HELM CHANNEL MEETING ON ZOOM JAPANESE DOCUMENT Contribution まだまだ始まったばかりの面白いプロジェクト 小さなバグFIXば数日でRV, MGされる 手順は他のk8sプロジェクトと同じです https://engineyard.zoom.us/j/ https://github.com/Ladicle/kubernetes-helm-jp-doc

20. 20 HAPPY HELMING! Thanks for watching @ladicle

Add a comment

Related pages

Helm: The Kubernetes Package Manager

The package manager for Kubernetes Helm is the best way to find, share, and use software built for Kubernetes.
Read more

GitHub - kubernetes/helm: The Kubernetes Package Manager

README.md Kubernetes Helm. Helm is a tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources. Use Helm to...
Read more

GitHub - helm/helm-classic: Helm - The Kubernetes Package ...

Helm Classic (the helm/helm repository) is no longer actively developed but will remain available until kubernetes/helm has stabilized.
Read more

Helm Classic: A Kubernetes Package Manager

Helm Classic: A Kubernetes Package Manager. Helm Classic helps you find and use software built for Kubernetes. The Helm Classic CLI uses Charts which not ...
Read more

Introducing Helm, The Kubernetes Package Manager - Deis

We at Deis are really excited about Kubernetes. In fact, we're hard at work building Deis v2 on top of a Kubernetes base. During this integration, we ...
Read more

Helm: The Kubernetes Package Manager - Helm Documentation

Helm: The Kubernetes Package Manager. Helm helps you find and use software built for Kubernetes. The Helm CLI uses Charts which not only contain metadata ...
Read more

Kubernetes Overview, Part Two - deis.com

Helm. Helm is the Kubernetes package manager. We have learned how to install replication controllers and services on a ... $ helmc -h To start using Helm, ...
Read more

Motorradhelme - Schuberth

Seit mehr als 70 Jahren fertigen wir Helme der Spitzenklasse. Unser größtes Ziel ist es, unseren Kunden den bestmöglichen Helm zur Verfügung zu stellen ...
Read more