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應用版本以及服務暴露方式不同,所以需要建立production和staging兩個子目錄來儲存不同的應用編排。
操作步驟
使用以下內容,建立applicationset.yaml。
該ApplicationSet編排將建立2個應用,分別是
production-echo-server
和staging-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
執行以下命令,部署ApplicationSet。
kubectl -n argocd apply -f applicationset.yaml
執行以下命令,查看已建立的應用列表。
kubectl -n argocd get application
預期輸出:
NAME SYNC STATUS HEALTH STATUS production-echo-server OutOfSync Missing staging-echo-server OutOfSync Missing
執行以下命令,同步部署應用到目的地組群。
argocd app sync production-echo-server staging-echo-server
驗證叢集中的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。