ArgoCD 仅创建范围循环中的最后一个键/值对

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

当我在本地执行 helm 模板时,它会按预期打印所有 Ingress 自定义资源。但是,当我部署到 ArgoCD 时,它仅获取范围内的最后一个值。请参阅下面的 Ingress 模板和 value.yaml。

ingress.yaml

{{- range $index, $record :=  .Values.dnsRecords.cnameRecords }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cname-record-ingress-{{ $index }}
  namespace: {{ $.Values.deployment.namespace }}
  annotations:
    # Disable Cert-Manager
    cert-manager.io/issue-temporarily-disabled: "true"
    argocd.argoproj.io/sync-wave: "{{ $index }}"

    # ExternalDNS Annotations for CNAME Records
    external-dns.alpha.kubernetes.io/hostname: "{{ $record.name }}"
    external-dns.alpha.kubernetes.io/record-type: "CNAME"
    external-dns.alpha.kubernetes.io/target: "{{ $record.value }}"
    external-dns.alpha.kubernetes.io/ttl: "{{ $record.ttl | default 300 }}"
  labels:
    argocd.argoproj.io/instance: {{ $.Release.Name }}
spec:
  rules:
    - host: dummy.com-{{ $index }}
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: dummy-service-{{ $index }}
                port:
                  number: 80
{{- end }}

values.yaml

dnsRecords:
  cnameRecords:
  - name: "oopizw5ap7ktcbe._domainkey.example.com"
    value: "oopizw5ap7ktcbe.dkim.amazonses.com"
  - name: "uzq4rog4echrx._domainkey.example.com"
    value: "uzq4rog4echrxx.dkim.amazonses.com"
  - name: "jqq4x6xkorwe2._domainkey.example.com"
    value: "jqq4x6xkorwe2.dkim.amazonses.com"

我希望 ArgoCD 创建 3 个入口资源,但它只创建最后一个。

kubernetes range kubernetes-helm kubernetes-ingress argocd
1个回答
0
投票

您需要在

---
之前添加
{{- end }}
,以便将它们分开并视为部署为每个 Ingress 对象,否则只会部署一次迭代。

ingress.yaml

{{- range $index, $record :=  .Values.dnsRecords.cnameRecords }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cname-record-ingress-{{ $index }}
  namespace: {{ $.Values.deployment.namespace }}
  annotations:
    # Disable Cert-Manager
    cert-manager.io/issue-temporarily-disabled: "true"
    argocd.argoproj.io/sync-wave: "{{ $index }}"

    # ExternalDNS Annotations for CNAME Records
    external-dns.alpha.kubernetes.io/hostname: "{{ $record.name }}"
    external-dns.alpha.kubernetes.io/record-type: "CNAME"
    external-dns.alpha.kubernetes.io/target: "{{ $record.value }}"
    external-dns.alpha.kubernetes.io/ttl: "{{ $record.ttl | default 300 }}"
  labels:
    argocd.argoproj.io/instance: {{ $.Release.Name }}
spec:
  rules:
    - host: dummy.com-{{ $index }}
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: dummy-service-{{ $index }}
                port:
                  number: 80
---
{{- end }}

参考:https://github.com/helm/helm/issues/7883

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.