Helm: рдорд╛рди рдПрдХ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд▓реВрдк рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЕрдХреНрддреВре░ 2016  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: helm/helm

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ

рдРрд╕рд╛ рд╣реА рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ:

{{ range $k, $v := until (atoi (quote .Values.Replicas) | default 5) }}
apiVersion: v1
kind: Service
metadata:
  name: zookeeper-{{$v}}
  namespace: {{ .Values.Namespace }}
  labels:
    node: "zookeeper-{{$v}}"
  annotations:
    "helm.sh/created": {{ .Release.Time.Seconds | quote }}
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
  - port: {{.Values.PeerPort}}
    name: peer
  - port: {{.Values.LeaderElectionPort}}
    name: leader-election
  - port: {{.Values.ClientPort}}
    name: client
  selector:
    component: "{{.Release.Name}}-{{.Values.Component}}"
    zookeepernode: "zookeeper-{{$v}}"
{{ end }}

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

Error: render error in "zookeeper/templates/deployment.yaml": template: zookeeper/templates/deployment.yaml:6:22: executing "zookeeper/templates/deployment.yaml" at <.Values.global.names...>: can't evaluate field Values in type int

рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рднреВрд▓ рд╕рдХрддрд╛ рд╣реВрдБ, рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@worldsayshi рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдмрд╕ рдЗрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЪрд░ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрд┐рдЯ рд╣реИ:

However, there is one variable that is always global - $ - this variable will always point to the root context. This can be very useful when you are looping in a range need to know the chartтАЩs release name.

рдпрджрд┐ рдЖрдкрдХреЛ range рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рд╕реЗ рдореВрд▓ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

{{- range $key, $value := .Values.someHash }}
  {{ $key }}: {{ print $.Values.prefix ":" $value | quote }}
{{- end }}

рд╕рднреА 14 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдВрдд рдореЗрдВ рдореБрдЭреЗ рдПрдХ рддрд░рдХреАрдм рдорд┐рд▓ рдЧрдИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬрд┐рд╕реЗ рд╣рдо рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВред

{{- $root := . -}}

{{ range $k, $v := until (atoi (quote .Values.Replicas) | default 5) }}
apiVersion: v1
kind: Service
metadata:
  name: zookeeper-{{$v}}
  namespace: {{ $root.Values.Namespace }}
  labels:
    node: "zookeeper-{{$v}}"
  annotations:
    "helm.sh/created": {{ $root.Release.Time.Seconds | quote }}
    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
spec:
  ports:
  - port: {{$root.Values.PeerPort}}
    name: peer
  - port: {{$root.Values.LeaderElectionPort}}
    name: leader-election
  - port: {{$root.Values.ClientPort}}
    name: client
  selector:
    component: "{{$root.Release.Name}}-{{$root.Values.Component}}"
    zookeepernode: "zookeeper-{{$v}}"
{{ end }}

рдУрд╣, рд╣рд╛рдБ... рдпрд╣ рдЧреЛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЧреВрдврд╝ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ . рджрд╛рдпрд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЗрд╕реЗ рдмрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ред

