我有一個碼頭圖像推送到容器註冊表與docker push gcr.io/go-demo/servertime
和一個與kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
創建一個窗格。每個圖像上的自動更新窗格推送到GCR
每當我推送新版本的圖像時,如何啓用自動更新的窗格?
我有一個碼頭圖像推送到容器註冊表與docker push gcr.io/go-demo/servertime
和一個與kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080
創建一個窗格。每個圖像上的自動更新窗格推送到GCR
每當我推送新版本的圖像時,如何啓用自動更新的窗格?
我建議切換到某種CI來管理進程,而不是觸發docker push來觸發將提交推送到git存儲庫的過程。另外,如果您切換到使用更高級別的kubernetes構造(如deployment
),則可以將您的窗格的滾動更新運行到新的映像版本。我們的過程大致如下:
git commit #triggers CI build
docker build yourimage:gitsha1
docker push yourimage:gitsha1
sed -i 's/{{TAG}}/gitsha1/g' deployment.yml
kubectl apply -f deployment.yml
其中deployment.yml是我們部署的模板,將被更新爲新的標記版本。
如果你做手工,可能更容易通過運行kubectl set image deployment/yourdeployment <containernameinpod>=yourimage:gitsha1
我對三角帆隊在現有的部署,以簡單地更新圖像。
可能有點沉重,但不知道其他方面的考慮,Spinnaker是一個CD平臺,您可以從該平臺觸發註冊表更新中的k8s部署。
這裏是一個codelab讓你開始。
如果您希望快速設置過程,可以通過Cloud Launcher獲得啓動器Spinnaker實例,其中k8s和GCR集成預先設置。
您可以在我們的slack channel(我是@stevenkim)上找到更多支持。
這將需要一些膠水,但您可以使用Docker Hub,它允許您在推送新圖像或創建新標籤時爲每個存儲庫定義webhook。
這意味着您必須構建自己的Web API服務器來處理傳入的通知並使用它們來更新窗格。 和你必須使用Docker Hub,而不是Google Container Repository,它不允許使用Web鉤子。
因此,您嘗試解決的問題可能有太多變化。
是的,變化太多了。我最終在我的CI工具中使用了kubectl。 – theplastictoy
謝謝。所以kubectl需要在CI工具上運行。我希望避免這種情況,因爲它可能不那麼容易。 – theplastictoy