1.helmとは。基本的な使い方
helmとは:KubernetesでつらいYAML地獄を脱却するYAML生成ツール
- Kubernetesのつらさ
Kubernetesでは、PodやServiceといった基本的なコンテナの設定をYAML形式で記述します。
何度も何度もYAMLを書いていると、下記のような決まり文句の書き出し数行を書くのもつらくなってきます。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
helmがやってくれるのは、「nginxがほしい」と願えば上記のYAMLを生成してくれることだと思っています。
helmの基本的なコンセプト:設計図Chartとそこから作られるRelease
YAMLの生成は、Chart(チャート)とRelease(リリース)で実現されます。
- Chartは、Kubernetesでよく作られるPodやServiceなどのYAMLファイルのひな型を固めて圧縮したもの。
- Releaseは、Chartに基づいてコピー生成されたPodやServiceなどのYAMLファイル。
nginxのチャートはたいてい有志が開発してくれていますので、我々は後述するhelm install
コマンドを実行すれば、新しいリリースを作成してくれて、ついでにKubernetesにデプロイしてくれます。
生成したYAMLファイル自体に目を通すこともなく、Kubernetes上にnginxが構築されるわけです。
これがYAML地獄からの脱却です。
helmの仕掛け
基本的にはコマンドとサーバで処理を行っています。
コマンドはKubernetesで必要な処理をサーバに伝えて実行します。
利用する我々は、コマンドの使い方を覚えればいいだけです。
(注:このアーキテクチャはv2まで。v3からはtillerはなくなり、端末側でのレンダリングとなりました)
これだけで使える:helm install
とReleaseの名前
チャートからリリースを作成するコマンドが、helm install
です。
helm install <nginxチャート名> -n <リリース名>
helm install <リリース名> <nginxチャート名> # 結構私自身影響ありました・・・スクリプト書き直しが ;o
同じチャートから複数のリリースを作った場合にちゃんと区別するために、リリースには名前が付けられます。何も指定しなければ勝手に英単語2つをくっつけた名前が設定されます。(が、これはあとあとで厄介ですので、リリース名はつけるのがおすすめ)
その他のhelmのコマンド
- インストール
コマンド | 機能 |
---|---|
helm init |
tillerサーバのインストール (v2まで) |
- リリース系
コマンド | 機能 |
---|---|
helm install |
チャートからリリースを作成する |
helm upgrade |
チャート更新があったら、作成済みリリースに更新を適用する |
helm delete(del) |
リリースを削除する |
helm list(ls) |
リリースをリストアップする |
helm get [values, manifest] |
リリースの情報を表示する |
- チャート系
コマンド | 機能 |
---|---|
helm repository(repo) [list, add, delete] |
チャートのレポジトリを追加、削除する |
helm create |
自作チャートのひな型を作成する |
helm dependency(dep) |
チャート内の依存関係を解決する |
helm search |
チャートを検索する |
helmをインストールして実際に使ってみよう!
helmコマンドのバイナリをダウンロードし、helm init
を実行することでコマンド・サーバの両方がインストールされます。
helmコマンドは下記サイトの各バージョンの「Installation and Upgrading」からダウンロードできます。自分のOSに合わせたバイナリをダウンロードします。
helm/release
Linuxであれば、このバイナリを下記パスに移動するだけで使えるようになります。
mv linux-amd64/helm /usr/local/bin/helm
最後にサーバをインストールします。
helm init
すでにインストール済みのサーバをアップデートするには、下記を実行します。
helm init --upgrade
少し古いバージョンだとKubernetes: パッケージマネージャHelmがたいへん詳しいです。
自作Chartの作り方
- 次回!