本文介绍如何将应用中心配置的ACR镜像监控配置迁移至ACK One GitOps。
索引
前提条件
已开启多集群管理功能。具体操作,请参见开启多集群管理。
已从ACK One控制台获取主控实例的KubeConfig,并通过kubectl连接至主控实例。
已在主控实例中开启GitOps功能,并通过ArgoCD CLI登录系统。具体操作,请参见在ACK One主控实例中开启GitOps。
已从容器服务管理控制台的应用中心页面获取待迁移的应用中心主控集群,并获取集群的KubeConfig,通过kubectl连接至应用中心主控集群。
步骤一:检查ACR镜像仓库配置和迁移ACR访问凭证
在应用中心主控集群中执行下列命令,查看ACR镜像仓库配置。
kubectl -n appcenter get cm argocd-image-updater-config -oyaml
在ACK One主控实例中执行下列命令,查看ACR镜像仓库配置。
kubectl -n argocd get cm argocd-image-updater-config -oyaml
检查应用中心和主控实例输出结果中
data.registries.conf
的配置是否一致。如不一致,请使用应用中心主控集群中的配置覆盖ACK One主控实例中的配置。在应用中心主控集群中执行以下命令,获取ACR访问凭证。
默认ACR访问凭证的Secret名称为acr,记录此处获取到的ACR访问凭证的用户名和密码,在后续步骤中使用。
kubectl -n argocd get secret acr -o jsonpath='{.data.acr}' | base64 -d
在ACK One主控实例中执行以下命令,在argocd命名空间下创建名为acr的Secret资源。该Secret资源用于配置访问ACR镜像仓库的访问凭证。
请替换以下命令行中
<your_username>
和<your_password>
为步骤4获取的ACR访问凭证的用户名和密码。
kubectl -n argocd apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: acr
type: Opaque
stringData:
# 填写ACR访问凭证的用户名和密码。
acr: <your_username>:<your_password>
EOF
步骤二:迁移Git访问凭证
获取ACR镜像更新后,您需要将镜像更新提交到Git仓库中,因此需要拥有对Git写权限的访问凭证。
如果在迁移应用的Git仓库时,您已配置了用户名和密码或私钥证书,并拥有Git写权限,则可以跳过此步骤。否则,您需要将应用中心的Secret导出迁移至ACK One主控实例中,配置Git访问凭证。
在应用中心主控集群中执行以下命令,导出Secret信息。
kubectl -n appcenter get secret git-creds -oyaml > git-creds.yaml
在应用中心主控集群中执行以下命令,将git-creds.yaml中的命名空间修改为argocd。
sed -i .bak "s/namespace: appcenter/namespace: argocd/g" git-creds.yaml
在ACK One主控实例中,执行以下命令,将Secret迁移至ACK One主控实例。
kubectl apply -f git-creds.yaml
步骤三:更新应用Application
您需要更新应用Application中的Annotation argocd-image-updater.argoproj.io/write-back-method
,更新后示例如下。
metadata:
annotations:
argocd-image-updater.argoproj.io/write-back-method: git:secret:argocd/git-creds