私はKubernetesに非常に慣れていないため、k8s v1.4、Minikube v0.15.0、Spotify maven Dockerプラグインを使用しています。
プロジェクトのビルドプロセスでDockerイメージが作成され、MinikubeのDockerエンジンに直接プッシュされます。
ポッドは、(レプリカセットを使用して)私が作成したデプロイによって作成され、戦略はtype: RollingUpdate
。
私はこれをドキュメントで見ました:
注:Deploymentのポッドテンプレート(つまり、.spec.template)が変更された場合にのみ、Deploymentのロールアウトがトリガーされます。
フローを自動化する簡単な方法/回避策を探しています:ビルドがトリガーされます>新しいDockerイメージがプッシュされます(バージョンが変更されません)>デプロイによってポッドが更新されます>サービスによって新しいポッドが公開されます。
コンテナイメージの名前またはタグを変更しない場合は、次のようにアプリケーションを0にスケーリングし、元のサイズに戻します。
kubectl scale --replicas=0 deployment application
kubectl scale --replicas=1 deployment application
コメントですでに述べたようにImagePullPolicy: Always
は、構成で必要になります。
画像を変更するとき、これが更新する最も簡単な方法であることがわかりました
kubectl set image deployment/application app-container=$IMAGE
イメージを変更しないことには、問題が発生した場合にフォールバックする必要がないというダウンサイトがあります。したがって、開発環境以外で使用することはお勧めしません。
編集:小さなボーナス-前後でスケールを同期させると、見た目が悪くなる可能性があります。お気に入り:
replica_spec=$(kubectl get deployment/applicatiom -o jsonpath='{.spec.replicas}')
kubectl scale --replicas=0 deployment application
kubectl scale --replicas=$replica_spec deployment application
乾杯