рдпрд╣ рдореБрдЭреЗ рднреА рдереЛрдбрд╝рд╛ рд╕рд╛ :(

@technosophos рд╢рд╛рдпрдж рдЖрдк рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛рдиреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдФрд░ рджрд╛рдпрд░реЗ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рдЦреЗрдВ

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдЧреЛ рдЯреЗрдХреНрд╕реНрдЯ/рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реАрдзреЗ рд╣реЗрд▓рдо рдореЗрдВ рдХреБрдЫ рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред range рдЬреИрд╕реА рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╕рдордп рджрд╛рдпрд░рд╛ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╢рд░реНрдд рдпрд╣ рд╣реЛрдЧреА рдХрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдЧреЛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдлрд╛рдЗрд▓ рдХрд░реЗрдВред

рдЯреЗрдХреНрд╕реНрдЯ/рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝:

{{range pipeline}} T1 {{end}}

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рдорд╛рди рдПрдХ рд╕рд░рдгреА, рдЯреБрдХрдбрд╝рд╛, рдирдХреНрд╢рд╛ рдпрд╛ рдЪреИрдирд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рди рдХреА рд▓рдВрдмрд╛рдИ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рд╣реИ; рдЕрдиреНрдпрдерд╛, рдбреЙрдЯ рдХреЛ рд╕рд░рдгреА, рд╕реНрд▓рд╛рдЗрд╕ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рдХреНрд░рдорд┐рдХ рддрддреНрд╡реЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ T1 рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рдорд╛рди рдПрдХ рдирдХреНрд╢рд╛ рд╣реИ рдФрд░ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрд░рдо ("рддреБрд▓рдиреАрдп") рдХреЗ рд╕рд╛рде рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИрдВ, рддреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХреБрдВрдЬреА рдХреНрд░рдо рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ $root рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХреНрд╖рдг рднрд░, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЙрд╕ рдкрд░ рдШреБрдЯ рд░рд╣рд╛ рд╣реИ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓:
Error: UPGRADE FAILED: unable to recognize "": no matches for /, Kind=Deployment
рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдмреАрдЪ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ред $root рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдареАрдХ рд╣реИ, рддреЛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬрдм рдореИрдВрдиреЗ - рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк {{- $root := . }} ред рдореИрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рддреЛ рдЧреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдХреБрдЫ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрд╛рда рд╣реИ:

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдмрд╛рдпрд╛рдВ рд╕реАрдорд╛рдВрдХрдХ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ "{{") рдХреЗ рдмрд╛рдж рдЛрдг рдЪрд┐рд╣реНрди рдФрд░ ASCII рд╕реНрдкреЗрд╕ рд╡рд░реНрдг ("{{-") рджреНрд╡рд╛рд░рд╛ рддреБрд░рдВрдд рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдЕрдиреБрдЧрд╛рдореА рд╕рдлреЗрдж рд╕реНрдерд╛рди рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдкрд╛рда рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗред рдЗрд╕реА рддрд░рд╣, рдпрджрд┐ рджрд╛рдпрд╛рдВ рд╕реАрдорд╛рдВрдХрдХ ("}}") рдПрдХ рд╕реНрдерд╛рди рдФрд░ рдЛрдг рдЪрд┐рд╣реНрди ("-}}") рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдкреНрд░рдореБрдЦ рд╕рдлреЗрдж рд╕реНрдерд╛рди рдХреЛ рддреБрд░рдВрдд рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдЯреНрд░рд┐рдо рдорд╛рд░реНрдХрд░реЛрдВ рдореЗрдВ, ASCII рд╕реНрдерд╛рди рдЕрд╡рд╢реНрдп рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; "{{-3}}" рд╕рдВрдЦреНрдпрд╛ -3 рд╡рд╛рд▓реА рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд 2 : рдпрд╣

# We assign the current context to a variable to access it in range iteration below
{{- $self := . -}}
{{ printf "%#v" $ }}

(рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реВрдЯ рдХреЗ рдмрдЬрд╛рдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)
рд╕рд╛рде рд╣реА, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@worldsayshi рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдмрд╕ рдЗрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЪрд░ рдЕрдиреБрднрд╛рдЧ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╛ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрд┐рдЯ рд╣реИ:

However, there is one variable that is always global - $ - this variable will always point to the root context. This can be very useful when you are looping in a range need to know the chartтАЩs release name.

рдпрджрд┐ рдЖрдкрдХреЛ range рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рд╕реЗ рдореВрд▓ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

{{- range $key, $value := .Values.someHash }}
  {{ $key }}: {{ print $.Values.prefix ":" $value | quote }}
{{- end }}

