私はいくつかのガイドに従ってきました。私はCIをGoogle Container EngineとGoogle Container Registryで設定しました。問題は、更新が展開に適用されていないことです。Google Container EngineでKubernetesのデプロイメントを更新するにはどうすればよいですか?
だから、これはKubernetesサービスと展開が含まれている私のdeployment.ymlです:
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プロセスの一環として、私はGoogleのクラウドレジストリ内の画像を更新するスクリプトを実行し、その後、kubectl apply -f /deploy/deployment.yml
が実行されます。両方のタスクが成功すると、私は展開を通知していますし、サービスが更新されました:私は私のイメージに:latest
タグを用意しましたので
2016-09-28T14:37:26.375Zgoogleclouddeploymentservice "my_app" configured
2016-09-28T14:37:27.370Zgoogleclouddeploymentdeployment "my_app" configured
は、私はイメージが展開が更新されdownloaded each timeだろうと思いました。 docsによると、RollingUpdate
もデフォルト戦略である必要があります。
ただし、展開を更新するCIスクリプトを実行すると、更新されたイメージはダウンロードされず、変更は適用されません。私は何が欠けていますか?私はdeployment.yml
で何も変化していないので、更新は適用されていないと仮定しています。 Kubernetesに私の更新されたイメージをダウンロードさせ、それを展開するためにRollingUpdate
を使うにはどうすればいいですか?
クイックビット詳細:イメージ名の末尾にバージョンを含めることは推奨されていますが、複数のファイルを変更する必要があり、苦痛になることがあります。だから、私たちのgitブランチを現在展開されているものの真実の源として保ち、バージョンを元に戻す必要がある場合はブランチをロールバックするだけでいいです。 –