2016-09-29 112 views

回答

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 - 

并构建成图像将其作为预定的工作来运行。