Member-only story
K8Sをプロ並みにデプロイする
この記事では、Kubernetes (K8s) のデプロイの概念と一般的な戦略について掘り下げ、それぞれのメリットとデメリットについて見ていきます。適切なデプロイメント戦略を知れば、ダウンタイムを最小限に抑え、カスタマーエクスペリエンスを向上させ、アプリケーションをリリースする際の信頼性を向上させることができます。
Kubernetesのデプロイメント戦略とは?
K8sデプロイメントとは、通常YAMLファイルで構成される宣言文で、アプリケーションのライフサイクルとそのアプリケーションの更新をどのように適用するかを定義するものです。
K8sクラスタにアプリケーションをデプロイするとき、選択したデプロイメント戦略によって、それらのアプリケーションが古いものから新しいバージョンにアップデートされる方法が決まります。ダウンタイムを伴うものや、テストの概念を導入し、ユーザ分析を可能にするものもあります。この投稿では、一般的に使用されている2つの基本的なK8sデプロイメント戦略を紹介します。
- レクリエーション
- ローリング
以下の3つの戦略は、トラフィックの流れを様々な方法で制御できるため、「高度なデプロイ戦略」と考えられています。
K8sはデフォルトでローリングデプロイメント戦略を採用していますが、これが適切でないユースケースもあります。それでは、それぞれについて詳しく説明します。
- ブルー/グリーン
- カナリア
- A/B
デプロイメントの生成
デプロイメントを再作成すると、すべてのPodが終了し、新しいバージョンに置き換わります。これは、古いバージョンのアプリケーションと新しいバージョンのアプリケーションを同時に実行できないような状況では便利です。この方法によって発生するダウンタイムの時間は、アプリケーションがシャットダウンして起動し直すまでにかかる時間に関係してします。完全に置き換えられるので、アプリケーションの状態は完全に更新されます。
マニフェストファイルの Spec: セクションの例は、次のようになります。
spec:
replicas: 10
strategy:
type: Recreate
ローリングデプロイメント
ローリングデプロイは、クラスタのダウンタイムを短縮するために設計された、K8S…