Slide 1

Slide 1 text

Recap: Customizing Kustomize with Client-Side Custom Resources koba1t Kubernetes Meetup Tokyo #46

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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/

Slide 9

Slide 9 text

Custom Resource とは kubernetes で buildin ではない新しく定義したリソース - cert-manager - knative - 各種Operator 9 https://github.com/prometheus-operator/kube-prometheus/blob/main/examples/example-app/prometheus-frontend.yaml

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

kustomizeの拡張機能 自作のリソースのジェネレータやトランスフォーマーをkustomizeで適用できる - generator > 任意のリソースを生成する(configMapGeneratorなど) - transformer > 各リソースに共通の値を入れる(共通のNamespaceやlabelの設定など) kustomizeが内部的に使用しているリソース処理のレイヤー これらの機能を持つコードを書くことで、任意の処理を kustomize で適用できる 13 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/

Slide 14

Slide 14 text

Example 14 https://kubectl.docs.kubernetes.io/guides/extending_kustomize/

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

kustomizeの拡張機能で処理を行うメリット - クラスタへの変更無しに使うことができる - 例えばNamespaceごとにapplication developerに払い出している場合などに便利 - WebhookConfiguration や CRD などの cluster-wide なリソースを使わなくて良い - 利用者側が主導の運用の効率化ができる 19

Slide 20

Slide 20 text

kustomizeの拡張機能で処理を行うメリット - 開発が簡単 - k8sクラスタ無しでpluginの適用が実行できる - pluginのversionをマニフェスト適用の段階で決められる - `kustomize build` で適用できるので既存のCI/CDフローに入れやすい - containerだと docker pull で imageを取って来てくれるので、 yamlを変更するだけで使える - yaml定義で完結する 20

Slide 21

Slide 21 text

kustomizeの拡張機能で処理を行うデメリット - クラスタの状態を見て動作を変える(Operatorのような)ことができない - Admission Webhook のように強制的に適用させることができない - (Container functions の場合は) CI/CD 環境で docker が実行できる必要がある 21

Slide 22

Slide 22 text

参考 - 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/[email protected]/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