ブルーグリーンは、2 台の Docker ホストを使用して両者を同じように Kubernetes クラスタに展開および構成する展開モデルです。ブルーグリーン展開モデルで VMware Code Stream のパイプラインがアプリケーションを展開するようにすると、ご使用の環境のダウンタイムを短縮できます。

展開モデルのブルー インスタンスとグリーン インスタンスは、それぞれ異なる目的を果たします。一度に 1 つのインスタンスのみが、アプリケーションを展開するライブ トラフィックを受け入れます。各インスタンスは、一定の時刻にそのトラフィックを受け入れます。ブルー インスタンスはアプリケーションの最初のバージョンを受け取り、グリーン インスタンスは 2 番目のバージョンを受け取ります。

ブルーグリーン環境のロード バランサによって、アプリケーションを展開するときにライブ トラフィックがどのルートをたどるかが決まります。ブルーグリーン モデルを使用すると、環境は動作し続け、ユーザーはダウンタイムがあっても気づかず、パイプラインはアプリケーションを本番環境に継続的に統合して展開します。

VMware Code Stream でパイプラインを作成すると、ブルーグリーン展開モデルが 2 つのステージで表されます。開発用のステージと本番用のステージです。

表 1. ブルーグリーン展開の開発ステージ タスク
タスク タイプ タスク
Kubernetes ブルーグリーン展開用の名前空間を作成します。
Kubernetes Docker Hub のプライベート キーを作成します。
Kubernetes アプリケーションの展開に使用するサービスを作成します。
Kubernetes ブルー展開を作成します。
ポーリング ブルー展開を確認します。
Kubernetes 名前空間を削除します。
表 2. ブルーグリーン展開用の本番ステージ タスク
タスク タイプ タスク
Kubernetes グリーンは、ブルーからサービスの詳細を取得します。
Kubernetes グリーン レプリカ セットの詳細を取得します。
Kubernetes グリーン展開を作成し、プライベート キーを使用してコンテナ イメージをプルします。
Kubernetes サービスを更新します。
ポーリング 本番 URL で展開が成功したことを確認します。
Kubernetes ブルー展開を終了します。
Kubernetes ブルー展開を削除します。

独自のブルーグリーン展開モデルにアプリケーションを展開するには、VMware Code Stream でパイプラインを作成して 2 つのステージを含めます。最初のステージにはブルー インスタンスにアプリケーションを展開するブルー タスクを含め、2 番目のステージにはグリーン インスタンスにアプリケーションを展開するグリーン タスクを含めます。

パイプラインの作成には、CICD スマート パイプライン テンプレートを使用できます。自動的にパイプラインのステージとタスクを作成するもので、展開を選択できます。

パイプラインを手動で作成する場合は、パイプライン ステージを計画する必要があります。例については、タスクの手動追加を行う前の Code Stream での CICD ネイティブ ビルドの計画を参照してください。

この例では、CICD スマート パイプライン テンプレートを使用してブルーグリーン パイプラインを作成します。

前提条件

  • AWS 上の動作中の Kubernetes クラスタにアクセスできることを確認します。
  • ブルーグリーン展開環境を設定し、ブルー インスタンスとグリーン インスタンスが同一になるように設定していることを確認します。
  • AWS 上の Kubernetes クラスタにアプリケーション イメージを展開する VMware Code Stream の Kubernetes エンドポイントを作成します。
  • CICD スマート パイプライン テンプレートの使用について理解する必要があります。スマート パイプライン テンプレートを使用する前の Code Stream での CICD ネイティブ ビルドの計画を参照してください。

手順

  1. [パイプライン] > [新しいパイプライン] > [スマート テンプレート] > [CI/CD テンプレート] の順にクリックします。
  2. CICD スマート パイプライン テンプレートの CI 部分の情報を入力し、[次へ] をクリックします。
  3. スマート パイプライン テンプレートの CD 部分を入力します。
    1. アプリケーション展開の環境を選択します。たとえば、[開発][本番] です。
    2. パイプラインによる展開で使用するサービスを選択します。
    3. [展開] 領域で、開発環境と本番環境のクラスタ エンドポイントを選択します。
    4. 本番展開モデルの場合、[ブルーグリーン] を選択し、[作成] をクリックします。

    CICD スマート パイプライン テンプレートでのブルーグリーン展開の選択。

結果

完了です。スマート パイプライン テンプレートを使用して、AWS 上の Kubernetes 本番クラスタ内のブルーグリーン インスタンスにアプリケーションを展開するパイプラインを作成しました。

例: ブルーグリーン展開タスクのサンプルの YAML コード

ブルーグリーン展開の Kubernetes パイプライン タスクに表示される YAML コードは、次の例のようになります。スマート パイプライン テンプレートによってパイプラインが作成されたら、それぞれの展開での必要に応じてタスクを変更できます。

サンプルの名前空間を作成する YAML コード:

apiVersion: v1
kind: Namespace
metadata:
  name: codestream-82855
  namespace: codestream-82855

サンプルのサービスを作成する YAML コード:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  ports:
  - port: 80
  selector:
    app: codestream-demo
    tier: frontend
  type: LoadBalancer

サンプルの展開を作成する YAML コード:

apiVersion: extensions/v1
kind: Deployment
metadata:
  labels:
    app: codestream-demo
  name: codestream-demo
  namespace: bluegreen-799584
spec:
  minReadySeconds: 0
  replicas: 1
  selector:
    matchLabels:
      app: codestream-demo
      tier: frontend
  template:
    metadata:
      labels:
        app: codestream-demo
        tier: frontend
    spec:
      containers:
      - image: ${input.image}:${input.tag}
        name: codestream-demo
        ports:
        - containerPort: 80
          name: codestream-demo
      imagePullSecrets:
      - name: jfrog-2
      minReadySeconds: 0

次のタスク

VMware Code Stream の使用方法の詳細については、VMware Code Stream を使用するためのチュートリアルを参照してください。

デプロイをロールバックする場合は、VMware Code Stream で展開をロールバックする方法を参照してください。

この他の参考情報については、VMware Code Stream 管理者および開発者向けのその他のリソースを参照してください。