HELM 도우미 템플릿에서 첫 번째 요소 가져오기

HELM 도우미 템플릿에서 첫 번째 요소 가져오기

아래와 같이 _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. 그렇지 않으면 문자열로 해석됩니다.

관련 정보