阅读提示|本文大概2000字 阅读需要30分钟
什么是Argo CD?
Argo CD是一个为Kubernetes而生的、遵循声明式GitOps理念的持续部署工具,其优势为:
1、应用定义、配置和环境信息是声明式的,并且可以进行版本控制;
2、应用部署和生命周期管理是全自动化的,是可审计的,清晰易懂;
3、Argo CD是一个独立的部署工具,支持对多个环境、多个Kubernetes集群上的应用进行统一部署和管理。
Argo CD源自哪里?
Argo CD是由Intuit主导的开源项目,是Argo项目集合中的一个,Argo项目集合还包括Argo Workflow、Argo Rollout、Argo Event等项目。4月8日,CNCF技术监督委员会(Technical Oversight Committee,TOC)投票决定接受Argo作为孵化级别的托管项目。
Argo CD与其他CD工具(例如Spinnaker、Tekton、Jenkins X)等的具体对比请参下图:
查看argocd中定义的K8S集群:
#argocd cluster list
在将应用程序配置到Argo CD之前,我们需要配置Git存储库,该存储库包含用于部署应用程序的清单将存储库添加到Argo CD:
argocd repo add http://gogs.2886795312-80-host04nc.environments.katacoda.com/student/gitops-lab.git
验证存储库已加载到Argo CD中:
argocd repo list
在Argo CD中定义应用程序
Git存储库已经定义好了,现在该继续在Argo CD上配置应用程序。
使用先前定义的git仓库创建应用程序:
argocd app create --project default --name reverse-words-app \ --repo http://gogs.2886795312-80-host04nc.environments.katacoda.com/student/gitops-lab.git \ --path simple-app/reversewords_app/ \ --dest-server https://kubernetes.default.svc \ --dest-namespace reverse-words \ --revision master --sync-policy automated
--project将在其中创建应用程序的Argo CD项目
--name Argo CD应用程序名称
--repo使用Argo CD定义的Git存储库,它将用作代码来源
--path Git存储库中存储应用程序清单的路径
--dest-server Kubernetes部署应用的目标K8S集群
--dest-namespace部署应用的K8S集群中的目标namespaces
--revision用于获取应用程序源的Git branch/reference
--sync-policy如果自动Argo CD将执行定期检查以确保Kubernetes中的应用程序状态与Git中的应用程序定义匹配
列出新定义的应用程序:
argocd app list
等待Argo CD将应用程序报告为“Healthy”,
argocd app get reverse-words-app
验证应用程序正在运行,应用程序包括:
A namespace
A Deployment
A Service
curl应用,验证效果(将输入的字符串反过来显示):
curl -X POST http://$(oc -n reverse-words get route reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
接下来,我们删除应用的deployment,并观察Argo CD是否可以重新创建deployment。
oc -n reverse-words delete deployment reverse-words
强制进行同步应用(由于同步策略设置为“Automated”,因此Argo CD可能已经同步了该应用程序):
argocd app sync reverse-words-app
上图中的报错,是由我们运行oc Exposure命令时创建的OpenShift Route引起的,因为它没有存储在Git存储库中。如果启用了 auto-pruning 功能,则该路由将被删除。
该错误说明了将所有Kubernetes对象保留在Git中的重要性,以确保没有配置漂移。验证同步完成后是否创建了deployment:
在之前的实验中,我们已经看到Argo CD如何检测到由oc Exposure命令创建的OpenShift Route在Git存储库中不可用,我们将通过将路由定义添加到Git存储库来解决此问题。
探索OpenShift Route定义文件:
将route.yaml添加到git存储库:
cp ~/route.yaml ~/gitops-lab/simple-app/reversewords_app/
提交新更改并将其推送到Git remote
cd ~/gitops-lab/ git add simple-app/reversewords_app/route.yaml git commit -m "Added application route definition" git push origin master
我们清除现有的实验环境(部署的项目和应用)。在接下来的步骤中,通过UI部署应用。
在Argo UI中部署应用
登录ArgoCD UI:
连接到repo:
连接成功:
在Argo CD WebUI中定义应用程序,输入参数如下:
查看创建好的应用:
如果单击该应用程序,将进入详细视图:
验证是否在集群中创建了不同的对象(尤其关注自动创建了路由),并通过curl验证应用。
我们进一步查看应用对应的资源:
可以对应用做多种操作:
参考文档:
https://www.kubernetes.org.cn/7336.html
本文分享自微信公众号 - 大魏分享(david-share)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4567873/blog/4400102