List Generator¶
List generator 根據鍵/值對的列表生成參數(只要值是字符串值)。在此示例中,我們以名為 engineering-dev
的本地集群為目標:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- list:
elements:
- cluster: engineering-dev
url: https://kubernetes.default.svc
# - cluster: engineering-prod
# url: https://kubernetes.default.svc
# foo: bar
template:
metadata:
name: '{{cluster}}-guestbook'
spec:
project: default
source:
repoURL: https://github.com/argoproj/applicationset.git
targetRevision: HEAD
path: examples/list-generator/guestbook/{{cluster}}
destination:
server: '{{url}}'
namespace: guestbook
(完整的例子可以在這裡找到。)
在此示例中,列表生成器將 url
和 cluster
字段作為參數傳遞到模板中。如果我們想添加第二個環境,我們可以取消註釋第二個元素,ApplicationSet 控制器會自動將其定位到定義的應用程序。
在 ApplicationSet v0.1.0 版本中,只能指定 url
和 cluster
元素字段(加上任意值)。從 ApplicationSet v0.2.0 開始,支持任何鍵/值元素對(這也完全向後兼容 v0.1.0 形式):
spec:
generators:
- list:
elements:
# v0.1.0 form - requires cluster/url keys:
- cluster: engineering-dev
url: https://kubernetes.default.svc
values:
additional: value
# v0.2.0+ form - does not require cluster/URL keys
# (but they are still supported).
- staging: "true"
gitRepo: https://kubernetes.default.svc
# (...)
Info
這些 clusters 必須已經在 Argo CD 中定義,以便為這些值生成應用程序。 ApplicationSet 控制器不會在 Argo CD 中創建集群(例如,它沒有這樣做的憑據)。