我在我的构建 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
Run Code Online (Sandbox Code Playgroud)
我每次都需要标记图像吗?如果存在相同版本,helm 是否不进行安装?
您不必每次都用新标签标记图像。只需添加
date: "{{ now | unixEpoch }}"
Run Code Online (Sandbox Code Playgroud)
下spec/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: "{{ now | unixEpoch }}"
spec:
containers:
- name: {{ .Values.app.frontendName }}
image: "rajesh12/myimage:latest"
imagePullPolicy: Always
Run Code Online (Sandbox Code Playgroud)
运行helm upgrade releaseName ./my-chart以升级您的版本
对于 helm 3,该--recreate-pods标志已被弃用。相反,你可以使用
kind: Deployment
spec:
template:
metadata:
annotations:
rollme: {{ randAlphaNum 5 | quote }}
Run Code Online (Sandbox Code Playgroud)
这将创建一个随机字符串注释,该注释始终会发生变化并导致部署滚动。 Helm - 自动滚动部署
是的,您需要标记每个版本而不是使用“最新”。Helm 会根据您的参数评估的模板与当前部署的模板进行比较。由于两者都是“最新”的,因此看不到任何变化,也不会应用任何升级(除非其他内容发生了变化)。这就是为什么 helm 最佳实践指南建议“容器镜像应该使用固定标签或镜像的 SHA”。(另请参阅https://docs.helm.sh/chart_best_practices/和Helm 升级不会拉取新容器)
| 归档时间: |
|
| 查看次数: |
5410 次 |
| 最近记录: |