我已经使用azure的kubernates服务创建了一个应用程序。 在我的Yaml中,我为我正在使用的每个图像都指定了“最新”作为图像版本。
是否有任何选择,以便在我更新映像注册表以使“最新”更改时,kubernates会自动进行部署?并管理所有内容,使其仅更新一个副本,然后进行扩展,以使服务在部署期间不会中断?
答案 0 :(得分:2)
是否有任何选择,以便在我更新映像注册表以使“最新”更改时,kubernates会自动进行部署?
解决这个问题不是kubernetes的工作。有两个方法可以解决这个问题:
在docker注册表上添加webhook,对于docker-hub,它是Docker Hub Webhooks。将新映像推送到注册表后,您可以向某个地方发送POST
请求作为通知。
部署CI / CD以接收该通知并滚动更新您的应用程序。或者只是创建一个简单的HTTP Server来处理通知请求并执行类似kubectl ...
的操作。
是否管理了所有内容,以便仅更新一个副本然后进行扩展,以使服务在部署期间不会中断?
Kubernetes通过rolling update处理此问题。对于Deployment
或StatefulSet
,当前的kubernetes通过滚动更新来自动更新pod,您只需要做kubectl apply -f new-spec.yaml
。
答案 1 :(得分:0)
Kubernetes不了解注册表中的更改,它不监视新的容器映像。您将需要创建一个在发布新版本时触发的过程,并更新您的Kubernetes部署。您可以为此使用CI / CD工具,或使用Azure Functions,Azure Automation等工具。
要在不停机的情况下进行部署,您需要查看滚动更新。
答案 2 :(得分:0)
您应该为此真正使用发布管理,或者使用诸如gitops之类的发布管理,当新版本的容器可用时,它们会触发更新。为此使用Azure Functions \ Automation是不正确的。但这并不意味着它很复杂\不可靠。