kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Helmfile で kustomize プロジェクトをデプロイする機能を試した

Helmfile のドキュメントを読んでいたら Advanced Features として「Deploy Kustomization with Helmfile(Helmfile で kustomize をデプロイする)」という機能が載っていた.最初はどういう意味?と疑問だったけど,簡単に言うと helmfile apply コマンドを使って kustomize プロジェクトをデプロイできる機能だった. 試したことをまとめていく!

github.com

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 は以下のようになる.設定はシンプルで chartkustomizeoverlays ディレクトリを指定している.

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 Chartkustomize を併用する場合に便利だと思う.具体的には「Jenkins などミドルウェア関連は Helm Chart」「自分で実装をしたアプリケーション関連は kustomize」という場合はどうだろうか?そうなると helm コマンドと kustomize コマンドを併用する必要があるけどhelmfile コマンドで統一的に操作できる」という点はメリットになると思う💡

JenkinsHelm Chart でインストールする例だとすると helmfile.yaml は以下のようになる.

releases:
  - name: my-kustomize
    chart: ./overlays/dev/
  - name: my-jenkins
    chart: jenkins/jenkins
    version: 3.4.1

同じように helmfile apply コマンドを実行すると,なんと Helm Chartkustomize プロジェクトもデプロイすることができた!便利!

$ 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 を簡単に図解すると以下のようになる.

f:id:kakku22:20210927084759p:plain

まとめ ☸️

引き続き Helmfile を試している.今回は kustomize と連携する機能を試した.Helm Chatkustomize プロジェクトも helmfile コマンドで統一的に操作できるのは便利だと思う.

関連記事 ☸️

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com