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

Recap: Customizing Kustomize with Client-Side Custom Resources

066d44ac54522688a0721bd740f73445?s=47 yugo kobayashi
October 27, 2021
92

Recap: Customizing Kustomize with Client-Side Custom Resources

066d44ac54522688a0721bd740f73445?s=128

yugo kobayashi

October 27, 2021
Tweet

Transcript

  1. Recap: Customizing Kustomize with Client-Side Custom Resources koba1t Kubernetes Meetup

    Tokyo #46
  2. 自己紹介 name: 小林優吾 github: koba1t twitter: 0x6b6f62 所属: ヤフー株式会社 2

  3. 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf 3

  4. Kustomize とは kubernetes のリソース設定をカスタマイズするためのcliツール yaml で設定でき 特定の値にpatchを当てることや、configMapなどのリソースのgenerateができる https://kubectl.docs.kubernetes.io/guides/introduction/kustomize/ https://github.com/kubernetes-sigs/kustomize 4

  5. 5 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf

  6. Custom Resource とは kubernetes で buildin ではない新しく定義したリソース 6 https://kubernetes.io/ja/docs/concepts/extend-kubernetes/api-extension/custom-resources/

  7. Custom Resource とは kubernetes で buildin ではない新しく定義したリソース - cert-manager -

    knative - 各種Operator 7 https://kubernetes.io/ja/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  8. Custom Resource とは kubernetes で buildin ではない新しく定義したリソース - cert-manager -

    knative - 各種Operator 8 https://kubernetes.io/ja/docs/concepts/extend-kubernetes/api-extension/custom-resources/ https://kubernetes.io/ja/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  9. Custom Resource とは kubernetes で buildin ではない新しく定義したリソース - cert-manager -

    knative - 各種Operator 9 https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/example-app/prometheus-frontend.yaml
  10. kustomizeの拡張機能 自作のリソースのジェネレータやトランスフォーマーをkustomizeで適用できる - generator > 任意のリソースを生成する(configMapGeneratorなど) - transformer > 各リソースに共通の値を入れる(共通のNamespaceやlabelの設定など)

    10 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/
  11. kustomizeの拡張機能 自作のリソースのジェネレータやトランスフォーマーをkustomizeで適用できる - generator > 任意のリソースを生成する(configMapGeneratorなど) - transformer > 各リソースに共通の値を入れる(共通のNamespaceやlabelの設定など)

    kustomizeが内部的に使用しているリソース処理のレイヤー 11 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/
  12. 12 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf

  13. kustomizeの拡張機能 自作のリソースのジェネレータやトランスフォーマーをkustomizeで適用できる - generator > 任意のリソースを生成する(configMapGeneratorなど) - transformer > 各リソースに共通の値を入れる(共通のNamespaceやlabelの設定など)

    kustomizeが内部的に使用しているリソース処理のレイヤー これらの機能を持つコードを書くことで、任意の処理を kustomize で適用できる 13 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/
  14. Example 14 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/

  15. 15 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf

  16. 16 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf

  17. 17 引用元: https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey%3ARegan.pdf

  18. [Demo] https://github.com/koba1t/krm-fn-app 18

  19. kustomizeの拡張機能で処理を行うメリット - クラスタへの変更無しに使うことができる - 例えばNamespaceごとにapplication developerに払い出している場合などに便利 - WebhookConfiguration や CRD

    などの cluster-wide なリソースを使わなくて良い - 利用者側が主導の運用の効率化ができる 19
  20. kustomizeの拡張機能で処理を行うメリット - 開発が簡単 - k8sクラスタ無しでpluginの適用が実行できる - pluginのversionをマニフェスト適用の段階で決められる - `kustomize build`

    で適用できるので既存のCI/CDフローに入れやすい - containerだと docker pull で imageを取って来てくれるので、 yamlを変更するだけで使える - yaml定義で完結する 20
  21. kustomizeの拡張機能で処理を行うデメリット - クラスタの状態を見て動作を変える(Operatorのような)ことができない - Admission Webhook のように強制的に適用させることができない - (Container functions

    の場合は) CI/CD 環境で docker が実行できる必要がある 21
  22. 参考 - https://kubectl.docs.kubernetes.io/guides/extending_kustomize/containerized_krm_functions/ - kustomizeの拡張 (Containerized KRM Functions) のドキュメント -

    (私が見た時は) transformers の内容が微妙に間違っていたので https://github.com/kubernetes-sigs/kustomize/blob/kustomize/v4.4.0/hack/krmFunctionBenchm ark/example_tshirt/containerfn/transf.yaml も参考に - https://pkg.go.dev/sigs.k8s.io/kustomize/kyaml@v0.12.0/fn/framework - https://static.sched.com/hosted_files/kccncna2021/da/Customizing%20Kustomize%20-%20Verey% 3ARegan.pdf - kubeconの発表資料 - https://github.com/koba1t/krm-fn-app - demoのrepo 22