本文介绍如何使用GitOps系统管理应用,包括创建部署单个应用、更新和回滚应用。
前提条件
已登录GitOps系统。具体操作,请参见登录GitOps系统。
已添加Git源仓库。具体操作,请参见添加仓库。
舰队的Fleet实例已添加2个关联集群(服务提供者集群、服务消费者集群)。具体操作,请参见添加关联集群。
创建和部署应用
本文以创建echo-server-demo应用为例,创建应用并将其部署至ACK集群,该集群的APIServer地址为https://47.97.XX.XX:6443
。
若由于网络原因导致您无法访问GitHub,您也可以将https://github.com/AliyunContainerService/gitops-demo.git
替换为https://code.aliyun.com/shuwei.hsw/gitops-demo.git
进行访问。
通过ArgoCD控制台创建和部署
登录ArgoCD UI,具体操作,请参见通过ArgoCD UI方式登录。
在ArgoCD UI左侧导航栏选择Applications,然后单击+ NEW APP。
在弹出的面板配置以下信息,然后单击CREATE进行创建。
区域
参数
参数值
GENERAL
Application Name
echo-server-demo
Project Name
default
SYNC POLICY
在下拉列表中选择Automatic。
参数取值如下:
Manual:当Git端有变更时,需要用户手动执行同步动作将其部署至目标集群。
Automatic:ArgoCD Server每隔3分钟自动检测Git端的变更并将其自动部署至目标集群。
SYNC OPTIONS
勾选AUTO-CREATE NAMESPACE。
SOURCE
Repository URL
在下拉列表选择已有Git Repo,此处选择https://github.com/AliyunContainerService/gitops-demo.git。
Revision
HEAD
Path
manifests/helm/echo-server
DESTINATION
Cluster URL/Cluster Name
在下拉列表中选择目标集群。
Namespace
echo-server-demo
HELM
VALUES FILES
values.yaml
创建完成后,在Application页面,即可看到echo-server-demo的应用状态。
如果SYNC POLICY选择的是Manual方式,需要手动点击SYNC,将应用同步部署至目标集群。应用的Status为Healthy和Synced,表示已经成功同步。
通过ArgoCD CLI创建和部署
执行以下命令,创建echo-server-demo应用。
argocd app create echo-server-demo --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/directory/production --dest-namespace echo-server-demo --dest-server https://47.97.XX.XX:6443 --sync-policy none
预期输出:
application 'echo-server-demo' created
命令行参数解释如下表所示。
参数
说明
repo
该应用所引用的Git源仓库地址。
path
echo-server-demo示例应用的YAML编排文件所在的子目录。
dest-server
目标集群APIServer地址。
dest-namespace
目标集群命名空间。
sync-policy
应用的同步策略。默认为
none
,可选值为auto
或none
。auto
:表示GitOps系统每隔一段时间就会自动检测Git源仓库中echo-server实例应用的变动并自动将其部署到目标集群。none
:表示需要用户手动执行同步动作将应用部署到目标集群。
执行以下命令,将echo-server-demo应用同步部署到目标集群。
argocd app sync echo-server-demo
预期输出:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing service/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing deployment.apps/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server Synced Progressing deployment.apps/echo-server-demo created Name: echo-server-demo Project: default Server: https://47.97.XX.XX:6443 Namespace: echo-server-demo URL: https://127.0.0.1:65384/applications/echo-server-demo Repo: https://github.com/AliyunContainerService/gitops-demo.git Target: Path: manifests/directory/production SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (02af62b) Health Status: Progressing Operation: Sync Sync Revision: 02af62bf21e76f53ebfcc282c45865d2308c**** Phase: Succeeded Start: 2022-10-17 16:43:19 +0800 CST Finished: 2022-10-17 16:43:20 +0800 CST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service echo-server-demo echo-server-demo Synced Progressing service/echo-server-demo created apps Deployment echo-server-demo echo-server-demo Synced Progressing deployment.apps/echo-server-demo created
查看应用列表
通过ArgoCD控制台查看
在ArgoCD UI左侧导航栏选择Applications,即可查看应用列表。
单击echo-server-demo应用名称,即可查看应用详情,展示应用相关的Kubernetes资源的拓扑结构及相应状态。
通过ArgoCD CLI查看
执行以下命令,查看应用列表。
argocd app list
预期输出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
echo-server https://47.97.XX.XX:6443 echo-server-demo default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/production
更新应用
在GitOps应用发布模型下,所有关于应用的变更都需要在Git源仓库中提交,再将变更同步部署至目标集群。
在Git源仓库中提交变更内容。
执行以下命令,同步部署最新应用到目标集群。
argocd app sync echo-server-demo
执行以下命令,访问应用。
curl XX.XX.XX.XX:8080/version #替换XX.XX.XX.XX为应用的IP地址。
预期输出:
"Hello Echo Server v2.0"
回滚应用
通过ArgoCD控制台回滚
在ArgoCD UI左侧导航栏选择Applications,在应用列表中找到echo-server-demo应用并单击应用名称。
在应用详情页面单击HISTORY AND ROLLBACK,在弹出的应用历史版本中,选择要回滚到的目标版本,单击右上角弹出的Rollback。
等待回滚完成后,回到应用详情页面验证应用版本。
通过ArgoCD CLI回滚
执行以下命令,查看已有且可用的历史版本。
argocd app history echo-server-demo
预期输出:
ID DATE REVISION 0 2022-10-17 16:43:20 +0800 CST (02af62b) 1 2022-10-17 16:52:49 +0800 CST (56ae547)
当前新版本
REVISION
为56ae547
,序列号为1。执行以下命令,将应用回滚到
REVISION
为02af62b
的历史版本。argocd app rollback echo-server-demo 0
待回滚完成后,继续验证访问应用。
执行以下命令,访问应用。
curl XX.XX.XX.XX:8080/version #替换XX.XX.XX.XX为应用的IP地址。
预期输出:
"Hello Echo Server v1.0"