我们现在scheduled jobs中有Kubernetes 1.4 - 是否可以使用此功能针对群集执行rolling container update(新图片)?基本的想法是我想要一种简单的方法来每隔一段时间自动推出更新。
传统'更新的方法是让CI在Kube主机上点击webhook,但我想避免向公众公开服务,而只是定期检查更新。
答案 0 :(得分:1)
我认为公开主服务器并从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 -
将其构建成图像并按计划运行。