皆さんは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 に書いてあります。