Slide 1

Slide 1 text

Helmfile Future-Daily-Standup-Meeting Kubernetes Ecosystem Study Mano Junki

Slide 2

Slide 2 text

What Helmfile?

Slide 3

Slide 3 text

Helmfileとは • KubernetesのパッケージマネージャであるHelmを宣言的に操 るツール • 主な機能 1. Helm Chart のValuesファイルをバージョン管理 2. k8sアプリの変更をCI/CD 3. 継続的に「あるべき状態」に寄せていき、prd/stgなど環境全体の skew(ずれ)を抑制する

Slide 4

Slide 4 text

Helmfileは何を解決するものか

Slide 5

Slide 5 text

Helmfileは何を解決するものか • Helmによってk8sアプリをパッケージ化はできたが、インス トール時に指定する設定値によって動作が変わる • 設定値の指定方法が、サービスに寄ってまちまちになりがちで、自動 化が難しかった • skew防止 • 例:デバック用にインセキュアな設定をした。 • ⇨hemlfileを定期実行することで、書かれていない設定は取り除かれる

Slide 6

Slide 6 text

こういう環境差分の values.yamlなどの管理。 これをデプロイするshell script? → Helmfileで代理 https://medium.com/@naseem_60378/helmfile-its-like-a-helm-for-your-helm-74a908581599

Slide 7

Slide 7 text

Helmfile Configuration

Slide 8

Slide 8 text

Helmfile最小構成の例 • prom-norbac-ubuntuというアプリ名で、stable/prometheus のChartでインストール。Chart Valueとして rbac.create=false を指定(残りはChartのデフォルト値)。values.yamlの代替

Slide 9

Slide 9 text

Helmfile設定項目 以下の3つ 1. release(前ページで説明したので割愛) 2. repositories 3. helmDefaults

Slide 10

Slide 10 text

repositories • name=HelmのChartリポジトリ名 • url= HelmのChartのリポジトリのURL

Slide 11

Slide 11 text

helmDefaults • tillerNamespace • HelmのサーバサイドコンポーネントのTillerインストール先のネームスペース • kubeContext • kubeconfigのどのcontextが指すk8sクラスタに接続するかの指定 • args • helmfileが呼ぶ全helmコマンドに追加する引数 • 略

Slide 12

Slide 12 text

実行 • helmfile apply • apply all resources from state file only when there are changes • ⇨単純な適用 • helmfile sync • sync all resources from state file (repos, releases and chart deps) • ⇨定期的にsyncすることで実機との動機が行える

Slide 13

Slide 13 text

参考 • https://github.com/roboll/helmfile • https://medium.com/@naseem_60378/helmfile-its-like-a- helm-for-your-helm-74a908581599