如何使用Helm将覆盖文件传递到特定的Service YAML文件?

时间:2019-06-20 15:50:10

标签: kubernetes kubernetes-helm kubectl

当我部署到位于稳定状态的图表时,我试图通过公差。公差应应用于模板目录中的特定YAML文件,而不是默认情况下对values.yaml文件的应用。

我已经使用补丁程序进行了申请,我可以看到,如果将其应用于正确的Service(即DaemonSet),则所需的更改将起作用。

当前,我正在尝试“ helm install -f tolerations.yaml --name release_here”

这只是在运行get chart release_here时创建一个一次性条目,并且不在正确的服务YAML中

1 个答案:

答案 0 :(得分:0)

报价要求

  

该公差应应用于以下位置中的特定YAML文件:   模板目录

首先,为了使其实现,您的特定头盔图文件需要允许这种最终用户自定义。

以下是基于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

用您的values.yaml覆盖默认customs-values,以在DeamonSet的Pod规范中设置容差。

server:
  enabled: true
  tolerations: ## Agent container resources
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
            - matchExpressions:
                - key: foo.bar.com/role
                  operator: In
                  values:
                    - master 

渲染结果清单文件,以查看使用--values /-set参数使用install / upgrade helm命令覆盖默认值时的外观:

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:
        ...  

我希望这会帮助您解决问题。