簡體   English   中英

Kubernetes YML,使用 for 循環

[英]kubernetes YML, use for loop

k8s中的模板(yml)文件中是否有用於生成多個項目的機制? 就像一個 for 循環。

例如,我有一個模板用於我的多個項目。 但有些人需要 1 個數據庫,而有些人可能需要 2 個、3 個或更多。 我不想手動定義所有變量,如果有新項目進入並需要新變量,則編輯我的文件。

我今天做的例子:

  template:
      (...)
      containers:
        (...)
        env:
        - name: DATABASE_NAME
          value: "{{prj.database.name}}"
        - name: DATABASE_NAME_2
          value: "{{prj.database.name.second}}"
        - name: DATABASE_USER
          valueFrom:
            secretKeyRef:
              name: "{{ k8s.deploy.app.secret.name }}"
              key: database_user
        - name: DATABASE_USER_2
          valueFrom:
            secretKeyRef:
              name: "{{ k8s.deploy.app.secret.name }}"
              key: database_user_2

如您所見,我必須為每個用戶 + 密碼 + 數據庫名稱復制粘貼代碼。 在這個文件和秘密中。 我使用 XLDeploy 在我的 YML 文件中插入數據。

我在找什么:

  template:
      (...)
      containers:
        (...)
        env:
        ---- for i in {{prj.database.number}} ----
        - name: DATABASE_NAME_{i}
          value: "{{prj.database.name.{i]}}"
        - name: DATABASE_USER_{i}
          valueFrom:
            secretKeyRef:
              name: "{{ k8s.deploy.app.secret.name }}"
              key: database_user_{i}
        ---- end for loop ----

所以我可以在 XLDeploy 中插入我用於每個項目的數據庫數量。 並用 XLD 填充值。

這可能嗎,或者我需要使用腳本語言從“YML 模板”生成 YML 文件?

如果您有其他與此文件相關的 yaml,則可以為此使用helm Helm 允許這樣的語法:

{{- range .Values.testvalues }}
---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels: {}
  name: {{ . }}
spec:
  ports:
  - name: tcp-80-8080
    port: 80
    protocol: TCP
    targetPort: 8080
  selector: 
    app: rss-{{ . }}
  type: ClusterIP
{{- end }}

因此,在testvalues中有一個values.yaml列表,如下所示:

testvalues:
- a
- b
- c
- d

Helm 將生成四個服務聲明——每個項目一個。 第一個看起來像這樣:

---
apiVersion: v1
kind: Service
metadata:
  annotations: {}
  labels: {}
  name: a
spec:
  ports:
  - name: tcp-80-8080
    port: 80
    protocol: TCP
    targetPort: 8080
  selector: 
    app: rss-a
  type: ClusterIP

如果它只是一個文件,另一種選擇是使用 Jinja 和 Python 之類的東西來使用jinja2模塊構建文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM