Abstraction of Helmfile. 社内LT用に作成したHelmfileの概要資料です/
HelmfileFuture-Daily-Standup-MeetingKubernetes Ecosystem StudyMano Junki
View Slide
What Helmfile?
Helmfileとは• KubernetesのパッケージマネージャであるHelmを宣言的に操るツール• 主な機能1. Helm Chart のValuesファイルをバージョン管理2. k8sアプリの変更をCI/CD3. 継続的に「あるべき状態」に寄せていき、prd/stgなど環境全体のskew(ずれ)を抑制する
Helmfileは何を解決するものか
Helmfileは何を解決するものか• Helmによってk8sアプリをパッケージ化はできたが、インストール時に指定する設定値によって動作が変わる• 設定値の指定方法が、サービスに寄ってまちまちになりがちで、自動化が難しかった• skew防止• 例:デバック用にインセキュアな設定をした。• ⇨hemlfileを定期実行することで、書かれていない設定は取り除かれる
こういう環境差分のvalues.yamlなどの管理。これをデプロイするshellscript?→ Helmfileで代理https://medium.com/@naseem_60378/helmfile-its-like-a-helm-for-your-helm-74a908581599
Helmfile Configuration
Helmfile最小構成の例• prom-norbac-ubuntuというアプリ名で、stable/prometheusのChartでインストール。Chart Valueとして rbac.create=falseを指定(残りはChartのデフォルト値)。values.yamlの代替
Helmfile設定項目以下の3つ1. release(前ページで説明したので割愛)2. repositories3. helmDefaults
repositories• name=HelmのChartリポジトリ名• url= HelmのChartのリポジトリのURL
helmDefaults• tillerNamespace• HelmのサーバサイドコンポーネントのTillerインストール先のネームスペース• kubeContext• kubeconfigのどのcontextが指すk8sクラスタに接続するかの指定• args• helmfileが呼ぶ全helmコマンドに追加する引数• 略
実行• 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することで実機との動機が行える
参考• https://github.com/roboll/helmfile• https://medium.com/@naseem_60378/helmfile-its-like-a-helm-for-your-helm-74a908581599