2017-10-25 10 views
1

Googleのクラウド登録に画像をプッシュすることができますが、クラスタをローリングアップグレードしようとすると何も起こりません。Google Container EngineへのCircleciデプロイ

私は自分のポッドをチェックし、再起動しません。

私はローリング・アップグレードを強制的にコマンドを欠けていると思うが、私はサークルのCIドキュメントウィッヒに助けを見つけることができませんが、本当に低いです:https://circleci.com/docs/2.0/google-container-engine/

私circle.yml:

version: 2 

jobs: 
    build: 
    docker: 
     - image: google/cloud-sdk:latest 
    steps: 

     - checkout 

     - run: 
      name: Install Docker client 
      command: | 
       set -x 
       VER="17.03.0-ce" 
       curl -L -o /tmp/docker-$VER.tgz https://get.docker.com/builds/Linux/x86_64/docker-$VER.tgz 
       tar -xz -C /tmp -f /tmp/docker-$VER.tgz 
       mv -f /tmp/docker/* /usr/bin 

     - run: 
      name: Install Docker Compose 
      command: | 
       set -x 
       curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /tmp/docker-compose 
       mv -f /tmp/docker-compose /usr/local/bin/docker-compose 
       chmod +x /usr/local/bin/docker-compose 

     - type: setup-docker-engine 

     - run: 
      name: Build Docker image 
      command: | 
       docker build -t eu.gcr.io/${GOOGLE_PROJECT_ID}/gcp-test:latest . 

     - run: 
      name: Dump Google Cloud Credentials to file 
      command: | 
       echo ${GOOGLE_AUTH} > ${HOME}/gcp-key.json 
       gcloud auth activate-service-account --key-file ${HOME}/gcp-key.json 
       gcloud --quiet config set project ${GOOGLE_PROJECT_ID} 
       gcloud --quiet config set compute/zone ${GOOGLE_COMPUTE_ZONE} 
       gcloud --quiet container clusters get-credentials ${GOOGLE_CLUSTER_NAME} 

     - run: 
      name: Push the image to google registery 
      command: | 
       gcloud docker -- push eu.gcr.io/${GOOGLE_PROJECT_ID}/gcp-test:latest 

     - run: 
      name: Deploy image to the gc cluster 
      command: | 
       kubectl apply -f deployment.yml 
       kubectl apply -f service.yml 
       kubectl set image deployment/solive-deployment node-app=eu.gcr.io/${GOOGLE_PROJECT_ID}/gcp-test:latest 
       kubectl get deployments 
       kubectl get pods 

答えて

0

kubectl apply -f deployment.ymlを実行すると、ポッドは再起動しませんが、実行中のイメージが更新されます(コンテナは停止し、新しいイメージで開始されます)。

私の経験では、サービスを更新する必要はありませんか、またはset imageに更新する必要はありません。

私がKubernetesの専門家から遠く離れているので、私の答えは当然のことではありません。

0

イメージを強制的に復元するソリューションは、各ビルド中にポッドテンプレートのハッシュを変更することです。これは、ビルド中に変更された環境変数を追加することによって達成することができます。

deployment.yaml

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: demo 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: demo 
    spec: 
     containers: 
     - name: demo 
     image: registry.example.com/apps/demo:master 
     imagePullPolicy: Always 
     env: 
     - name: FOR_GODS_SAKE_PLEASE_REDEPLOY 
      value: 'THIS_STRING_IS_REPLACED_DURING_BUILD' 

デプロイ:オリジナルの答えに

sed -ie "s/THIS_STRING_IS_REPLACED_DURING_BUILD/$(date)/g" deployment.yml 
kubectl apply -f deployment.yml 

全クレジット - https://github.com/kubernetes/kubernetes/issues/33664#issuecomment-292895327

関連する問題