我已經遵循了一些指南,並且已經使用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
進行部署?
一點額外的細節:我知道它的最佳做法,包括版本在圖像名稱的末尾,但與我們的設置,將需要更改爲多個文件,將是一個痛苦。所以我們很高興能夠將我們的git分支作爲當前部署的真相的來源,並且如果我們需要返回一個版本,則只需回滾分支。 –