我在构建CI中使用以下命令,以便掌舵的部署发生在每个构建上。但是,我注意到这些更改尚未部署。
helm upgrade --install --force \
--namespace=default \
--values=kubernetes/values.yaml \
--set image.tag=latest \
--set service.name=my-service \
--set image.pullPolicy=Always \
myService kubernetes/myservice
我每次都需要标记图像吗?如果存在相同版本,头盔是否不进行安装?
答案 0 :(得分:1)
另一个标签(也许比您可以添加的秒数更健壮)只是图表修订号:
...
metadata:
...
labels:
helm-revision: "{{ .Release.Revision }}"
...
答案 1 :(得分:1)
使用头盔3时,--recreate-pods
标志已弃用。
相反,您可以使用
kind: Deployment
spec:
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
这将创建一个随机字符串注释,该注释将始终更改并导致部署滚动。 Helm - AUTOMATICALLY ROLL DEPLOYMENTS
答案 2 :(得分:0)
是的,您需要标记每个构建而不是使用“最新”。 Helm在根据您的参数评估的模板与当前部署的模板之间进行了区分。由于两者都是“最新的”,因此看不到任何变化,也不会应用任何升级(除非进行了其他更改)。这就是为什么头盔最佳实践指南建议“容器图像应使用固定标签或图像的SHA”的原因。 (另请参见https://docs.helm.sh/chart_best_practices/和Helm upgrade doesn't pull new container)
答案 3 :(得分:0)
您不必每次都使用新标签来标记图像。只需在date: "{{ .Release.Time.Seconds }}"
下添加template/metadata/labels
并设置imagePullPolicy: Always
。 Helm将检测部署对象中的更改,并每次提取最新映像:
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .Release.Name }}-{{ .Values.app.frontendName }}-deployment"
labels:
app.kubernetes.io/name: {{ .Values.app.frontendName }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ .Values.app.frontendName }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ .Values.app.frontendName }}
app.kubernetes.io/instance: {{ .Release.Name }}
date: "{{ .Release.Time.Seconds }}"
spec:
containers:
- name: {{ .Values.app.frontendName }}
image: "rajesh12/myimage:latest"
imagePullPolicy: Always
运行helm upgrade releaseName ./my-chart
升级您的版本