Helmfile のドキュメントを読んでいたら Advanced Features として「Deploy Kustomization with Helmfile(Helmfile で kustomize をデプロイする)」という機能が載っていた.最初はどういう意味?と疑問だったけど,簡単に言うと helmfile apply
コマンドを使って kustomize プロジェクトをデプロイできる機能だった. 試したことをまとめていく!
Helmfile で kustomize をデプロイする ☸️
さっそく base/
と overlays/
から構成された通常の kustomize プロジェクトを準備する.今回は kakakakakku/sandbox-kustomize を使う.そして Helmfile の設定ファイルである helmfile.yaml
を追加しておく.
$ tree . . ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ ├── namespace.yaml │ └── service.yaml ├── helmfile.yaml └── overlays └── dev ├── deployment.yaml └── kustomization.yaml 3 directories, 7 files
なお helmfile.yaml
は以下のようになる.設定はシンプルで chart
に kustomize の overlays
ディレクトリを指定している.
releases: - name: my-kustomize chart: ./overlays/dev/
さっそく helmfile apply
コマンドを実行する.なんと簡単に kustomize プロジェクトをデプロイできてしまう🎉もしデプロイはせずにテンプレートを確認する場合は helmfile template
コマンドを使えば OK👌
$ helmfile apply (中略) UPDATED RELEASES: NAME CHART VERSION my-kustomize /var/folders/tm/whkdv3gd0p17xv63827c4vc00000gr/T/chartify020976714/my-kustomize $ kubectl get pods -n kakakakakku-dev NAME READY STATUS RESTARTS AGE kakakakakku-dev-nginx-7c7bbd5d59-49hfm 2/2 Running 0 80s kakakakakku-dev-nginx-7c7bbd5d59-54wdd 2/2 Running 0 80s kakakakakku-dev-nginx-7c7bbd5d59-76wzq 2/2 Running 0 80s kakakakakku-dev-nginx-7c7bbd5d59-klnrg 2/2 Running 0 80s kakakakakku-dev-nginx-7c7bbd5d59-rkghp 2/2 Running 0 80s
そして helmfile apply
コマンドの結果から確認できる通り,CHART
列に /var/folders/tm/whkdv3gd0p17xv63827c4vc00000gr/T/chartify020976714/my-kustomize
と書いてある.ようするに Helmfile は内部的に「一時的な Helm Chart」を作っている.なるほど!仕組みが少し理解できた気がする.
$ cd /var/folders/tm/whkdv3gd0p17xv63827c4vc00000gr/T/chartify410376923/my-kustomize $ tree . . ├── Chart.yaml ├── files │ └── templates │ └── kustomized.yaml └── templates └── kustomized.yaml 3 directories, 3 files
次の検証に進むため1度消しておく.
$ helmfile delete (中略) DELETED RELEASES: NAME my-kustomize
Helmfile で Helm Chart と kustomize をデプロイする ☸️
とは言え,kustomize プロジェクトをデプロイするなら普通に kustomize build
コマンドを使えば良く,どんなシナリオで便利なのかを考えてみた.例えば Helm Chart と kustomize を併用する場合に便利だと思う.具体的には「Jenkins などミドルウェア関連は Helm Chart」で「自分で実装をしたアプリケーション関連は kustomize」という場合はどうだろうか?そうなると helm
コマンドと kustomize
コマンドを併用する必要があるけど「helmfile
コマンドで統一的に操作できる」という点はメリットになると思う💡
Jenkins を Helm Chart でインストールする例だとすると helmfile.yaml
は以下のようになる.
releases: - name: my-kustomize chart: ./overlays/dev/ - name: my-jenkins chart: jenkins/jenkins version: 3.4.1
同じように helmfile apply
コマンドを実行すると,なんと Helm Chart も kustomize プロジェクトもデプロイすることができた!便利!
$ helmfile apply (中略) UPDATED RELEASES: NAME CHART VERSION my-kustomize /var/folders/tm/whkdv3gd0p17xv63827c4vc00000gr/T/chartify251994092/my-kustomize my-jenkins jenkins/jenkins 3.4.1
helmfile.yaml
を簡単に図解すると以下のようになる.
まとめ ☸️
引き続き Helmfile を試している.今回は kustomize と連携する機能を試した.Helm Chat も kustomize プロジェクトも helmfile
コマンドで統一的に操作できるのは便利だと思う.