2

我已經遵循了一些指南,並且已經使用Google Container Engine和Google Container Registry建立了CI。問題是我的更新沒有被應用到部署。如何更新Google Container Engine上的Kubernetes部署?

所以這是我deployment.yml含有Kubernetes服務和部署:

apiVersion: v1 
kind: Service 
metadata: 
    name: my_app 
    labels: 
    app: my_app 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 80 
     targetPort: 3000 
    selector: 
    app: my_app 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: my_app 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: my_app 
    spec: 
     containers: 
     - name: node 
      image: gcr.io/me/my_app:latest 
      ports: 
      - containerPort: 3000 
      resources: 
      requests: 
       memory: 100 

     - name: phantom 
      image: docker.io/wernight/phantomjs:2.1.1 
      command: ["phantomjs", "--webdriver=8910", "--web-security=no", "--load-images=false", "--local-to-remote-url-access=yes"] 
      ports: 
      - containerPort: 8910 
      resources: 
      requests: 
       memory: 1000 

由於我的CI過程的一部分,我運行一個腳本更新谷歌雲註冊表中的圖像,然後運行kubectl apply -f /deploy/deployment.yml。這兩個任務成功,我通知了部署和服務已被更新:

2016-09-28T14:37:26.375Zgoogleclouddeploymentservice "my_app" configured 
2016-09-28T14:37:27.370Zgoogleclouddeploymentdeployment "my_app" configured 

因爲我包括我的形象在:latest標籤,我以爲圖像會downloaded each time部署更新。根據docs a RollingUpdate也應該是默認策略。

但是,當我運行更新部署的CI腳本時 - 更新後的映像未下載並且更改未應用。我錯過了什麼?我假設由於deployment.yml中沒有任何更改,因此未應用任何更新。如何讓Kubernetes下載我的更新圖像並使用RollingUpdate進行部署?

+0

一點額外的細節:我知道它的最佳做法,包括版本在圖像名稱的末尾,但與我們的設置,將需要更改爲多個文件,將是一個痛苦。所以我們很高興能夠將我們的git分支作爲當前部署的真相的來源,並且如果我們需要返回一個版本,則只需回滾分支。 –

回答

2

您可以通過更改任何字段(如標籤)來強制更新部署。所以在我的情況,我只是說這個我CI腳本的末尾:

kubectl patch deployment fb-video-extraction -p \ 
    "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"`date +'%s'`\"}}}}}" 
0

我們最近發表的如何,我們稱之爲GitOps辦法的辦法可以在GKE實現的technical overview

您需要做的就是配置GCR構建器從Github獲取代碼更改並運行構建,然後將Weave Cloud代理安裝到您的集羣中並連接到存儲YAML文件的存儲庫,並且代理將採用關心用新映像更新回購並將更改應用到羣集。

對於更高級概述,另見:


免責聲明:我是一個Kubernetes貢獻者和Weaveworks員工。我們構建開源和商業工具,幫助人們儘快與Kubernetes合作。

相關問題