Kubernetesデプロイメントを使用し、セマンティック タグ名でコンテナー イメージを参照したいと考えています。例: application:latest
, application:testing
, application:production
.
これを設定するのは簡単imagePullPolicy: Always
で、コンテナ仕様内で、次のような方法で新しいバージョンをすばやくプッシュすることもできます。
$ REPLICAS=$(kubectl get deployment application --template="{{.spec.replicas}}")
$ kubectl scale --replicas=0 deployment application
deployment "application" scaled
$ kubectl scale --replicas=$REPLICAS deployment application
deployment "application" scaled
欠点は、新しいポッドの準備が整う前にすべてのポッドが強制終了されることです。したがって、私はローリングアップデートを開始しようとしています。
1 つの解決策は、セマンティック タグ名を削除し、sth を使用することです。のようにapplication:v123
。しかし、私は自分のスクリプトをシンプルに保ち、セマンティック名を維持したいと考えています。それを行う方法はありますか?
...
編集/更新...これは私のdeployment.yaml
構成がどのように見えるかです:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: application
spec:
containers:
- name: application
image: application:latest
imagePullPolicy: Always
基本的には常に同じままですが、関連するコンテナー イメージはバックグラウンドで更新されます。
...
乾杯