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。