아래와 같이 _helpers.tpl 파일에 몇 가지 템플릿이 있습니다.
{{- define "clusterNodes" }}
- ip: "192.168.7.10"
hostnames:
- "m1"
- ip: "192.168.7.20"
hostnames:
- "w1"
- ip: "192.168.7.30"
hostnames:
- "w2"
{{- end }}
다음 yaml에서 사용하기 위해 위 첫 번째 요소의 호스트 이름을 가져오고 싶습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx2
spec:
replicas: 1
selector:
matchLabels:
app: nginx2
template:
metadata:
labels:
app: nginx2
spec:
nodeName: "{{ (index (index $clusterNodes "clusterNodes") 0).hostnames.0 }}"
containers:
- name: nginx2
image: nginx:alpine
imagePullPolicy: IfNotPresent
항목을 다음과 같이 만드십시오.
nodeName: m1
답변1
이것은 작동합니다:
nodeName: {{ index (index (include "clusterNodes" . | fromYamlArray ) 0).hostnames 0 }}
귀하의 접근 방식은 거의 정확하지만 YAML 배열로 구문 분석해야 합니다 clusterNodes
. 그렇지 않으면 문자열로 해석됩니다.