helm 动态添加配置文件

helm 动态添加配置文件

大概记录 后续完善

1.首先我们在templates目录创建个 cm.yaml

此处内容大致意思是 如果开启了configOverrides这个参数将去configs/ 目录拿取配置文件可以是多个

{{- if .Values.configOverrides }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }} 
data:
{{- range $k, $v := .Values.configOverrides }}
  {{ $k }}: |
{{ $.Files.Get (printf "%s%s" "configs/" $k) | indent 4 }}
{{- end }}
{{- end }}

2.然后在 deployment.yaml 添加此段

    spec:
      {{- with .Values.imagePullSecrets }}
      imagePullSecrets:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      containers:
        - name: {{ .Release.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
           {{- range $k, $v := .Values.ports }}
           - name: {{ $k }}
             containerPort: {{ $v }}
             protocol: TCP
           {{- end }}
          env:
            - name: CONNECT_REST_HOST_NAME
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            # 主要是这里开始
            # 传递变量 使检查到配置文件MD5更新就重启pod
            {{- if .Values.configOverrides }}
            {{- $SUM := "" }}
            {{- range $k, $v := .Values.configOverrides }}
            {{- $SUM = $.Files.Get (print "configs/" $k) | sha256sum | print $SUM }}
            {{- end }}
            - name: checksum-config
              value: {{ $SUM | sha256sum }}
            {{- end }}
            {{- range $k, $v := .Values.env }}
            - name: {{ $k }}
              value: {{ $v | quote }}
            {{- end }}
          resources:
            {{- toYaml .Values.resources | nindent 12 }}
          # 循环挂载cm配置可1个或多个
          {{- if .Values.configOverrides }}
          volumeMounts:
          {{- range $k, $v := .Values.configOverrides }}
          - name: {{ $.Release.Name }}-config
            mountPath: {{ $v }}{{ $k }}
            subPath: {{ $k }}
          {{- end }}
          {{- end }}
      #这里是创建 configMap的 volumes
      {{- if .Values.configOverrides }}
      volumes:
      - name: {{ .Release.Name }}-config
        configMap:
          defaultMode: 493
          name: {{ .Release.Name }}
      {{- end }}

3.最后values.yaml 添加此段即可

configOverrides:
  config.toml: /opt/shalasyr/
  # configs/下的文件名(同样也是容器里实际的配置文件名):实际容器里的路径
  

4.创建 测试 configsvalues.yaml 同级

mkdir configs
echo "test" > configs/config.toml
posted @ 2022-03-23 12:31  鸣昊  阅读(373)  评论(0编辑  收藏  举报