全部產品
Search
文件中心

Container Service for Kubernetes:使用ApplicationSet建立多個應用

更新時間:Jun 19, 2024

ApplicationSet用於簡化多叢集應用編排,它可以基於單一應用編排並根據使用者的編排內容自動產生一個或多個Application。本文介紹如何使用ApplicationSet建立多個應用。

前提條件

  • 已登入GitOps系統。具體操作,請參見登入GitOps系統

  • 已安裝kubectl命令列工具並擷取ACK One Fleet執行個體的KubeConfig,預設路徑為~/.kube/config

樣本說明

將echo-server應用部署至Production和Staging叢集,echo-server的Git倉庫中manifests目錄結構如下所示:

.
├── Dockerfile
├── go.mod
├── go.sum
├── main.go
└── manifests
    └── directory
        ├── production
        │ ├── deployment.yaml
        │ └── service.yaml
        └── staging
            ├── deployment.yaml
            └── service.yaml

由於Production和Staging叢集中部署的echo-server應用版本以及服務暴露方式不同,所以需要建立productionstaging兩個子目錄來儲存不同的應用編排。

操作步驟

  1. 使用以下內容,建立applicationset.yaml

    該ApplicationSet編排將建立2個應用,分別是production-echo-serverstaging-echo-server,其中production-echo-server應用將部署manifests/directory/production子目錄下的manifests,staging-echo-server將部署manifests/directory/staging目錄下的manifests。

    apiVersion: argoproj.io/v1alpha1
    kind: ApplicationSet
    metadata:
      name: echo-server
    spec:
      generators:
      - list:
          elements:
          - cluster: production
            url: https://47.91.XX.XX:6443
          - cluster: staging
            url: https://47.111.XX.XX:6443
      template:
        metadata:
          name: '{{cluster}}-echo-server'
        spec:
          project: default
          source:
            repoURL: https://code.aliyun.com/shuwei.hsw/echo-server.git
            targetRevision: main
            path: manifests/directory/{{cluster}}
          destination:
            server: '{{url}}'
            namespace: multi-echo-server
  2. 執行以下命令,部署ApplicationSet。

    kubectl -n argocd apply -f applicationset.yaml
  3. 執行以下命令,查看已建立的應用列表。

    kubectl -n argocd get application

    預期輸出:

    NAME                     SYNC STATUS   HEALTH STATUS
    production-echo-server   OutOfSync     Missing
    staging-echo-server      OutOfSync     Missing
  4. 執行以下命令,同步部署應用到目的地組群。

    argocd app sync production-echo-server staging-echo-server
  5. 驗證叢集中的echo-server服務是否正常。

    • 執行以下命令,驗證Production叢集中的echo-server服務是否正常。

      curl XX.XX.XX.XX:8080/version     #替換XX.XX.XX.XX為echo-server服務的IP地址。

      預期輸出:

      "Hello Echo Server v1.0"
    • 執行以下命令,驗證Staging叢集中的echo-sercer服務是否正常。

      curl XX.XX.XX.XX:8080/version     #替換XX.XX.XX.XX為echo-server服務的IP地址。

      預期輸出:

      "Hello Echo Server v2.0"

相關文檔

更多關於ApplicationSet的使用,請參見ApplicationSet