12章Deployment

ここまで、コンテナとしてアプリケーションをパッケージングし、コンテナを複製し、トラフィックをロードバランスするServiceを使用する方法を見てきました。アプリケーションの個別のインスタンスを作るのにこれらのオブジェクトを使用します。しかし、アプリケーションの新しいバージョンの定期リリースの流れをうまく管理するためには、あまり役に立ちません。PodもReplicaSetも、変更されないコンテナイメージを扱うために作られているためです。

Deploymentオブジェクトは、新しいバージョンのリリースを管理する仕組みです。Deploymentは、デプロイされたアプリケーションをバージョンをまたいで表現します。また、Deploymentを使うと、あるバージョンのコードから次のバージョンのコードへ、簡単に移行できます。この「ロールアウト」のプロセスはカスタマイズ可能で、気の利いたものになっています。個別のPodのアップグレード間隔もユーザが設定できます。また、新しいバージョンのアプリケーションが正常に動作しているか確認するためにヘルスチェックを使用でき、多数のエラーが発生したらデプロイを停止することも可能です。

Deploymentを使うと、ダウンタイムやエラーを発生させずに、新しいバージョンのソフトウェアをシンプルかつ確実にロールアウトできます。Deploymentが実行するソフトウェアのロールアウトは、Kubernetesクラスタ上で動いているDeploymentコントローラによって制御されています。つまり、Deploymentに処理を任せても安全に、確実に処理を続行できます。このため、Deploymentを継続的デリバリのツールやサービスと組み合わせやすくなります。また、プロセスをサーバサイドで動かしている場合には、インターネット接続が不安定なところからでも安全にロールアウト作業ができるようになります。地下鉄に乗っている間に新しいバージョンのソフトウェアをロールアウトすることを考えてみて下さい。Deploymentを使えば、それも安全にできるようになります。 ...

Get 入門 Kubernetes now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.