本文介绍如何使用GitOps系统管理应用,包括创建部署单个应用、更新和回滚应用。
创建和部署应用
本文以创建echo-server应用为例,创建应用并将其部署至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
进行访问。
- 执行以下命令,创建echo-server应用。
argocd app create echo-server --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/directory/production --dest-namespace echo-server --dest-server https://47.97.XX.XX:6443 --sync-policy none
预期输出:
application 'echo-server' created
命令行参数解释如下表所示。
参数 |
说明 |
repo |
该应用所引用的Git源仓库地址。 |
path |
echo-server示例应用的YAML编排文件所在的子目录。 |
dest-server |
目标集群APIServer地址。 |
dest-namespace |
目标集群命名空间。 |
sync-policy |
应用的同步策略。默认为none ,可选值为auto 或none 。
auto :表示GitOps系统每隔一段时间就会自动检测Git源仓库中echo-server实例应用的变动并自动将其部署到目标集群。
none :表示需要用户手动执行同步动作将应用部署到目标集群。
|
- 执行以下命令,将echo-server应用同步部署到目标集群。
argocd app sync echo-server
预期输出:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
2022-10-17T16:43:20+08:00 apps Deployment echo-server echo-server OutOfSync Missing
2022-10-17T16:43:20+08:00 Service echo-server echo-server OutOfSync Missing
2022-10-17T16:43:20+08:00 Service echo-server echo-server Synced Progressing
2022-10-17T16:43:20+08:00 Service echo-server echo-server Synced Progressing service/echo-server created
2022-10-17T16:43:20+08:00 apps Deployment echo-server echo-server OutOfSync Missing deployment.apps/echo-server created
2022-10-17T16:43:20+08:00 apps Deployment echo-server echo-server Synced Progressing deployment.apps/echo-server created
Name: echo-server
Project: default
Server: https://47.97.XX.XX:6443
Namespace: echo-server
URL: https://127.0.0.1:65384/applications/echo-server
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 echo-server Synced Progressing service/echo-server created
apps Deployment echo-server echo-server Synced Progressing deployment.apps/echo-server created
查看应用列表
执行以下命令,查看应用列表。
argocd app list
预期输出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
echo-server https://47.97.XX.XX:6443 echo-server default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/production
更新应用
在GitOps应用发布模型下,所有关于应用的变更都需要在Git源仓库中提交,再将变更同步部署至目标集群。
- 在Git源仓库中提交变更内容。
- 执行以下命令,同步部署最新应用到目标集群。
argocd app sync echo-server
- 执行以下命令,访问应用。
curl XX.XX.XX.XX:8080/version #替换XX.XX.XX.XX为应用的IP地址。
预期输出:
"Hello Echo Server v2.0"
回滚应用
- 执行以下命令,查看已有且可用的历史版本。
argocd app history echo-server
预期输出:
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 0
待回滚完成后,继续验证访问应用。
- 执行以下命令,访问应用。
curl XX.XX.XX.XX:8080/version #替换XX.XX.XX.XX为应用的IP地址。
预期输出:
"Hello Echo Server v1.0"