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仓库

使用Argocd UI发布Guestbook-小白菜博客
使用Argocd UI发布Guestbook-小白菜博客
使用Argocd UI发布Guestbook-小白菜博客
使用Argocd UI发布Guestbook-小白菜博客
image

2.3 创建Applications

使用Argocd UI发布Guestbook-小白菜博客
使用Argocd UI发布Guestbook-小白菜博客
使用Argocd UI发布Guestbook-小白菜博客
image

2.4 查看应用状态

使用Argocd UI发布Guestbook-小白菜博客
image

2.5 应用同步完成

image

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

2.8 访问guestbook

image