我们现在有scheduled jobs在Kubernetes 1.4 - 是否有可能使用此操作对集群执行rolling container update(新映像)?基本思想是我想要一个简单的方法来自动在每个设定的时间间隔内推出更新。Kubernetes滚动更新预定作业
执行更新的'传统'方法是让CI在Kube主控上点击webhook,但我想避免向公众公开服务,而只是定期检查更新。
我们现在有scheduled jobs在Kubernetes 1.4 - 是否有可能使用此操作对集群执行rolling container update(新映像)?基本思想是我想要一个简单的方法来自动在每个设定的时间间隔内推出更新。Kubernetes滚动更新预定作业
执行更新的'传统'方法是让CI在Kube主控上点击webhook,但我想避免向公众公开服务,而只是定期检查更新。
我认为从您的CI系统公开您的主服务器并向其发送更新通常是安全的,但是您可以明确地设置一个预定作业来将Deployment更新为最新版本。 Kubernetes有一个名为Service Accounts的概念,用于从群集内对API进行认证,并与kubectl
(即它将自动使用服务帐户信息来认证)很好地集成。该集群还为主API提供kubernetes
服务。因此,您可以使用kubectl
和脚本部署容器,并使用它来定期更新部署。
您将需要一种机制来确定最新版本是什么。也许你可以将最新的版本信息存储在一个文本文件或写入GCS或S3的东西中,并将该文件取出以获取最新版本。
说你有一个这样的deploy.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp
spec:
template:
spec:
containers:
- name: myapp
image: myapp:<latest-ver>
然后你就可以生成和更新部署在脚本中像这样:
#!/bin/sh
wget -o VERSION http://url/to/VERSION
sed "s/<latest-ver>/$(cat VERSION)/" deploy.yaml | kubectl apply -f -
并构建成图像将其作为预定的工作来运行。