0

我有一個碼頭圖像推送到容器註冊表與docker push gcr.io/go-demo/servertime和一個與kubectl run servertime --image=gcr.io/go-demo-144214/servertime --port=8080創建一個窗格。每個圖像上的自動更新窗格推送到GCR

每當我推送新版本的圖像時,如何啓用自動更新的窗格?

回答

3

我建議切換到某種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

+0

謝謝。所以kubectl需要在CI工具上運行。我希望避免這種情況,因爲它可能不那麼容易。 – theplastictoy

2

我對三角帆隊在現有的部署,以簡單地更新圖像。

可能有點沉重,但不知道其他方面的考慮,Spinnaker是一個CD平臺,您可以從該平臺觸發註冊表更新中的k8s部署。

這裏是一個codelab讓你開始。

如果您希望快速設置過程,可以通過Cloud Launcher獲得啓動器Spinnaker實例,其中k8s和GCR集成預先設置。

您可以在我們的slack channel(我是@stevenkim)上找到更多支持。

1

這將需要一些膠水,但您可以使用Docker Hub,它允許您在推送新圖像或創建新標籤時爲每個存儲庫定義webhook

這意味着您必須構建自己的Web API服務器來處理傳入的通知並使用它們來更新窗格。 你必須使用Docker Hub,而不是Google Container Repository,它不允許使用Web鉤子。

因此,您嘗試解決的問題可能有太多變化。

+0

是的,變化太多了。我最終在我的CI工具中使用了kubectl。 – theplastictoy

相關問題