Kustomize運用でyqを使ってImage tagを更新していく方法
※ 追記
Kustomize edit set image
コマンドがあるためyqでやる必要がなかったです...つらみ
$ cd overlays/dev/bases
$ kustomize edit set image XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend-admin:v1.0.0
はじめに
Kustomizeのimages
を使ってtag運用を行っているパターンは多いと思います
tagの更新を手動ではなくCIなどで自動化したいと思った際に出てくるimagesの値をreplaceする手段
をyqで解決していきます
yqのインストール
注意点としてpip
やbrew
でyqを入れちゃうと、今回利用するオプションは使えないのでpip3をおすすめします
$ pip3 install jq
$ pip3 install yq
Kustomizeでimagesを使う
images[1].newTagを更新したい
# 更新前の`kustomization.yaml`
$ cat overlays/dev/bases/kustomization.yaml
namespace: development
bases:
- ../../../bases/backend
patchesStrategicMerge:
- patch-backend.yaml
images:
- name: nginx
newTag: 1.15.2
- name: XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newName: 00000000000X.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newTag: latest
resources:
- namespace.yaml
images[1].newTagをv1.0.0
に更新する
# yqでImage tagの更新
$ yq -y -i '.images |= map(select(.name=="XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend").newTag |= "v1.0.0")' overlays/dev/bases/kustomization.yaml
# 確認
$ cat overlays/dev/bases/kustomization.yaml
namespace: development
bases:
- ../../../bases/backend
patchesStrategicMerge:
- patch-backend.yaml
images:
- name: nginx
newTag: 1.15.2
- name: XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newName: 00000000000X.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newTag: v1.0.0
resources:
- namespace.yaml
# 更新前の`kustomization.yaml`
$ cat overlays/dev/bases/kustomization.yaml
namespace: development
bases:
- ../../../bases/backend
patchesStrategicMerge:
- patch-backend.yaml
images:
- name: nginx
newTag: 1.15.2
- name: XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newName: 00000000000X.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newTag: latest
resources:
- namespace.yaml
v1.0.0
に更新する# yqでImage tagの更新
$ yq -y -i '.images |= map(select(.name=="XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend").newTag |= "v1.0.0")' overlays/dev/bases/kustomization.yaml
# 確認
$ cat overlays/dev/bases/kustomization.yaml
namespace: development
bases:
- ../../../bases/backend
patchesStrategicMerge:
- patch-backend.yaml
images:
- name: nginx
newTag: 1.15.2
- name: XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newName: 00000000000X.dkr.ecr.ap-northeast-1.amazonaws.com/backend
newTag: v1.0.0
resources:
- namespace.yaml
うまくできてます
注意点としてはkustomization.yamlのコードに空白行は挟めない(yqが取り除いてしまうので)という制約ができる点です
まとめ
このようにyqを使うとワンライナーでtagを更新できました
これに加えてVersioningの自動化、CIからPRを自動的に発行などをするとGitopsのマニフェスト運用周りが大分綺麗になりそうですね〜(絶賛取組中)ここらへんも随時自分かチームの人で情報出せてけたらなーと思います
Author And Source
この問題について(Kustomize運用でyqを使ってImage tagを更新していく方法), 我々は、より多くの情報をここで見つけました https://qiita.com/mfykmn/items/d6b62c25691a4ca29aba著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .