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/

332f89cc697355902a817506b6995f2b?s=128

y_taka_23

June 13, 2020
Tweet

Transcript

  1. Kpt を使って組み換え可能な Manifest Pipeline を作ろう! チェシャ猫 (@y_taka_23) KubeFest Tokyo 2020

    (13th Jun. 2020)
  2. Kpt [képt] Kubernetes Package Manager named after

  3. Base Repo Team Repo Developer Cluster 1. get / follow

    3. push 4. apply 2. construct
  4. Base Repo Team Repo Developer Cluster 1. get / follow

    3. push 4. apply 2. construct
  5. Manifest 構築ツールとしての Kpt • Setter ◦ YAML 内の指定した項目を置換 • Substitution

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

    ◦ YAML 内の文字列の一部を置換 • Function ◦ カスタム変換・バリデーションを記述可能
  7. None
  8. 置換したい項目にコメント

  9. None
  10. OpenAPI 形式で置換を定義

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

    ◦ YAML 内の文字列の一部を置換 • Function ◦ カスタム変換・バリデーションを記述可能
  15. None
  16. アノテーション追加

  17. None
  18. None
  19. None
  20. Q:Docker 化する意義は? A:各ステップが配布可能に

  21. 配布されている Function の例 • マニフェスト変換系 ◦ : Helm Chart をレンダリング

    ◦ : リソース要求量を追記 • バリデーション系 ◦ : OPA 形式の制約検査 ◦ : PodSecurityPolicy に対する Lint
  22. Q:なぜ Manifest + コメント? A:各ステップが合成可能に

  23. None
  24. Transform 2 Source Manifest Transform 1 Validation Result Manifest

  25. パッケージマネージャ + パイプラインの「パイプ記号」部分

  26. まとめ • Manifest 管理ツール Kpt ◦ unix コマンドの「パイプ」としても振る舞う • カスタム

    Function も定義可能 ◦ Docker 化されているので配布が容易 • 入出力は常に完全な Manifest YAML ◦ 複数のステップを連結できる
  27. Enjoy Manifest Pipelining! Presented by チェシャ猫 (@y_taka_23)