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

[k8sjp #56] Kustomize v5 を含む最新機能とテクニックの紹介

[k8sjp #56] Kustomize v5 を含む最新機能とテクニックの紹介

yugo kobayashi

March 16, 2023
Tweet

More Decks by yugo kobayashi

Other Decks in Technology

Transcript

  1. 自己紹介 name: 小林優吾 github: koba1t twitter: 0x6b6f62 Reviewer of kubernetes-sigs/kustomize

    所属: ヤフー株式会社 (Engineer for CaaS, OSSデベロッパー) 2
  2. sortOptions 13 - kustomize build で出力されるリソースの順番を変更できる - order: fifo -

    `resources` で読まれた順番に出力する - order: legacy - `orderFirst` : 最初に出力すべきリソース - `orderLast` : 最後に出力すべきリソース - この二種類の指定方法が可能 https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/sortoptions/
  3. sortOptions 14 - kustomize build で出力されるリソースの順番を変更できる - order: fifo -

    `resources` で読まれた順番に出力する - order: legacy - `orderFirst` : 最初に出力すべきリソース - `orderLast` : 最後に出力すべきリソース - この二種類の指定方法が可能 https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/sortoptions/
  4. その他 17 - 内部で使ってるopenapiの形式変更やリファクタによって kustomize build が高速 化(#4568, #4791, #4944,

    #4809) - kustomize version の出力結果が短くなった(#5000) - - kubectl version が出力形式を変更する計画があるので、それに合わせた形 - `helmCharts` でより多くの引数をサポート(#4926 #4808) - krm exec functionで実行可能ファイルを検索するworking dirが、exec functionを 実行したkustomization.yamlが存在するディレクトリに変更 - どちらかというとバグ修正の範囲かも https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv5.0.0
  5. 非推奨な機能 18 - 長い間非推奨だった古い `patch` syntax が削除(#4911) - kustomize v4のリリース時に`patchStrategicMerge`

    へリネームされた方 - これは完全削除 - 使われていなかったサブコマンド(`kustomize fn`, `kustomize cfg`)が削除(#4930) - いくつかのsyntaxが非推奨化(#4723, #4923:) - patchesStrategicMerge, patchesJson6902, vars, imageTags など - こっちは Warning メッセージが出力されるだけでまだ使える。 - `kustomize edit fix` を実行すると(vars 以外は) 自動的に修正してくれます
  6. 非推奨な機能 19 - 長い間非推奨だった古い `patch` syntax が削除(#4911) - kustomize v4のリリース時に`patchStrategicMerge`

    へリネームされた方 - これは完全削除 - 使われていなかったサブコマンド(`kustomize fn`, `kustomize cfg`)が削除(#4930) - いくつかのsyntaxが非推奨化(#4723, #4923:) - patchesStrategicMerge, patchesJson6902, vars, imageTags など - こっちは Warning メッセージが出力されるだけでまだ使える。 - `kustomize edit fix` を実行すると(vars 以外は) 自動的に修正してくれます
  7. 非推奨な機能 20 - 長い間非推奨だった古い `patch` syntax が削除(#4911) - kustomize v4のリリース時に`patchStrategicMerge`

    へリネームされた方 - これは完全削除 - 使われていなかったサブコマンド(`kustomize fn`, `kustomize cfg`)が削除(#4930) - いくつかのsyntaxが非推奨化(#4723, #4923:) - patchesStrategicMerge, patchesJson6902, vars, imageTags など - こっちは Warning メッセージが出力されるだけでまだ使える。 - `kustomize edit fix` を実行すると(vars 以外は) 自動的に修正してくれます
  8. 何にkustomizeを使っているか 23 - CaaS(KaaS) Platformに管理用 component をデプロイするため - 1200 over

    のk8sクラスタに共通コンポーネントをデプロイする際の設定の差分管理に使用 - 規模の詳細は `[SRE NEXT 2022]KaaS桶狭間の戦い 〜Yahoo! JAPANのSLI/SLOを用いた統合監視〜 ` を https://speakerdeck.com/srenext/slowoyong-itatong-he-jian-shi
  9. 何にkustomizeを使っているか 24 - base <- 環境別base <- クラスタ別config - の構成になっている

    - 環境(dev,prodの用途, DCの位置など)の組み合わせ が多い - 単純にクラスタ数が多い
  10. 何にkustomizeを使っているか 25 - base <- 環境別base <- クラスタ別config - の構成になっている

    - 環境(dev,prodの用途, DCの位置など)の組み合わせ が多い - 単純にクラスタ数が多い
  11. merge configMap - base と overlay で設定した値をmergeして configMap を作成 28

    https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/configmapgenerator/
  12. (tips) kustomize build のした結果に表示しない - `config.kubernetes.io/local-config: "true"` という annotation を付けたリソースは

    `kustomize build` の output に表示されない 32 https://github.com/kubernetes-sigs/kustomize/blob/dd520f8889a52ddd592bb4773fe512b9 90fea698/cmd/config/docs/api-conventions/manifest-annotations.md
  13. fill data from cluster info - `components` を利用するとより自在に操作できる - configuration

    logic を再利用可能にする物 - 複数箇所へyamlを操作するロジックを適用できる - これを利用すると string を変えるだけで様々な場所を変更できる 33 https://kubectl.docs.kubernetes.io/guides/config_management/components/
  14. fill data from cluster info - `components` を利用するとより自在に操作できる - configuration

    logic を再利用可能にする物 - 複数箇所へyamlを操作するロジックを適用できる - これを利用すると string を変えるだけで様々な場所を変更できる 34 https://kubectl.docs.kubernetes.io/guides/config_management/components/
  15. fill data from cluster info - `components` を利用するとより自在に操作できる 36 components

    にドメインの一部を置き換える処理を replacements で記載する
  16. fill data from cluster info - `components` を利用するとより自在に操作できる 37 各クラスタの

    kustomization.yamlから components と configMap を参照する (kustomization.yaml の内容は同じ物になる)
  17. fill data from cluster info - `components` を利用するとより自在に操作できる 38 kustomize

    build すると各クラスタの情報が共通のreplacements で埋め込まれる
  18. fill data from cluster info - `components` を利用するとより自在に操作できる 39 kustomize

    build すると各クラスタの情報が共通のreplacements で埋め込まれる
  19. 参考 - demo: https://github.com/koba1t/kustomize-demo - https://github.com/kubernetes-sigs/kustomize - https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv5.0.0 - https://kubectl.docs.kubernetes.io/references/kustomize/cmd/localize/

    - https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/sortoptions/ - https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/replacements/ - - SRENEXT2022 の講演: https://speakerdeck.com/srenext/slowoyong-itatong-he-jian-shi - https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/configmapgenerator/ - local-config : https://github.com/kubernetes-sigs/kustomize/blob/dd520f8889a52ddd592bb4773fe512b990fea698/cmd/config/docs/api-conve ntions/manifest-annotations.md - https://kubectl.docs.kubernetes.io/guides/config_management/components/ - https://speakerdeck.com/koba1t/kustomizefalseamarizhi-rareteinaiga-bian-li-naji-neng-kustomize-edit-create-falseshao-jie 41