2

私はいくつかのガイドに従ってきました。私は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を使うにはどうすればいいですか?

+0

クイックビット詳細:イメージ名の末尾にバージョンを含めることは推奨されていますが、複数のファイルを変更する必要があり、苦痛になることがあります。だから、私たちのgitブランチを現在展開されているものの真実の源として保ち、バージョンを元に戻す必要がある場合はブランチをロールバックするだけでいいです。 –

答えて

2

ラベルなどのフィールドを変更して、展開を強制的に更新することができます。だから、私の場合、私はちょうど私のCIスクリプトの最後にこれを追加しました:

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

我々は最近、我々はGitOpsアプローチを呼び出すアプローチがGKEで実現することができる方法のtechnical overviewを公開しています。

Githubからコード変更を取り出してビルドを実行するようにGCRビルダーを設定するだけで、ウィーブクラウドエージェントをクラスタにインストールし、YAMLファイルが保存されているリポジトリに接続すると、エージェントは新しいイメージでリポジトリを更新し、クラスタに変更を適用します。より高レベルの概要については

、以下を参照してください。


免責事項:私はKubernetesの貢献者とWeaveworksの従業員をしています。私たちは、人々がKubernetesでより早く製品を手に入れるためのオープンソースツールと商用ツールを構築します。

関連する問題