当我在本地执行 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 个入口资源,但它只创建最后一个。
您需要在
---
之前添加 {{- 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 }}