Jenkins和Github Actions等CI/CD工具,在进行容器部署时,一般都是通过调用kubectl来进行的,比较简单。但是对于生产系统来说,系统运行的连续性很重要,容器镜像的新老版本升级需要有一个过渡,慢慢来。

于是,作为专用的持续部署工具,argo CD就出现了。argo CD的原理是把容器的运行时和镜像进行定时比对,一旦发现有新的镜像,就自动升级。它支持蓝绿、金丝雀等多种部署方式,并支持回滚操作,可以比较好地保证容器升级部署的稳定性和连续性。

操作系统Debian 12 ,Kubernetes 1.28.4, argo CD 2.10.8

一、前期工作

请先按照文章《Github Action CI/CD工具在裸金属Kubernetes集群的应用》,完成Github Action的安装和部署。

在action-runner-poc目录下,新建目录appdep,把deployment.yaml和service.yaml复制到appdep目录下面。

在action-runner-poc目录下,运行下列命令,同步到github。

git add -A
git commit -m "new commit"
git push origin main

二、安装argo CD

在Kubernetes集群的master主机上,运行下列命令,安装argo CD容器。

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.10.8/manifests/ha/install.yaml

运行下列命令,安装命令行

curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64

运行下列命令,对外开放argo CD的service

kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'

运行命令

kubectl get svc argocd-server

可以看到argo CD的外部IP地址。

运行命令

argocd admin initial-password -n argocd

得到argo CD管理员admin的密码。

运行

argocd login <ARGOCD_SERVER>

登录到arocd , 输入用户名admin和密码 。<ARGOCD_SERVER>就是argo CD的外部IP地址。

运行

argocd account update-password

可以修改管理员密码。

三、设置和使用

运行

kubectl config set-context --current --namespace=argocd

argocd app create appdep --repo https://github.com/<github-username>/action-runner-poc.git --path appdep --dest-server https://kubernetes.default.svc --dest-namespace default

argocd app set appdep --sync-policy automated

其中<github-username>是你在github上的用户名,按照实际情况修改。appdep是argocd的应用名称,自己可以取名。

默认情况下,每隔三分钟检查一次镜像库,发现变动后自动升级。

运行

argocd app sync appdep

可以手动进行镜像同步。

运行

argocd app get appdep

可以看到镜像是否同步,以及目前运行的镜像tag。

四、测试

在action-runner-poc目录下,运行下列命令

echo "# test " >> README.md
git add -A
git commit -m "new commit"
git push origin main

github action会自动运行,构建和推送新的镜像。

运行

argocd app get appdep

可以看到同步状态变成了outofsync,等上几分钟,再运行上述命令,会变成sync,镜像tag也变成了最新的,说明argo CD的镜像自动部署功能已经生效。

参考

https://argo-cd.readthedocs.io/en/stable/getting_started

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注