3章Declarative Deployment(宣言的デプロイ)
Declarative Deployment(宣言的デプロイ)パターンの核心は、KubernetesのDeploymentリソースです。この抽象化概念によって、コンテナの集まりのアップグレードやロールバックのプロセスはカプセル化され、その実行は再実行可能かつ自動的に行われます。
3.1 問題
分離された環境をNamespaceとして自分で設定した上でスケジューラを使うことで、人間の介在を最低限にしながらこれらの環境内にアプリケーションを配置できます。しかし、マイクロサービスの数が増えると、これらのアプリケーションを継続的に更新し、配置し直すことはだんだんと負担にもなってきます。
サービスを次のバージョンにアップグレードするには、新しいバージョンのPodを起動し、古いバージョンのPodを猶予期間を持たせた上で停止し、新しいPodが正常に起動するのを待って動作確認し、何らかの問題が発生したら前のバージョンにロールバックするといった作業が必要です。これらの作業は、ある程度のダウンタイムを許容する代わりに複数のバージョンを同時に動かさないようにするか、ダウンタイムがない代わりに更新プロセスの間2つのバージョンのサービスが動けるようリソース使用量が増えることを許容するか、どちらかの方法で行われます。これらの作業を手動で行うと人為的ミスにつながる場合があり、スクリプトを正しく書くには多大な労力が必要な可能性があるので、どちらの場合もリリースプロセスをボトルネックにしてしまいます。
3.2 解決策
幸いなことに、Kubernetesには自動化されたアプリケーションのアップグレード方法があります。Deploymentの考え方を使えば、どんな更新戦略を使うかや、更新のさまざまな面をチューニングするなど、アプリケーションがどのように更新されるべきかを記述できます。リリースサイクルごとに各マイクロサービスインスタンスに対して複数のDeploymentを行うこと(チームやプロジェクトによりますが、これは数分から数ヶ月かかる場合もあります)を考えているなら、これはKubernetesによって可能になる工数削減ができる自動化の1つです。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access