本文介绍如何使用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进行访问。
  1. 执行以下命令,创建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,可选值为autonone
    • auto:表示GitOps系统每隔一段时间就会自动检测Git源仓库中echo-server实例应用的变动并自动将其部署到目标集群。
    • none:表示需要用户手动执行同步动作将应用部署到目标集群。
  2. 执行以下命令,将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源仓库中提交,再将变更同步部署至目标集群。

  1. 在Git源仓库中提交变更内容。
  2. 执行以下命令,同步部署最新应用到目标集群。
    argocd app sync echo-server
  3. 执行以下命令,访问应用。
    curl XX.XX.XX.XX:8080/version    #替换XX.XX.XX.XX为应用的IP地址。

    预期输出:

    "Hello Echo Server v2.0"

回滚应用

  1. 执行以下命令,查看已有且可用的历史版本。
    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)
    当前新版本REVISION56ae547,序列号为1。
  2. 执行以下命令,将应用回滚到REVISION02af62b的历史版本。
    argocd app rollback echo-server 0
    待回滚完成后,继续验证访问应用。
  3. 执行以下命令,访问应用。
    curl XX.XX.XX.XX:8080/version    #替换XX.XX.XX.XX为应用的IP地址。

    预期输出:

    "Hello Echo Server v1.0"