helm模版案例运维记录(二)

韵味老鸟 2024-07-06 17:19:18

helm模版案例运维记录(二)

一:解析configmap

{{- if .Values.config.enabled }}apiVersion: v1kind: ConfigMapmetadata: name: {{ include "umi-meta.fullname" . }} labels: {{- include "umi-meta.labels" . | nindent 4 }}data: {{- if eq .Values.cluster "dev" -}} {{- (.Files.Glob "config/dev/app.yml").AsConfig | nindent 4 }} {{- else if eq .Values.cluster "sit" -}} {{- .Files.Glob "config/sit/app.yml" | nindent 4 }} {{- else if eq .Values.cluster "staging" -}} {{- .Files.Glob "config/staging/app.yml" | nindent 4 }} {{- else if eq .Values.cluster "uat" -}} {{- .Files.Glob "config/uat/app.yml" | nindent 4 }} {{- end }}{{- end }}

二:项目目录

三:循环区别

{{- if .Values.controller.metadata.annotations -}}{{- $repcont := int .Values.controller.replicaCount }}{{- range $i,$e := until $repcont }}apiVersion: v1kind: Servicemetadata: name: {{ include "meng.fullname" $ }} - {{ $i }} labels: {{- include "meng.labels" $ | nindent 4 }}spec: type: {{ $.Values.service.type }} ports: {{- if eq $.Values.service.type "NodePort" }} {{- range .Values.service.ports }} - port: {{ .port }} targetPort: {{ .targetPort }} protocol: {{ .protocol }} name: {{ .name }} {{- with .nodePort }} nodePort: {{ . }} {{- end }} {{- end }} {{- else }} {{- range $.Values.service.ports }} - port: {{ .port }} targetPort: {{ .targetPort }} protocol: {{ .protocol }} name: {{ .name }} {{- end }} {{- end }} #if NodePort selector: statefulset.kubernetes.io/pod-name: {{ include "meng.fullname" $ }}-{{ $i }}{{- end }}{{- end }}

helm 模版中 name: {{ include "meng.fullname" . }} - {{ $i }} 和 name: {{ include "meng.fullname" $ }} - {{ $i }} 有什么区别

{{ include "meng.fullname" . }} - {{ $i }} 使用当前上下文对象进行渲染,可能会修改上下文对象的值,而

{{ include "meng.fullname" $ }} - {{ $i }} 使用上下文对象的拷贝进行渲染,不会修改当前上下文对象的值

type: {{ .Values.service.type }} 使用当前上下文对象的 .Values 属性来获取 service.type 的值。这意味着在模板中直接访问 .Values 对象的属性。

而 type: {{ $.Values.service.type }} 使用 $ 来引用顶层的上下文对象,然后通过该对象的 .Values 属性来获取 service.type 的值。这种方式可以确保我们访问的是顶层上下文对象的 .Values 属性,而不受当前上下文对象的影响

当前上下文对象通常用于模板内部的渲染,并通过 . 访问属性顶层上下文对象包含了传递给 Helm 命令行的值,可以通过 $ 和 .Values 访问

0 阅读:0