萌えハッカーニュースリーダー

2025/05/16 19:16 Helm and YAML templating was a mistake: A Makefile Manifesto

出典: https://github.com/avkcode/vault/blob/main/README.md
hakase
博士

やあ、ロボ子。今日のITニュースはKubernetesのデプロイメントについてじゃ。

roboko
ロボ子

Kubernetesのデプロイメントですか。最近よく耳にする話題ですね。

hakase
博士

そうじゃ。HelmやKustomizeの代わりに、MakefileとUnixツールを使うのがシンプルで良いらしいぞ。

roboko
ロボ子

MakefileとUnixツールですか?それは意外です。どうしてそのようなアプローチが推奨されるのでしょうか?

hakase
博士

HelmはGoテンプレートとYAMLで複雑になりがちで、`values.yaml`の管理も大変じゃ。Kustomizeも宣言的とは言いながら、順序依存性があったり、パッチが複雑になったりするからの。

roboko
ロボ子

なるほど。HelmやKustomizeは抽象化レイヤーが多すぎて、デバッグが難しいという問題もあると。

hakase
博士

その通り!MakefileとUnixツールなら、`sed`、`awk`、`cat`、`jq`などでテキスト処理が簡単にできる。各コマンドの実行内容も明確でデバッグしやすいのが利点じゃ。

roboko
ロボ子

確かに、Unixツールは強力ですよね。設定管理の透明性が高まるのも魅力的です。

hakase
博士

それに、依存関係の管理も不要で、GitOpsツールとの相性も良い。シェルスクリプトやPythonスクリプトで簡単に拡張できるのもポイントじゃな。

roboko
ロボ子

セキュリティ面ではどうでしょうか?

hakase
博士

静的なマニフェストを使うから、インジェクションのリスクを減らせるぞ。`sops`や`vault-agent`でシークレットを安全に管理すれば完璧じゃ。

roboko
ロボ子

Makefileの具体的な例はありますか?

hakase
博士

例えば、Kubernetesリソースの生成、適用、削除、検証などのターゲットを定義できる。HashiCorp Vaultのデプロイメントを自動化するMakefileもあるぞ。

roboko
ロボ子

環境変数でパラメータをオーバーライドすることも可能なんですね。

hakase
博士

そうじゃ。制約も定義できる。例えば、許可された環境以外での実行を禁止したり、メモリリクエストとメモリ制限の値が許容範囲内にあることを検証したりできる。

roboko
ロボ子

ラベルの管理もできるんですか?

hakase
博士

もちろん!Makefileでラベルを動的に生成して、マニフェストに適用できる。環境(DEV/PROD/STAGE)に基づいてラベルを生成する例もあるぞ。

roboko
ロボ子

ライブクラスタと生成されたマニフェストを比較するdiff機能もあるんですね。便利そうです。

hakase
博士

じゃろ?さらに、Makefileで生成されたマニフェストからHelmチャートを生成するスクリプトもある。`gen_helm_chart.py`を使うんじゃ。

roboko
ロボ子

MakefileとUnixツールを組み合わせることで、Kubernetesのデプロイメントをシンプルに管理できるんですね。勉強になりました。

hakase
博士

そういうことじゃ!複雑なツールを使うよりも、制御性と透明性が高いから、問題が起きた時もデバッグしやすいぞ。…ところでロボ子、Kubernetesのスペル、言えるか?

roboko
ロボ子

えっと…K-u-b-e-r-n-e-t-e-s、ですか?

hakase
博士

ブー!正解は「K8s」じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search