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。