我在configmap.yaml
中有一个设置
---
apiVersion: V2.23
kind: ConfigMap
metadata:
name: my-configmap
data:
image.tag: {{ .Values.image.tag }}
然后在deployment.yaml
中,有以下一行:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
然后在values.yaml
中,有以下一行:
image:
repository: myrepo
tag: latest
pullPolicy: IfNotPresent
如果我的helm
中有以下Jenkinsfile
命令
sh """
helm upgrade --install --force \
--namespace=default \
--values=values.yaml \
--set image.tag=${output_of_git-describe} \
--set image.pullPolicy=Always \
myimage kubernetes/myimage
"""
问题
sha256
的{{1}}会根据我在configmap.yaml
中拥有的舵命令而实际更改吗?Jenkinsfile
命令来显示helm
的sha256?答案 0 :(得分:1)
编写(from here)时,Helm会计算未渲染模板文件的SHA-256哈希值,该值在您更新值时不会改变。
如果您的ConfigMap仅包含此单个值,则可以改用该值的哈希值:
exports.postProduct = function(request, response) {
productModel.postProduct(request, (message, lastID) => {
upload(request, response, function(err) {
//console.log(req.body);
//console.log(req.files);
if(err) {
return response.end("Error uploading file.");
}
response.end("File is uploaded");
});
});
}
您可以将ConfigMap的内容分解为单独的可渲染模板:
checksum/config: {{ sha256sum .Values.image.tag }}
{{/* _config_map.tpl */}}
{{- define "config-map-contents" -}}
image.tag: {{ .Values.image.tag }}
{{- end -}}
{{/* my-configmap.yaml */}}
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data: {{ include "config-map-contents" | nindent 2 }}
最终,您需要更改Pod规范中的某些内容,以使Kubernetes重新部署它。在Helm中,您可以直接将值放在环境变量中,而无需通过ConfigMap,这将产生正确的效果:
{{/* in the pod spec */}}
checksum/config: {{ include "config-map-contents" | sha256sum }}
或者如果它实际上是图像标签,只需更改容器中容器的目标图像将导致其重新部署:
env:
- name: IMAGE_TAG
value: {{ .Values.image.tag }}
答案 1 :(得分:1)
- 是否会根据我在Jenkinsfile中的helm命令更改configmap.yaml的sha256?
是的。 include
函数将使用当前头盔值呈现configmap.yaml
模板。
- 是否可以运行一个helm命令来显示configmap.yaml的sha256?
是的。 helm template
命令就是这样做的。例如:
$ helm template --set image.tag=foo mychart | grep checksum
checksum/config: bd280ed35fb0f343eb93837290a67e26423f0aa247f48b522f574a711fa35e11
$ helm template --set image.tag=bar mychart | grep checksum
checksum/config: 152533d214421480233406153edcde673f4ce072fba940cb7cfbab96954f7201