ArgoCD Image UpdaterによるImageOpsの構築

ArgoCD Image Updater について

Kubernetes 環境で GitOps として使用される ArgoCD

Git リポジトリで管理されているマニフェスト(Helm chart など)の状態を監視してデプロイを行ってくれるのですが、コンテナのイメージまでは監視しません。

そこで役立つのが ArgoCD Image Updater です。

ArgoCD Image Updater は ArgoCD によって管理されている Kubernetes ワークロードのコンテナイメージを自動的に更新するツールです。

こちらを使用することにより、コンテナイメージの version 更新を自動化することができます。

ArgoCD Image Updater の設定

既に ArgoCD の設定を済ませていることを前提に進めます。ArgoCD の導入については過去の記事を参照。

また、ArgoCD 側の GitHub 連携も済ませるようにしてください。

ArgoCD Image Updater公式のインストール manifest を適用します。

そうすると ArgoCD Image Updater 関連の Pod が生成されるので、確認します。

無事確認ができたら、argocd の yml に anntations に設定を追加します。

# 例
  annotations:
    argocd-image-updater.argoproj.io/image-list: username/image_name
    argocd-image-updater.argoproj.io/write-back-method: git
    argocd-image-updater.argoproj.io/write-back-target: kustomization
    argocd-image-updater.argoproj.io/git-branch: :image-updater-test

上記が完了したら、下記コマンドから Image upadte cycle の状況、status を確認してみましょう。

kubectl -n argocd logs --selector app.kubernetes.io/name=argocd-image-updater

実際にはこんな感じのログが出るかと思います。

level=info msg="Starting image update cycle, considering 1 annotated application(s) for update"
level=info msg="Processing results: applications=1 images_considered=0 images_skipped=0 images_updated=0 errors=0"

これで設定は完了です。あとは良しなに docker push してあげれば ArgoCD Image Updater が認識してくれて自動でイメージアップデートを行ってくれます。

詰まったこと

ArgoCD Image Updater は ArgoCD の version が 2.x.x じゃないと上手く動かないようなので、2.x.x 以上にする。

log status が images_skipped の場合、annotations の記載に誤りがあると起きたりするのでタイポやミスがないか確認する。