Skip to content
Latchkey

Kubernetes の Deployment とは?rolling update を解説

Deployment は、選んだ数の同一の pod を稼働させ続け、そのイメージが変わったときに安全な rolling update をオーケストレーションする Kubernetes オブジェクトです。

pod を手作業で管理することはめったにありません。代わりに「この pod spec のレプリカを N 個実行せよ」と述べる Deployment を宣言し、Kubernetes がそれを維持します。イメージを変更すると、Deployment は制御された rollout を実行し - うまくいかなければ rollback できます。stateless なアプリの主力オブジェクトです。

何を管理するか

Deployment は ReplicaSet を所有し、それが pod を所有します。replicas: 3 と pod テンプレートを設定すると、Kubernetes は一致する pod が 3 つ存在することを保証し、死んだものはすべて再作成します。

rolling update

イメージを変更すると、Deployment は古い pod を新しいものへ徐々に置き換えます - 新しい pod を立ち上げ、readiness を待ち、それから古いものを退役させます。maxUnavailablemaxSurge のような設定が rollout の積極性を制御します。

rollback

Deployment はリビジョン履歴を保持するため、新しい rollout が不調なら kubectl rollout undo が以前の動作するバージョンに戻します - CD にとって極めて重要なセーフティネットです。

最小限の spec

Deployment の YAML は spec.replicasselector、そして pod(そのコンテナとイメージ)を記述する template を設定します。kubectl apply -f deploy.yaml で適用すると現実になります。

CD の対象としての Deployment

継続的デリバリは通常、Deployment のイメージを CI がちょうどビルドして push した digest に更新します。あとは Kubernetes が rollout を扱います。readiness probe は、実際に準備ができた pod にのみトラフィックが届くことを保証します。

重要なポイント

  • Deployment は N 個のレプリカ pod を維持し、rolling update を扱います。
  • リビジョン履歴を保持するため、rollback は 1 つのコマンドで済みます。
  • CD は Deployment を対象とし、そのイメージを新しくビルドされたものに更新します。

関連ガイド