ArgoCD Helm 模板之模板

问题描述 投票:0回答:1

我有 argocd-apps 为我创建了两个 helm 资源。 看起来像:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: "{{ $key }}"
  namespace: argocd
  labels:
    name: "{{ $key }}"
spec:
  project: just-test
  sources:
  - repoURL: https://github.com/blabla.git
    targetRevision: "main"
    path: this_is/where_the_values_file_is
    helm:
      ignoreMissingValueFiles: true
      releaseName: test
      parameters:
      - name: secrets
        value: "{{ $val.secrets }}"
  - repoURL: https://github.com/nginxinc/kubernetes-ingress.git
    targetRevision: "0.1.1"
    chart: nginx-ingress
    helm:
      ignoreMissingValueFiles: true
      releaseName: test2
      version: v3
  destination:
    name: "{{ $.Values.cluster_name }}"
    namespace: "{{ $val.namespace }}"
  syncPolicy:
    syncOptions:
    - Validate=false
    - CreateNamespace=true
    - PrunePropagationPolicy=foreground
    - PruneLast=true
    retry:
      limit: 5
      backoff:
        duration: 5s
        factor: 2
        maxDuration: 3m
  revisionHistoryLimit: 10

它应该模板 2 个应用程序,1 个 nginx 和另一个我的应用程序, 这是我的应用程序模板(k8s cm):

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: cm
data:
{{ .Values.secrets }}

这是我传递给 .Values.secrts 的值

secrets:
  - name: xxxx
    value: xxx
  - name: yyyy
    value: yyy

在第二个模板中,我以字符串映射的形式获取值,

  [map[name:xxxx value:xxx]
  map[name:yyyy value:yyy]]

我正在尝试获得一个可以使用的普通字典,我需要做什么才能获得像 常规字典 -> $val.name, $val.value 谢谢。

我尝试过 toYaml、toJson、fromYaml、fromJson,构建一个字典,并更改值。

kubernetes-helm helm3
1个回答
0
投票

为了迭代字典,您将使用 helm 的 range 函数

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm
data: 
  {{- range $k, $v := .Values.secrets }}
  {{ $v.name }}: {{ quote $v.value }}
  {{- end }}

运行

helm template .
将输出:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cm
data:
  xxxx: "xxx"
  yyyy: "yyy"
© www.soinside.com 2019 - 2024. All rights reserved.