2016-09-29 67 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 - 

並構建成圖像將其作爲預定的工作來運行。