Helm(v3)よかった

もう Tiller がいらないらしい。すごい。 Installしてリポジトリを設定したら使える。すごい。

確認

標準でなにが使えるかも確認する。

1
2
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
$ helm search repo stable | grep -v 'DEPRECATED' | less

有名なリポジトリも含めて探したいときのWebUIとしてHelm Hubがある。 コマンドラインからも helm search hub $name で検索できる。

気になるChartは pull で落として中身を確認できる。 構造は公式を参考にする。 templates ディレクトリがマニフェスト生成の元になっている。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
helm pull stable/prometheus
tar -xzf ./prometheus-*.tgz
tree ./prometheus | less
./prometheus
|-- Chart.yaml
|-- README.md
|-- charts
|   `-- kube-state-metrics
|       |-- Chart.yaml
|       |-- OWNERS
|       |-- README.md
|       |-- templates
|       |   |-- NOTES.txt
|       |   |-- _helpers.tpl
....
|-- requirements.lock
|-- requirements.yaml
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- alertmanager-clusterrole.yaml
...
|   `-- server-vpa.yaml
`-- values.yaml

インストール

インストールに名前を与える必要がある。自動生成でいい場合は –generate-name を使う。

1
2
3
4
5
$ helm install stable/prometheus --generate-name
$ helm ls
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
prometheus-1594781128   default         1               2020-07-15 11:45:31.799822 +0900 JST    deployed        prometheus-11.7.0       2.19.0
$ helm status prometheus-1594781128

Prometheusの場合、こんな感じで status から port-forward のやり方を得られる。 Chart定義の templates/NOTES.txt から来てそう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ helm status prometheus-1594781128 | grep -A 3 'Get the'
Get the Prometheus server URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace default port-forward $POD_NAME 9090

--
Get the Alertmanager URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=alertmanager" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace default port-forward $POD_NAME 9093
#################################################################################
--
Get the PushGateway URL by running these commands in the same shell:
  export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=pushgateway" -o jsonpath="{.items[0].metadata.name}")
  kubectl --namespace default port-forward $POD_NAME 9091
1
2
$ kubectl port-forward --namespace default \
    deploy/prometheus-1594781128-server 18081:9090
Prometheus画面 Prometheus画面

使い方

下の3つを読んで雰囲気を掴む。

最初は Chart の設定値をいじって適用するのが中心になる。 その場合 show values で設定値を取り出して上書きして使う。 問題なければhelmfileにまとめるって流れになりそう。

1
2
$ helm show values stable/prometheus > values.yml
$ helm install test-prometheus stable/prometheus -f values.yml

開発やデバッグ

dryrun,構文チェック,lintがついてる。 test目的のマニフェストテンプレートを定義することでインストール後にテストを満たすか確認できる

comments powered by Disqus