皆さんはKustomizeのimages transformerは使っていますか?kustomization.yamlに書く、こういうやつです:
| |
kustomization.yamlにこのimages:というブロックを書くと、deployment.yamlでimage: old-imageと書かれている部分がimage: new-image:v1.0.0に置き換えられます。これがimages transformerと呼ばれるもので、kustomizeのドキュメントではImageTagTransformer
のところとか、exampleのimages transformer
のところとかに説明が書いてあります。
扨、Kubernetesの大きな強みの一つとして、CustomResourceDefinitionを使用して独自のリソースを作成することができる、というものがあります。世の中にはいろいろなOSS CRDがありますが、今回話題にしたいのはDeploymentなどのようにコンテナイメージを指定するタイプのCustomResourceです。例えば、Argo WorkflowsのWorkflowリソースでは次の様にイメージを指定します:
| |
しかしこの場合、kustomization.yamlでイメージを指定しても、old-imageを置き換えてくれません。
が、置き換えて欲しいですよね?
それ、images transformer configurationを書くことで実現できます。
上書きしたいリソースのkindと、イメージを指定するpathを書いた設定ファイルを用意するだけです。この例の場合、kindはWorkflowで、pathはspec/templates/container/imageです。リストのインデックスとかは書く必要は無いです。設定ファイルは次の様になります:
| |
これを例えば、images_transformer_configuration.yamlに保存したとすると、kustomization.yamlには次の様な記述を追加します:
| |
あとはDeploymentの時と同様にimages:ブロックを記述するだけです。
今回の例の全体としては次の様になります:
kustomization.yaml:
| |
workflow.yaml:
| |
images_transformer_configuration.yaml:
| |
これらを一つのディレクトリに置き、kustomize buildすると次の出力が得られます:
| |
以上です。なお、以上のことはkubernetes-sigs/kustomize/examples/transformerconfigs/images に書いてあります。
