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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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