Skip to content

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

(完整的例子可以在這裡找到。)

在此示例中,列表生成器將 urlcluster 字段作為參數傳遞到模板中。如果我們想添加第二個環境,我們可以取消註釋第二個元素,ApplicationSet 控制器會自動將其定位到定義的應用程序。

在 ApplicationSet v0.1.0 版本中,只能指定 urlcluster 元素字段(加上任意值)。從 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 中創建集群(例如,它沒有這樣做的憑據)。