рдЕрдЧрд░ рдХреЛрдИ рдпрд╣рд╛рдВ рдЙрддрдирд╛ рд╣реА рднреНрд░рдорд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП @DeviateFish рдХреЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ (рдЬреИрд╕реЗ рдХрд┐ рдЖрдк helm create рдкрд░ рдореБрдлреНрдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ), рддреЛ рдЖрдкрдХреЛ рдмрд╕ рдЙрдЪрд┐рдд рд╕рдВрджрд░реНрдн рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рдиред

{{ range tuple "fizz" "buzz" }}
...
{{ template "foobar.fullname" $ }}  # Worky.
{{ template "foobar.fullname" . }}  # No worky.
...
{{ end }}

@рдХрд┐рд▓рд┐рдХреНрд╕ рд╕реЗ рдЕрдЪреНрдЫрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ ... рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рд╕реНрдкреЙрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╡рд╣ рдпрд╣ рдерд╛ рдХрд┐ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ --- рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдВрдбрд▓реАред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдорд┐рдирдЯ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ - рддреНрд░реБрдЯрд┐: рдЕрдкрдЧреНрд░реЗрдб рд╡рд┐рдлрд▓: рдЯреЗрдореНрдкрд▓реЗрдЯ: maas360/рдЪрд╛рд░реНрдЯ/рдЙрдкрднреЛрдХреНрддрд╛/рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕/_consumer. tpl:84 :33: рдкрд░ "loadconsumerConfigFiles" рдирд┐рд╖реНрдкрд╛рджрд┐рдд: nil рд╕реВрдЪрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди {}.Glob.

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░рд╛ configmap.yaml рд╣реИ рдЬреЛ рдиреАрдЪреЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ -

{{- $ рд░реВрдЯ: =ред -}}
{{рд╢реНрд░реЗрдгреА $instance_id, $value := .Values.instance_names }}
рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг: v1
рдкреНрд░рдХрд╛рд░: рдХреЙрдиреНрдлрд┐рдЧрдореИрдк
рдореЗрдЯрд╛рдбреЗрдЯрд╛:
рдирд╛рдо: {{$.Release.Name}}-{{$.Values.maasappname}}-{{$instance_id}}-configmap
рдЖрдВрдХрдбрд╝реЗ:

{{рдЯреЗрдореНрдкрд▓реЗрдЯ "loadconsumerConfigFiles" (рддрд╛рдирд╛рд╢рд╛рд╣реА $instance_id) $}}

{{рд╕рдорд╛рдкреНрдд}}

рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ loadconsumerConfigFiles рд╣реИ -
{{- "loadconsumerConfigFiles" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ -}}
{{- $ рд░реВрдЯ: =ред -}}
{{- $ arg1: = рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ред "0" -}}
{{- $рдлрд╝рд╛рдЗрд▓ := .рдлрд╝рд╛рдЗрд▓реЗрдВ }}
{{- рд░реЗрдВрдЬ $рдкрде, $рдмрд╛рдЗрдЯ:= $root.Files.Glob "config/*" }}

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ example_id рдХреЛ loadconsumerConfigFiles рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЙрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣ рдореВрд▓ рд╕рдВрджрд░реНрдн рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрднреА рднреА рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рджрд╛рдпрд░реЗ рдХреЛ рд╡рд╛рдкрд╕ рд░реВрдЯ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрд╕ рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕рдХрд╛ IntelliJ рдореЗрдВ рдПрдХ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рдерд╛ рдЬрд╣рд╛рдВ рдпрд╣ $root рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрд╛

{{- range .Values.deployments }}
{{- $rangeItem := . -}}
{{- with $ }}
---
apiVersion: apps/v1
kind: Deployment
  name: {{ $rangeItem.name }}
  labels:
    - organization: {{ .Values.organization }}
# etc etc
... 
{{- end }}
{{- end }}

рдард┐рдХ рд╣реИрдБ рдмрд╣реБрдд рдмрд╣реБрдд рд╢реБрдХреНрд░рд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

KavinduZoysa picture KavinduZoysa  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adam-sandor picture adam-sandor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danielcb picture danielcb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

burnettk picture burnettk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hobti01 picture hobti01  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