成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

Helm(Kubernetes) vol.2

前回

straitwalk.hatenablog.com

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書いてみるかな。