Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kpt を使って組み換え可能な Manifest Pipeline を作ろう! #k8sjp / KubeFest Tokyo 2020

Kpt を使って組み換え可能な Manifest Pipeline を作ろう! #k8sjp / KubeFest Tokyo 2020

KubeFest Tokyo 2020 で使用したスライドです。

Kubernetes を運用する上で、大量の Manifest の複雑性をどう扱うかは避けられない課題です。テスト用と本番用のクラスタで設定が微妙に違っていたり、あるいは複数のチームが管理する Manifest に共通して必要な設定がある、といった現実的な状況下では、何らかの形で Manifest の共通化や環境差分の管理が必須です。実際、この問題を解決するために様々なツールが考案され、また広く使用されています。Helm や Kustomize はその代表格です。

一方、今回紹介する Kpt は、Helm や Kustomize とは一線を画したアプローチを採用しています。Kpt の大きな特徴は、入力と出力の間に「テンプレートとその代入結果」のような非対称性を導入せず、同じ形式の YAML を用いる点にあります。Kpt の各ステップは YAML を読み、加工した上で書き戻す処理になっているため、あたかも unix コマンドをパイプで繋ぐように、二つのステップを自在に接続したり、途中にステップを追加したりすることが可能になります。

イベント概要:https://k8sjp.github.io/kubefest-2020/sessions/22/

y_taka_23

June 13, 2020
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

  1. Manifest 構築ツールとしての Kpt • Setter ◦ YAML 内の指定した項目を置換 • Substitution

    ◦ YAML 内の文字列の一部を置換 • Function ◦ カスタム変換・バリデーションを記述可能
  2. Manifest 構築ツールとしての Kpt • Setter ◦ YAML 内の指定した項目を置換 • Substitution

    ◦ YAML 内の文字列の一部を置換 • Function ◦ カスタム変換・バリデーションを記述可能
  3. Manifest 構築ツールとしての Kpt • Setter ◦ YAML 内の指定した項目を置換 • Substitution

    ◦ YAML 内の文字列の一部を置換 • Function ◦ カスタム変換・バリデーションを記述可能
  4. 配布されている Function の例 • マニフェスト変換系 ◦ : Helm Chart をレンダリング

    ◦ : リソース要求量を追記 • バリデーション系 ◦ : OPA 形式の制約検査 ◦ : PodSecurityPolicy に対する Lint
  5. まとめ • Manifest 管理ツール Kpt ◦ unix コマンドの「パイプ」としても振る舞う • カスタム

    Function も定義可能 ◦ Docker 化されているので配布が容易 • 入出力は常に完全な Manifest YAML ◦ 複数のステップを連結できる