もう 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
|
使い方
下の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目的のマニフェストテンプレートを定義することでインストール後にテストを満たすか確認できる。