本文介绍如何将应用中心使用Git仓库作为部署源创建的应用迁移至ACK One GitOps。
索引
前提条件
已开启多集群管理功能。具体操作,请参见开启多集群管理。
已从ACK One控制台获取主控实例的KubeConfig,并通过kubectl连接至主控实例。
已在主控实例中开启GitOps功能,并通过ArgoCD CLI登录系统。具体操作,请参见在ACK One主控实例中开启GitOps。
已从容器服务管理控制台的应用中心页面获取待迁移的应用中心主控集群,并获取集群的KubeConfig,通过kubectl连接至应用中心主控集群。
步骤一:通过ArgoCD CLI访问应用中心主控集群
在应用中心主控集群中执行以下命令,导入环境变量。
export ARGOCD_OPTS='--port-forward-namespace appcenter --plaintext'
在应用中心主控集群中执行以下命令,查看应用列表。
argocd app list
预期输出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET gitops-demo https://192.168.0.244:6443 default Synced Healthy <none> <none> git@github.com:haoshuwei/gitops-demo-private.git helm main
预期输出表明,获取到的需要迁移的应用名称为
gitops-demo
,使用的Repo为git@github.com:haoshuwei/gitops-demo-private.git
,应用部署在目标集群https://192.168.0.244:6443
中。
步骤二:导出应用Manifest
在应用中心主控集群中执行以下命令,导出应用Application CR Manifests。
kubectl -n appcenter get application gitops-demo -oyaml > gitops-demo.yaml
步骤三:查看ACK One GitOps集群列表
在ACK One主控实例中执行以下命令,查看关联集群信息。
argocd cluster list
预期输出:
SERVER NAME VERSION STATUS MESSAGE PROJECT
https://<apiserver>:6443 <clusterid>-ack-cluster 1.24+ Successful
https://kubernetes.default.svc in-cluster Unknown Cluster has no applications and is not being monitored.
预期输出中,https://kubernetes.default.svc
集群为主控实例自身的API Server,其他的Server地址为ACK One主控实例已关联的集群的API Server。为了更高的安全性,ACK One主控实例优先使用集群的内网地址关联集群,应用中心使用公网地址,因此同一个集群在ACK One主控实例和应用中心的API Server地址可能不同。
步骤四:导入应用Manifest至ACK One主控实例
修改步骤二:导出应用Manifest中导出的gitops-demo.yaml文件。
确定应用下发的目标集群,确认gitops-demo.yaml中的目标集群
{.spec.destination.server}
的Server地址与步骤三查看ACK One主控实例中列出的目标集群的Server地址是否一致。若不一致,则执行以下Shell命令进行修改。sed -i "s/192.168.0.244/<请替换为ACK One实例中集群server ip地址>/g" gitops-demo.yaml
执行以下Shell命令,修改gitops-demo.yaml中的Namespace为argocd。
sed -i "s/namespace: appcenter/namespace: argocd/g" gitops-demo.yaml
导入Application Manifests至ACK One主控实例。
在ACK One主控实例中执行以下命令,导入gitops-demo.yaml。
kubectl apply -f gitops-demo.yaml
在ACK One主控实例中执行以下命令,查看Application列表,并确认此处应用的状态与应用中心的状态一致。
argocd app list
预期输出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET gitops-demo https://<apiserver>:6443 gitops default Synced Healthy <none> <none> git@github.com:haoshuwei/gitops-demo-private.git helm main
步骤五:从应用中心移除应用
在应用中心主控集群中执行以下命令,移除应用中心的应用。
以下命令行中,必须使用参数--cascade=false
,否则在移除应用时,实际运行在目标集群中的K8s资源会随之被移除。
argocd app delete gitops-demo --cascade=false