每个图像上的自动更新窗格推送到GCR

时间:2016-09-28 15:19:24

标签: kubernetes google-kubernetes-engine google-container-registry

我将一个docker镜像推送到Container Registry,docker push gcr.io/go-demo/servertime和一个使用kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080创建的pod。

每次推送新版本的图像时,如何启用pod的自动更新?

3 个答案:

答案 0 :(得分:3)

我建议切换到某种CI来管理进程,而不是触发docker push触发将提交推送到git存储库的过程。此外,如果您切换到使用更高级别的kubernetes构造,例如deployment,您将能够将您的pod的滚动更新运行到新的图像版本。我们的流程大致如下:

git commit #triggers CI build
docker build yourimage:gitsha1
docker push yourimage:gitsha1
sed -i 's/{{TAG}}/gitsha1/g' deployment.yml
kubectl apply -f deployment.yml 

其中deployment.yml是我们部署的模板,将更新为新标记版本。

如果您手动执行此操作,则可以通过运行kubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1

简单地更新现有部署中的图像

答案 1 :(得分:2)

我在Spinnaker团队。

可能有点沉重,但在不了解您的其他考虑因素的情况下,Spinnaker是一个CD平台,您可以从该平台通过注册表更新触发k8s部署。

这里有一个codelab让你开始。

如果您更喜欢设置过程,可以通过Cloud Launcher预先设置k8s和GCR集成的启动器Spinnaker实例。

您可以在slack channel上找到进一步的支持(我@stevenkim)。

答案 2 :(得分:1)

它需要一些粘合剂,但您可以使用Docker Hub,这可以在推送新图像或创建新标记时为每个存储库定义webhook

这意味着您必须构建自己的Web API服务器来处理传入通知并使用它们来更新pod。 您必须使用Docker Hub,而不是Google容器存储库,它不允许网络连接。

因此,对于您尝试解决的问题可能进行了太多更改。