Kubernetesのパッケージマネージャーに、Helmというものがあります。
それほど頻繁には使わないのですが、毎回使い方を検索しているので、自分用にメモしておきます。
Helmとは?
Kubernetesに何か機能を追加する際は、アプリのデプロイと同様、YAMLファイルとkubectl create -f
コマンドでクラスターにデプロイします。
関連するリソースが複数あると、それぞれYAMLファイルを編集してデプロイしていく必要があります。
それらの、互いに紐づくもろもろのデプロイをテンプレート化して、コマンドでまとめてできるようにしてくれるのがHelmです。
設定値を部分的に変更でき、YAMLファイル編集のミスが起こりにくく、一度デプロイしたものをまとめて削除したりできます。
インストール
公式サイトは下記
バイナリインストール
Helmクライアントをローカルマシンにインストールする。
ファイルをダウンロードして解凍し、バイナリをパスに置くが、下記コマンドでそれをやってくれる。
curl -L https://git.io/get_helm.sh | bash
「get_helm.sh」ファイルが残るので削除しておく。
アカウント作成
Kubernates上にHelmのアカウント「tiller」を作成し、アドミ権限を付ける。
rbac-config.yaml
apiVersion: v1 kind: ServiceAccount metadata: name: tiller namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tiller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: tiller namespace: kube-system
kubectl create -f rbac-config.yaml
Helm設定
作成したアカウント「tiller」でHelmをセットアップする。
helm init --service-account tiller --history-max 200
「--history-max 200」は付けておいた方がいい
tiller削除
tillerをKubernetesクラスターから削除(tillerのインストールからやり直す時に使う)
helm reset -f
Helm使い方
リポジトリを最新に更新
helm repo update
パッケージインストール
helm install <パッケージ名>
これだとリリース名が※勝手に付けられるので、リリース名を指定する場合は下記にする。(※本当に勝手な名前が付けられる)
helm install <パッケージ名> --name <リリース名>
ネームスペース指定してインストール
helm install <パッケージ名> --namespace <ネームスペース名>
パラメータ値を設定してインストール
helm install <パッケージ名> \ --set a=b # {a:b}をセット \ --set a=b,c=d # {a:b, c:d}をセット \ --set a.b=c # {a:{b:c}}をセット \ --set a={b,c} # {a:[b, c]} をセット\
パラメータ値を外部ファイル化して読み込んでもよい
helm install <パッケージ名> \ -f <パラメータYAMLファイル> \
パラメータが多岐に渡る時はファイル化した方が無難。
パラメータ確認
パッケージで設定できるパラメータ情報表示
helm inspect values <パッケージ名>
ここに表示されるパラメータを、「--set」や「-f」で部分的に上書き更新してカスタマイズする。
インストールしたパッケージ削除
helm delete <リリース名> --purge
インストールしたパッケージ確認
状態表示
helm status <リリース名>
設定済みパラメータ確認
helm get values <リリース名>
一覧
helm list --all
稼働中のみ表示
helm list