新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Kubernetesパッケージマネージャー、Helmの使い方メモ

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