每次将图像推送到 GCR 时自动更新 pod
Auto update pod on every image push to GCR
我使用 docker push gcr.io/go-demo/servertime
将一个 docker 图像推送到 Container Registry,并使用 kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
创建了一个 pod。
如何在每次推送新版本镜像时自动更新pod?
我建议切换到某种 CI 来管理流程,而不是在 docker 推送时触发,而是在将提交推送到 git 存储库时触发流程。此外,如果您切换到使用更高级别的 kubernetes 构造,例如 deployment
,您将能够 运行 将 pods 滚动更新到新的映像版本。我们的流程大致如下:
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 是我们将更新到新标记版本的部署模板。
如果您手动执行此操作,则可能更容易通过 运行ning kubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1
更新现有部署中的映像
我在 Spinnaker 团队。
可能有点重,但在不知道您考虑的其他方面的情况下,Spinnaker 是一个 CD 平台,您可以从中通过注册表更新触发 k8s 部署。
这里有一个 codelab 可以帮助您入门。
如果您希望简化设置过程,您可以通过 Cloud Launcher.
获取带有 k8s 和 GCR 集成预设置的入门 Spinnaker 实例
您可以在我们的 slack channel (I'm @stevenkim) 上找到更多支持。
它需要一些胶水,但您可以在推送新图像或创建新标签时为每个存储库使用 Docker Hub, which lets you define a webhook。
这意味着您必须构建自己的 Web API 服务器来处理传入的通知并使用它们来更新 pod。 并且您必须使用 Docker Hub,而不是 Google Container Repository,它不允许网络挂钩。
因此,对于您要解决的问题,可能更改太多。
我使用 docker push gcr.io/go-demo/servertime
将一个 docker 图像推送到 Container Registry,并使用 kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
创建了一个 pod。
如何在每次推送新版本镜像时自动更新pod?
我建议切换到某种 CI 来管理流程,而不是在 docker 推送时触发,而是在将提交推送到 git 存储库时触发流程。此外,如果您切换到使用更高级别的 kubernetes 构造,例如 deployment
,您将能够 运行 将 pods 滚动更新到新的映像版本。我们的流程大致如下:
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 是我们将更新到新标记版本的部署模板。
如果您手动执行此操作,则可能更容易通过 运行ning kubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1
我在 Spinnaker 团队。
可能有点重,但在不知道您考虑的其他方面的情况下,Spinnaker 是一个 CD 平台,您可以从中通过注册表更新触发 k8s 部署。
这里有一个 codelab 可以帮助您入门。
如果您希望简化设置过程,您可以通过 Cloud Launcher.
获取带有 k8s 和 GCR 集成预设置的入门 Spinnaker 实例您可以在我们的 slack channel (I'm @stevenkim) 上找到更多支持。
它需要一些胶水,但您可以在推送新图像或创建新标签时为每个存储库使用 Docker Hub, which lets you define a webhook。
这意味着您必须构建自己的 Web API 服务器来处理传入的通知并使用它们来更新 pod。 并且您必须使用 Docker Hub,而不是 Google Container Repository,它不允许网络挂钩。
因此,对于您要解决的问题,可能更改太多。