如何使用 Helm 将覆盖文件传递给特定的服务 YAML 文件?
How does one pass an override file to specific Service YAML file using Helm?
我试图在部署到位于稳定的图表时传递容忍度。容忍度应应用于模板目录中的特定 YAML 文件,而不是默认情况下的 values.yaml 文件。
我已经使用补丁进行了应用,我可以看到,如果将其应用于正确的服务(即 DaemonSet),我需要的更改将会起作用。
目前我正在尝试"helm install -f tolerations.yaml --name release_here"
这只是在 运行 获取图表 release_here 时创建一个一次性条目,并且不在正确的服务 YAML
中
引用您的要求
The toleration should be applied to a specific YAML file in the
templates directory
首先,为了实现它,您的特定 helm chart 文件需要允许这样的最终用户自定义。
以下是基于 stable/kiam 图表的示例:
kiam/templates/server-daemonset.yaml
的定义
{{- if .Values.server.enabled -}}
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
labels:
app: {{ template "kiam.name" . }}
chart: {{ template "kiam.chart" . }}
component: "{{ .Values.server.name }}"
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "kiam.fullname" . }}-server
spec:
selector:
matchLabels:
app: {{ template "kiam.name" . }}
component: "{{ .Values.server.name }}"
release: {{ .Release.Name }}
template:
metadata:
{{- if .Values.server.podAnnotations }}
annotations:
{{ toYaml .Values.server.podAnnotations | indent 8 }}
{{- end }}
labels:
app: {{ template "kiam.name" . }}
component: "{{ .Values.server.name }}"
release: {{ .Release.Name }}
{{- if .Values.server.podLabels }}
{{ toYaml .Values.server.podLabels | indent 8 }}
{{- end }}
spec:
serviceAccountName: {{ template "kiam.serviceAccountName.server" . }}
hostNetwork: {{ .Values.server.useHostNetwork }}
{{- if .Values.server.nodeSelector }}
nodeSelector:
{{ toYaml .Values.server.nodeSelector | indent 8 }}
{{- end }}
tolerations: <---- TOLERATIONS !
{{ toYaml .Values.server.tolerations | indent 8 }}
{{- if .Values.server.affinity }}
affinity:
{{ toYaml .Values.server.affinity | indent 10 }}
{{- end }}
volumes:
- name: tls
使用您的 customs-values
覆盖默认值 values.yaml
以在 DeamonSet 的 Pod 规范中设置容忍度。
server:
enabled: true
tolerations: ## Agent container resources
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: foo.bar.com/role
operator: In
values:
- master
呈现生成的清单文件,以查看在使用 install/upgrade helm 命令使用 --values/--set 参数覆盖默认值时的外观:
helm template --name my-release . -x templates/server-daemonset.yaml --values custom-values.yaml
渲染文件(输出被截断):
---
# Source: kiam/templates/server-daemonset.yaml
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
labels:
app: kiam
chart: kiam-2.5.1
component: "server"
heritage: Tiller
release: my-release
name: my-release-kiam-server
spec:
selector:
matchLabels:
app: kiam
component: "server"
release: my-release
template:
metadata:
labels:
app: kiam
component: "server"
release: my-release
spec:
serviceAccountName: my-release-kiam-server
hostNetwork: false
tolerations:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: foo.bar.com/role
operator: In
values:
- master
volumes:
...
希望本文能帮助您解决问题。
我试图在部署到位于稳定的图表时传递容忍度。容忍度应应用于模板目录中的特定 YAML 文件,而不是默认情况下的 values.yaml 文件。
我已经使用补丁进行了应用,我可以看到,如果将其应用于正确的服务(即 DaemonSet),我需要的更改将会起作用。
目前我正在尝试"helm install -f tolerations.yaml --name release_here"
这只是在 运行 获取图表 release_here 时创建一个一次性条目,并且不在正确的服务 YAML
中引用您的要求
The toleration should be applied to a specific YAML file in the templates directory
首先,为了实现它,您的特定 helm chart 文件需要允许这样的最终用户自定义。
以下是基于 stable/kiam 图表的示例:
kiam/templates/server-daemonset.yaml
的定义{{- if .Values.server.enabled -}}
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
labels:
app: {{ template "kiam.name" . }}
chart: {{ template "kiam.chart" . }}
component: "{{ .Values.server.name }}"
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "kiam.fullname" . }}-server
spec:
selector:
matchLabels:
app: {{ template "kiam.name" . }}
component: "{{ .Values.server.name }}"
release: {{ .Release.Name }}
template:
metadata:
{{- if .Values.server.podAnnotations }}
annotations:
{{ toYaml .Values.server.podAnnotations | indent 8 }}
{{- end }}
labels:
app: {{ template "kiam.name" . }}
component: "{{ .Values.server.name }}"
release: {{ .Release.Name }}
{{- if .Values.server.podLabels }}
{{ toYaml .Values.server.podLabels | indent 8 }}
{{- end }}
spec:
serviceAccountName: {{ template "kiam.serviceAccountName.server" . }}
hostNetwork: {{ .Values.server.useHostNetwork }}
{{- if .Values.server.nodeSelector }}
nodeSelector:
{{ toYaml .Values.server.nodeSelector | indent 8 }}
{{- end }}
tolerations: <---- TOLERATIONS !
{{ toYaml .Values.server.tolerations | indent 8 }}
{{- if .Values.server.affinity }}
affinity:
{{ toYaml .Values.server.affinity | indent 10 }}
{{- end }}
volumes:
- name: tls
使用您的 customs-values
覆盖默认值 values.yaml
以在 DeamonSet 的 Pod 规范中设置容忍度。
server:
enabled: true
tolerations: ## Agent container resources
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: foo.bar.com/role
operator: In
values:
- master
呈现生成的清单文件,以查看在使用 install/upgrade helm 命令使用 --values/--set 参数覆盖默认值时的外观:
helm template --name my-release . -x templates/server-daemonset.yaml --values custom-values.yaml
渲染文件(输出被截断):
---
# Source: kiam/templates/server-daemonset.yaml
apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
labels:
app: kiam
chart: kiam-2.5.1
component: "server"
heritage: Tiller
release: my-release
name: my-release-kiam-server
spec:
selector:
matchLabels:
app: kiam
component: "server"
release: my-release
template:
metadata:
labels:
app: kiam
component: "server"
release: my-release
spec:
serviceAccountName: my-release-kiam-server
hostNetwork: false
tolerations:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: foo.bar.com/role
operator: In
values:
- master
volumes:
...
希望本文能帮助您解决问题。