【Kubernetes】デプロイ戦略についてざっくり理解する

2022.02.15
2024.03.24
Kubernetes
RecreateRollingUpdate

本ページはAmazonアフィリエイトのリンクを含みます。

はじめに

Kubernetesにおけるデプロイ戦略をざっくりまとめてみたいと思います。

デプロイ戦略

ここで紹介するデプロイ戦略は下記になります。

  • ローリングアップデート
  • Recreate
  • ブルーグリーンデプロイ
  • レインボーデプロイ
  • カナリアデプロイ

Kubernetesでは、DeploymentのマニフェストでローリングアップデートとRecreateが選択できます。

ローリングアップデート

ローリングアップデートは、全てのPodが新しいバージョンになるまで1つずつ更新されていきます。

メリットデメリット
・ダウンタイムがゼロ・2つのバージョンが混在
・比較的ゆっくりロールアウト

Kubernetesでは、Deploymentのマニフェストでデプロイ戦略を指定します。ローリングアップデートはデフォルトの設定になっています。

また、maxSurgemaxUnavailableというオプションがあります。アップデート中に超過できるレプリカ数と利用可能なレプリカ数の指定ができます。

unknown link

Recreate

Recreateは、全てのPodを同時に終了し、新しいバージョンのPodを同時に起動します。

メリットデメリット
・異なるバージョンが同時に実行されない・ダウンタイムがある

Kubernetesでは、Deploymentマニフェストの.spec.strategy.typeRecreateを指定することで設定可能です。

unknown link

ブルーグリーンデプロイ

ブルーグリーンデプロイは、新しいバージョンを実行してからトラフィックを切り替えます。

メリットデメリット
・ダウンタイムがゼロ
・異なるバージョンが同時に実行されない
・すぐに旧バージョンに戻せる
・2倍のリソースが必要

Kubernetesでは、PodのLabelを利用してServiceからのトラフィック送信先を指定することで実現できます。

unknown link

レインボーデプロイ

レインボーデプロイは、3つ以上のバージョンが実行される可能性があるブルーグリーンデプロイです。

アプリケーションとの接続が長時間になる場合に利用されます。古いバージョンのアプリケーションの接続がなくなると、そのバージョンを終了します。

メリットデメリット
・ダウンタイムがゼロ
・すぐに旧バージョンに戻せる
・接続が長時間でもアップデート可能
・3倍以上のリソースが必要

Kubernetesでの実装は下記で解説がされています。

GitHub - bdimcheff/rainbow-deploys: 🌈 🌈 🌈

GitHub - bdimcheff/rainbow-deploys: 🌈 🌈 🌈

🌈 🌈 🌈. Contribute to bdimcheff/rainbow-deploys development by creating an account on GitHub.

カナリアデプロイ

カナリアデプロイは、少数の新しいバージョンをデプロイし、問題がなければ徐々に新しいバージョンを増やしていきます。

メリットデメリット
・ダウンタイムがゼロ
・すぐに旧バージョンに戻せる
・新しいバージョンを本番環境で試せる
・様子を見ながら新しいバージョンに移行できる
・ロールアウトまで時間がかかる
・モニタリングの手間がかかる

Kubernetesでは、ブルーグリーンデプロイ同様にLabelを用いて実装します。

【Kubernetes】DeploymentとServiceでカナリアデプロイやってみる

【Kubernetes】DeploymentとServiceでカナリアデプロイやってみる

:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee