我們現在有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 -
並構建成圖像將其作爲預定的工作來運行。