KubeFest Tokyo 2020 で使用したスライドです。
Kubernetes を運用する上で、大量の Manifest の複雑性をどう扱うかは避けられない課題です。テスト用と本番用のクラスタで設定が微妙に違っていたり、あるいは複数のチームが管理する Manifest に共通して必要な設定がある、といった現実的な状況下では、何らかの形で Manifest の共通化や環境差分の管理が必須です。実際、この問題を解決するために様々なツールが考案され、また広く使用されています。Helm や Kustomize はその代表格です。
一方、今回紹介する Kpt は、Helm や Kustomize とは一線を画したアプローチを採用しています。Kpt の大きな特徴は、入力と出力の間に「テンプレートとその代入結果」のような非対称性を導入せず、同じ形式の YAML を用いる点にあります。Kpt の各ステップは YAML を読み、加工した上で書き戻す処理になっているため、あたかも unix コマンドをパイプで繋ぐように、二つのステップを自在に接続したり、途中にステップを追加したりすることが可能になります。