全部產品
Search
文件中心

Container Service for Kubernetes:使用ACK One GitOps部署應用

更新時間:May 07, 2025

ACK One GitOps託管並完全相容ArgoCD相關能力,支援持續迭代,可通過使用Git部署模板代替模板化分發能力。本文介紹如何通過ACK One GitOps控制台或CLI的方式部署應用。

前提條件

通過ACK One GitOps部署應用

開啟ACK One GitOps後,您可以通過ACK One GitOps(ArgoCD)控制台和ArgoCD CLI兩種方式部署管理應用。

通過ACK One GitOps(ArgoCD)控制台部署應用

步驟一:在ArgoCD控制台添加Git Repo並同步至目的地組群

  1. 在瀏覽器中輸入已擷取到的ArgoCD Server網域名稱,訪問ArgoCD控制台。關於如何擷取網域名稱,請參見登入GitOps系統

  2. 在ArgoCD首頁,單擊LOGIN VIA ALIYUN,登入ArgoCD控制台。

  3. 添加發布源Git Repo。

    1. 在左側導覽列,選擇Settings > Repositories,然後單擊+ CONNECT REPO

    2. 在彈出面板中配置如下資訊,然後單擊CONNECT添加Git repo.png

      添加成功後,該頁面會顯示Git的CONNECTION STATUSSuccessfulsuccess.png

  4. 建立ArgoCD Application,並發布應用到目的地組群。

    1. Applications頁面,單擊+ NEW APP,配置如下資訊。 Application將拉取Git Repo中的Helm Chart並部署到目的地組群的default命名空間。添加應用.png

    2. 配置完成,單擊頁面上方的CREATE

      建立完成後,在ArgoCD的Applications頁面,即可查看echo-server-app的應用狀態。查看狀態.png

    3. 單擊目標應用下方的SYNC,將應用同步部署至目的地組群。

    4. 同步完成後,echo-server-app 應用的Status右側出現HealthySynced,表示應用已同步。單擊echo-server,即可查看該應用詳情,ArgoCD將展示應用相關Kubernetes資源的拓撲結構及相應的狀態。同步.png

步驟二:查看應用的實際部署情況

串連Fleet執行個體的KubeConfig,在Fleet執行個體中執行命令查看應用的實際部署情況。

  1. 執行以下命令,查看Fleet執行個體已關聯的關聯集群。

    kubectl amc get managedcluster

    預期輸出:

    Name         Alias             HubAccepted
    cd****      ackpro-cluster2      true
    ce****      ackpro-cluster1      true    // GitOps部署的目的地組群。
  2. 執行以下命令,通過amc -m參數指定叢集,查看default命令空間下的Deployment、Service和Pod資源。

    kubectl amc get all -n default -m ce****

    預期輸出:

    Run on ManagedCluster ce**** (ackpro-cluster1)
    NAME                               READY   STATUS    RESTARTS   AGE
    pod/echo-server-5cf54bdbcb-jv58k   1/1     Running   0          59m
    
    NAME                  TYPE           CLUSTER-IP        EXTERNAL-IP    PORT(S)          AGE
    service/echo-server   LoadBalancer   192.XX.XX.XX      39.XX.XX.XX   8080:31769/TCP   59m        21d
    
    NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/echo-server   1/1     1            1           59m
  3. 執行以下命令,訪問Loadbalancer Service的External-IP,驗證應用執行情況。

    curl http://39.XX.XX.XX:8080/version

    預期輸出:

    "Hello Echo Server v1.0"

    預期輸出表明,當前應用版本為v1.0。

步驟三:升級應用版本

  1. 將Git中的Image Tag版本v1.0修改為v2.0修改tag.png

    由於Git Repo發生變化,ArgoCD Application會顯示OutOfSync

  2. 單擊黃色的OutOfSync表徵圖,可以查看詳細的區別。

    更新並同步.png

    區別如下圖所示。查看區別.png

  3. 單擊SYNC,發起同步,同步完成後,Pod Image Tag變成v2.0,與預期一致。確認版本.png

  4. 執行以下命令,訪問Service,查看實際版本。

    curl http://39.XX.XX.XX:8080/version

    預期輸出:

    "Hello Echo Server v2.0"

    預期輸出表明,應用版本已升級為v2.0版本。

