ApplicationSet用于简化多集群应用编排,它可以基于单一应用编排并根据用户的编排内容自动生成一个或多个Application。本文介绍如何使用ApplicationSet创建多个应用。
前提条件
- 已登录GitOps系统。具体操作,请参见登录GitOps系统。
- 已安装kubectl命令行工具并获取ACK One主控实例的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服务是否正常。