Helm(Kubernetes) vol.2
前回
TODO
- [ ] Helm上の概念の理解
- [ ] 独自Chartsを書いてみる
- [ ] PrivateRepositoryは使えるのか?
- 独自repositoryを作る
Helm上の概念の理解
~ ❯ helm ls NAME REVISION UPDATED STATUS CHART NAMESPACE errant-hare 1 Sat Mar 3 22:39:16 2018 DEPLOYED kubernetes-dashboard-0.4.1 default
まずこれだけ見ても
- Name
- revision
- chart
という用語が出て来る
それぞれ理解していくか
用語
用語 | 説明 |
---|---|
Package | k8s上にインストールするアプリケーション |
Chart | パッケージを構成するYAML達 |
Release | インストールされたパッケージ |
Name | -n, --name string release name. If unspecified, it will autogenerate one for you |
Revision | Releaseをupgradeするとrevisionが上がって履歴管理されるらしい |
んー、なんのコッチャ
ライフサイクル
- 12factor appに則っている
- ChartをReleaseとして管理している
- upgradeコマンドでReleaseを作る
- rollbackコマンドで戻せる
- historyで履歴を見れる
ふーん。 やってみるか。
dashboardの最新versionは0.4.1っぽいので、0.4.0をinstallしてみる
~ ❯ helm install stable/kubernetes-dashboard -n test-dash --version 0.4.0
~ ❯ helm ls NAME REVISION UPDATED STATUS CHART NAMESPACE test-dash 1 Tue Mar 6 22:35:32 2018 DEPLOYED kubernetes-dashboard-0.4.0 default
0.4.0がinstall出来た。nameも指定できた。
んじゃupgradeしてみよう。
> helm upgrade test-dash stable/kubernetes-dashboard --version 0.4.1 Error: UPGRADE FAILED: Deployment.apps "test-dash-kubernetes-dashboard" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"release":"test-dash", "app":"kubernetes-dashboard", "chart":"kubernetes-dashboard-0.4.1", "heritage":"Tiller", "kubernetes.io/cluster-service":"true"}: `selector` does not match template `labels`
( ゚д゚)ハッ! 失敗
ん?
version指定を消してみる、、、うまくいった。 0.4.0に戻してみたり、再度0.4.1にしてみたり。
0.4.0 -> 0.4.1(失敗) -> 0.4.1(成功) -> 0.4.0(成功) -> 0.4.1(失敗) -> 0.4.1(成功)
何故か2回やると上手くいく… なんかバグ踏んだ気がする
~ ❯ helm ls NAME REVISION UPDATED STATUS CHART NAMESPACE test-dash 7 Tue Mar 6 22:43:31 2018 DEPLOYED kubernetes-dashboard-0.4.1 default ~ ❯ helm history test-dash REVISION UPDATED STATUS CHART DESCRIPTION 1 Tue Mar 6 22:35:32 2018 SUPERSEDED kubernetes-dashboard-0.4.0 Install complete 2 Tue Mar 6 22:38:54 2018 SUPERSEDED kubernetes-dashboard-0.4.1 Upgrade "test-dash" failed: Deployment.apps "test-dash-ku... 3 Tue Mar 6 22:40:28 2018 SUPERSEDED kubernetes-dashboard-0.4.1 Upgrade complete 4 Tue Mar 6 22:40:49 2018 SUPERSEDED kubernetes-dashboard-0.4.1 Upgrade complete 5 Tue Mar 6 22:40:55 2018 SUPERSEDED kubernetes-dashboard-0.4.0 Upgrade complete 6 Tue Mar 6 22:43:03 2018 SUPERSEDED kubernetes-dashboard-0.4.1 Upgrade "test-dash" failed: Deployment.apps "test-dash-ku... 7 Tue Mar 6 22:43:31 2018 DEPLOYED kubernetes-dashboard-0.4.1 Upgrade complete
こんな感じ。 なるほどね。
構成
https://docs.helm.sh/architecture/
主な要素は以下の3つ
- helmコマンド
- Repository
- Chartの管理
- Tiller
- Chartと設定を使ってreleaseを作る
- k8sにデプロイする
- 要はこいつが肝心
ちなみに、それぞれのやり取りは全てgRPCらしい。
なるほどね。
今日はここまで。 次回は自前でChart書いてみるかな。