步驟四:復原應用版本

版本升級為v2.0後,ArgoCD會保留之前的ReplicaSet,便於快速復原之前的版本。

  1. 在ACK one Fleet執行個體上執行以下命令,通過amc -m參數,查看指定的關聯集群的資源狀態。

    kubectl amc get replicaset  -n default -m ce****

    預期輸出:

    Run on ManagedCluster ce**** (ackpro-cluster1)
    NAME                     DESIRED   CURRENT   READY   AGE
    echo-server-55664c4677   1         1         1       26m    // 版本v2.0。
    echo-server-5cf54bdbcb   0         0         0       109m   // 版本v1.0。
  2. 如需復原到版本v1.0,可在應用頁面,單擊HISTORY AND ROLLBACK,查看應用的所有歷史版本。復原版本.png

  3. 選擇對應的v1.0版本進行復原,然後單擊Rollback確認復原.png

    此時,Pod Image Tag已經復原到v1.0,由於ArgoCD和Git Repo相比出現差異,因此應用狀態變為OutOfSync,在問題修複後,單擊SYNC發起同步。

    說明

    ArgoCD也支援自動同步Git Repo資訊。

通過ArgoCD CLI部署應用

  1. 登入ArgoCD Server。

    1. 使用艦隊KubeConfig,執行以下命令,擷取ArgoCD Server LB IP。

      kubectl get svc -nargocd argocd-server -ojsonpath='{.status.loadBalancer.ingress[0].ip}'
    2. 執行以下命令,擷取admin密碼。

      kubectl -nargocd get secret argocd-initial-admin-secret -ojsonpath='{.data.password}' |base64 -d
    3. 登入ArgoCD Server。

      argocd login <argocd server lb ip>
      Username: admin
      Password:
      'admin:login' logged in successfully
      Context '<argocd server lb ip>' updated
  2. 執行以下命令,增加Git Repo。

    argocd repo add https://github.com/AliyunContainerService/gitops-demo.git --name echo-server

    預期輸出:

    Repository 'https://github.com/AliyunContainerService/gitops-demo.git' added
  3. 執行以下命令,查看Git Repo列表。

    argocd repo list

    預期輸出:

    TYPE  NAME  REPO                                                       INSECURE  OCI    LFS    CREDS  STATUS      MESSAGE  PROJECT
    git         https://github.com/AliyunContainerService/gitops-demo.git  false     false  false  false  Successful           default
  4. 執行以下命令,查看叢集。

    argocd cluster list

    預期輸出:

    SERVER                          NAME                    VERSION  STATUS   MESSAGE                                                  PROJECT
    https://10.XX.XX.XX:XX      ce****-ackpro-cluster1               Unknown  Cluster has no applications and is not being monitored.
    https://10.XX.XX.XX:XX      cd****-ackpro-cluster2               Unknown  Cluster has no applications and is not being monitored.
    https://kubernetes.default.svc  in-cluster                       Unknown  Cluster has no applications and is not being monitored.

    您可以通過ACK one Fleet執行個體,添加新的關聯集群,ACK One將自動同步叢集到ArgoCD中。

  5. 執行以下命令,建立應用。

    argocd app create echo-server --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/helm --revision one-demo --dest-namespace default --dest-server https://10.0.XX.XX:6443

    預期輸出:

    application 'echo-server' created
  6. 執行以下命令,從Git中拉取同步應用,並部署到目的地組群中。

    argocd app sync echo-server

通過ArgoCD ApplicationSet實現多叢集GitOps部署

關於實現多叢集GitOps部署的具體操作,請參見使用ApplicationSet建立多個應用

通過ArgoCD Application部署OCI Helm Chart

關於部署OCI Helm Chart的具體操作,請參見使用ACK One GitOps部署ACR EE OCI Helm Chart

相關文檔