[英]kubectl - running rollout restart only when configmap changes
我有一个 devops 管道,分为三个步骤:
kubectl apply -f configmap.yml
kubectl apply -f deployment.yml
kubectl rollout restart deployment/test-service
我认为当configmap.yml
更改时, rollout restart
步骤很有用。 但是当只有deployment.yml
发生变化时,我担心“额外”的rollout restart
步骤没有用,应该避免。
我应该只在configmap.yml
更改时执行rollout restart
还是我不应该关心?
这不是一个直接的答案,但最终对于评论来说太长了,我认为它是相关的。 如果您使用kustomize
(又名kubectl apply -k
)应用您的清单,那么您会得到以下行为:
ConfigMaps
生成时在其名称后附加基于内容的 hashDeployment
Deployment
仅在ConfigMap
的内容发生变化时才会被修改,从而导致隐式重新部署由Deployment
管理的 pod。这在很大程度上可以让您获得所需的行为,但需要对您的部署管道进行一些更改。
最佳实践是使用 configmap 的 hash 注释部署的 pod。 如果 configmap 的内容发生变化,注解也会发生变化,所有 pod 都将滚动更新。 如果 configmap 没有改变,什么也不会发生。
例如带头盔:
annotations:
checksum/config: {{ include (print .Template.BasePath "/configmap.yaml") . | sha256sum }}
来自grafana 示例。
如果您不使用 helm,则可以让脚本在您的管道中创建 hash。
这样就不再需要推出重新启动步骤。 如果 configmap 和/或部署发生变化,Pod 将始终重启。 否则什么也不会发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.