Image Updater@ArgoCD¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Application¶
.metadata.annotations¶
▼ argocd-image-updater.argoproj.io¶
ArgoCD Image Updaterを設定する。
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: foo-application
namespace: argocd
annotations:
argocd-image-updater.argoproj.io/image-list: foo-image=<AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com/<イメージリポジトリ名>
# 変更対象のファイルの相対パスを設定する
# .spec.source.pathキーを基準とする
argocd-image-updater.argoproj.io/write-back-target: "helmvalues:values.yaml"
# コンテナイメージのタグ名をフィルタリングする
argocd-image-updater.argoproj.io/foo-image.allow-tags: regexp:^v[0-9]+\.[0-9]+\.[0-9]+$
# YAMLファイルのコンテナイメージ名のパスを設定する
argocd-image-updater.argoproj.io/foo-image.helm.image-name: image.repository
# YAMLファイルのタグ名のパスを設定する
argocd-image-updater.argoproj.io/foo-image.helm.image-tag: image.tag
argocd-image-updater.argoproj.io/write-back-method: git
argocd-image-updater.argoproj.io/git.branch: main
argocd-image-updater.argoproj.io/git.commit-message: "イメージのタグを {{ .tag }} に更新しました"
spec: ...
02. ConfigMap¶
argocd-cm¶
▼ accounts.image-updater¶
argocd-cm (ConfigMap) で、ArgoCDのAPIユーザーを作成する必要がある。
apiVersion: v1
kind: ConfigMap
metadata:
namespace: argocd
name: argocd-cm
labels:
app.kubernetes.io/part-of: argocd
data:
accounts.image-updater: apiKey
argocd-image-updater-cm¶
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-image-updater-cm
namespace: argocd
data:
argocd.grpcWeb: "true"
registries.conf: |
registries:
- name: foo-image
api_url: https://<AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com
prefix: <AWSアカウントID>.dkr.ecr.ap-northeast-1.amazonaws.com
credentials: ext:/scripts/ecr-login.sh
ping: yes
credsexpire: 10h
argocd-image-updater-auth-scripts¶
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-image-updater-auth-scripts
namespace: argocd
data:
scripts:
# readOnlyRootFilesystem=true としているため、 HOME を /tmp に変更する
ecr-login.sh: |
#!/bin/sh
HOME=/tmp \
aws ecr get-authorization-token --region ap-northeast-1 --output text --query 'authorizationData[].authorizationToken' | base64 -d
argocd-rbac-cm¶
▼ policy.csv¶
argocd-rbac-cm (ConfigMap) で、APIユーザーに認可スコープを設定する必要がある。
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-rbac-cm
namespace: argocd
data:
policy.default: role:readonly
policy.csv: |
# ロールと認可スコープを定義する
p, role:image-updater, applications, get, */*, allow
p, role:image-updater, applications, update, */*, allow
g, image-updater, role:image-updater
03. Secret¶
argocd-image-updater-token¶
▼ argocd.token¶
image-updaterユーザーのAPIキーを設定する。
暗号化ツール (例:SOPS) を使用して管理するとよい。
apiVersion: v1
kind: Secret
metadata:
name: argocd-image-updater-token
type: Opaque
data:
argocd.token: *****