我是 Helm Chart 的新手,我正在构建 Helm Chart 以在 kubernetes 上部署应用程序,作为其中的一部分,我创建了一个部署模板,如下所示,
{{- $outer := . -}}
{{- range $index, $service := .Values.myservices}}
{{- with $outer }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ $service.name }}
labels:
{{- include "myhelm.labels" $ | nindent 4 }}
spec:
.
.
.
{{- end }}
{{- end }}
这里我使用模板“myhelm.labels”,它在 _helpers.tpl 中定义如下,
{{/*
Common labels
*/}}
{{- define "myhelm.labels" -}}
helm.sh/chart: {{ include "myhelm" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
我喜欢在values.yaml中包含更多标签,如下所示
myservices:
api:
name: "com-api"
labels:
app: "com-api"
selectorLabels:
app: "com-cp"
podAnnotations: {}
container:
image: "com-api"
port: 24000
name: "api"
nodeSelector:
app: "com-cp-api"
affinity: {}
tolerations: {}
ui:
name: "com-ui"
labels:
app: "com-ui"
selectorLabels:
app: "com-ui"
podAnnotations: {}
container:
image: "com-ui"
port: 23000
name: "ui"
nodeSelector:
app: "com-cp-ui"
affinity: {}
tolerations: {}
除了“myhelm.labels”(通用标签)之外,我还想包含特定于服务的标签,例如 $service.labels。 请帮助我,我该怎么做?
我可以一一添加特定标签,例如,
labels:
{{- include "dlc-project-service-control-plane.labels" $ | nindent 4 }}
app: {{ $service.labels.app }}
但是,如果我在 value.yaml 中的 $service.labels 下有多个标签,并且想要将所有标签添加到部署模板中的单个语句中,我正在寻找解决方案。
如果您已经知道解决方案,请分享代码片段,这会有所帮助。
谢谢
我可以使用 toYaml 来实现它,下面是代码片段,
{{- $outer := . -}}
{{- range $index, $service := .Values.myservices}}
{{- with $outer }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ $service.name }}
labels:
{{- include "myhelm.labels" $ | nindent 4 }}
{{- toYaml $service.labels | nindent 4 }}
spec:
.
.
.
{{- end }}
{{- end }}