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.创建 测试 configs
和 values.yaml
同级
mkdir configs
echo "test" > configs/config.toml