LoginSignup
3
1

More than 3 years have passed since last update.

Kustomize運用でyqを使ってImage tagを更新していく方法

Last updated at Posted at 2020-03-05

※ 追記
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のインストール

注意点としてpipbrewで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

うまくできてます:tada:
注意点としてはkustomization.yamlのコードに空白行は挟めない(yqが取り除いてしまうので)という制約ができる点です

まとめ

このようにyqを使うとワンライナーでtagを更新できました
これに加えてVersioningの自動化、CIからPRを自動的に発行などをするとGitopsのマニフェスト運用周りが大分綺麗になりそうですね〜(絶賛取組中)ここらへんも随時自分かチームの人で情報出せてけたらなーと思います

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1