1. ArgoCD核心概念
- Application:应用,一组由资源清单定义的 Kubernetes资源,这是一个 CRD资源对象
- Application source type:用来构建应用的工具
- Target state:目标状态,指应用程序所需的期望状态,由Git存储库中的文件表示
- Live state:实时状态,指应用程序实时的状态,比如部署了哪些 Pods等真实状态
- Sync status:同步状态表示实时状态是否与目标状态一致,部署的应用是否与Git所描述的一样?
- Sync:同步指将应用程序迁移到其目标状态的过程,比如通过对Kubernetes集群应用变更
- Sync operation status:同步操作状态指的是同步是否成功
- Refresh:刷新是指将Git中的最新代码与实时状态进行比较,弄清楚有什么不同
- Health:应用程序的健康状况,它是否正常运行?能否为请求提供服务?
- Tool:工具指从文件目录创建清单的工具,例如Kustomize或Ksonnet 等
- Configuration management tool:配置管理工具
- Configuration management plugin:配置管理插件
Argocd官方示例的一个小应用: https://github.com/argoproj/argocd-example-apps.git
2. 部署应用
在部署这个应用之前,你需要一个kubernetes集群和部署了Argocd组件。
2.1 检查Argocd各组件是否正常
# kubectl get po -n argocd
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 10 (22h ago) 31d
argocd-applicationset-controller-fb8d96cb5-kvfc2 1/1 Running 11 (22h ago) 31d
argocd-dex-server-69f8bb9b-l78dc 1/1 Running 4 (22h ago) 13d
argocd-notifications-controller-85fdd8f7d9-nxj2t 1/1 Running 10 (22h ago) 31d
argocd-redis-6d67ff987b-bz29z 1/1 Running 4 (22h ago) 13d
argocd-repo-server-67566f5fb4-hl5h6 1/1 Running 4 (22h ago) 13d
argocd-server-58dd4685bc-qssbs 1/1 Running 13 (22h ago) 31d
2.2 在UI界面添加Git仓库
2.3 创建Applications
2.4 查看应用状态
2.5 应用同步完成
2.6 使用命令行查看
应用默认是clusterip使用nodeport访问
# kubectl get po,svc -n guestbook
NAME READY STATUS RESTARTS AGE
pod/kustomize-guestbook-ui-779bc8b498-kpmnl 1/1 Running 0 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kustomize-guestbook-ui ClusterIP xxxxxxxx <none> 80/TCP 10m
2.7 修改为NodePort
# kubectl edit svc kustomize-guestbook-ui -n guestbook
service/kustomize-guestbook-ui edited
# kubectl get svc -n guestbook
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kustomize-guestbook-ui NodePort xxxxxxxx <none> 80:31179/TCP 13m