k3sのマニフェスト作成は、Kustomize と Helmのどちらを選択すべきか?
2024-10-16

k3sは、リソース効率に優れた軽量Kubernetesとして、エッジデバイスやIoT分野で広く使われています。その軽量性にもかかわらず、通常のKubernetesと同じく複雑なマニフェストの管理が必要です。そんなk3sにおけるマニフェスト作成・管理には、代表的な2つのツール KustomizeHelm があります。

それぞれをざっくりまとめると、

Kustomizeとは

Kustomizeは、Kubernetesネイティブなツールで、Kubernetesオブジェクトのオーバーレイやパッチを使って設定を変更できるのが特徴です。マニフェストをテンプレート化するのではなく、既存のYAMLファイルにオーバーレイを適用することで、再利用性を高めながら、環境ごとに設定を簡単にカスタマイズできます。

利点

Kubernetesにネイティブに統合されており、kubectlに直接組み込まれている。 マニフェストのテンプレート化を避け、純粋なYAMLのまま構成を変更できる。 環境ごとのカスタマイズが容易で、複雑なパッチの適用も可能。

欠点

テンプレート機能がないため、複雑なロジックを含む構成には不向き。 Helmに比べて、パッケージ管理やバージョン管理の仕組みが弱い。

Helmとは

Helmは、Kubernetesの「パッケージマネージャー」としてよく知られ、アプリケーションのデプロイやアップグレード、ロールバックが非常に簡単に行えます。Helmはチャートと呼ばれるテンプレートを使用して、複数のリソースを一括で管理できます。

利点

既存のHelmチャートを利用して、複雑なアプリケーションをすぐにデプロイ可能。 テンプレート機能が強力で、カスタマイズの自由度が高い。 バージョン管理やロールバック機能が標準で備わっているため、大規模なデプロイや管理に最適。

欠点

テンプレート構文が複雑になりがちで、学習コストが高い場合がある。 シンプルなユースケースでは、Kustomizeに比べてオーバーヘッドが大きい。

k3sでの選択ポイント

とそれぞれの特徴をまとめました。 ここで、実際の各OSSアプリケーションのHPを見てみましょう。 OSSアプリケーションのインストールガイド中には、Helmでのインストール方法しか記載されていないものも、多々あります。
また、Gitを見ても、Helmでのインストールが前提のものも多いです。
この点から、Helmを第一選択肢とすべきとお考えの皆さん、ちょっと待ってください。
Kustomizeのマニフェスト上からHelmインストールは可能なんです。
(マニュフェストのディレクトリ構成や書き方はまた次回。。)

ここで、k3sのような軽量Kubernetes環境では、リソースの制約や運用の簡便さが特に重要です。そのため、次の点を考慮して選択すると良いでしょう。

シンプルな環境や、基本的なカスタマイズを行いたい場合には、Kustomizeが最適です。構成管理が軽量で、既存のマニフェストを簡単にカスタマイズできます。また、初心者であれば、学習コストもHelmに比べて低いと私は思います。 複雑なアプリケーションや、継続的なデプロイ、アップグレード、ロールバックを含む大規模な環境では、Helmの強力なテンプレート機能やバージョン管理が有効となる場合もあるかと思いますが、個人利用で大規模環境を構築するケースはほぼないのではないかと思います。

k3sのマニフェスト作成は、Kustomize と Helmのどちらを選択すべきか?
https://notes.midnightstops.com/posts/15/
作者
Author
公開日
2024-10-16