Automation Pipelines
のアプリケーションをブルーグリーン展開に展開する方法

ブルーグリーンは、2 台の Docker ホストを使用して両者を同じように Kubernetes クラスタに展開および構成する展開モデルです。ブルーグリーン展開モデルで
Automation Pipelines
のパイプラインがアプリケーションを展開するようにすると、ご使用の環境のダウンタイムを短縮できます。
  • AWS 上の動作中の Kubernetes クラスタにアクセスできることを確認します。
  • ブルーグリーン展開環境を設定し、ブルー インスタンスとグリーン インスタンスが同一になるように設定していることを確認します。
  • AWS 上の Kubernetes クラスタにアプリケーション イメージを展開する
    Automation Pipelines
    の Kubernetes エンドポイントを作成します。
  • CICD スマート パイプライン テンプレートの使用について理解する必要があります。スマート パイプライン テンプレートを使用する前の Automation Pipelines での CICD ネイティブ ビルドの計画を参照してください。
展開モデルのブルー インスタンスとグリーン インスタンスは、それぞれ異なる目的を果たします。一度に 1 つのインスタンスのみが、アプリケーションを展開するライブ トラフィックを受け入れます。各インスタンスは、一定の時刻にそのトラフィックを受け入れます。ブルー インスタンスはアプリケーションの最初のバージョンを受け取り、グリーン インスタンスは 2 番目のバージョンを受け取ります。
ブルーグリーン環境のロード バランサによって、アプリケーションを展開するときにライブ トラフィックがどのルートをたどるかが決まります。ブルーグリーン モデルを使用すると、環境は動作し続け、ユーザーはダウンタイムがあっても気づかず、パイプラインはアプリケーションを本番環境に継続的に統合して展開します。
Automation Pipelines
でパイプラインを作成すると、ブルーグリーン展開モデルが 2 つのステージで表されます。開発用のステージと本番用のステージです。
Automation Pipelines
パイプライン ワークスペースでは、継続的インテグレーション タスクとカスタム タスクで Docker と Kubernetes がサポートされます。
ワークスペースの構成については、パイプライン ワークスペースの構成を参照してください。
ブルーグリーン展開の開発ステージ タスク
タスク タイプ
タスク
Kubernetes
ブルーグリーン展開用の名前空間を作成します。
Kubernetes
Docker Hub のプライベート キーを作成します。
Kubernetes
アプリケーションの展開に使用するサービスを作成します。
Kubernetes
ブルー展開を作成します。
ポーリング
ブルー展開を確認します。
Kubernetes
名前空間を削除します。
ブルーグリーン展開用の本番ステージ タスク
タスク タイプ
タスク
Kubernetes
グリーンは、ブルーからサービスの詳細を取得します。
Kubernetes
グリーン レプリカ セットの詳細を取得します。
Kubernetes
グリーン展開を作成し、プライベート キーを使用してコンテナ イメージをプルします。
Kubernetes
サービスを更新します。
ポーリング
本番 URL で展開が成功したことを確認します。
Kubernetes
ブルー展開を終了します。
Kubernetes
ブルー展開を削除します。
独自のブルーグリーン展開モデルにアプリケーションを展開するには、
Automation Pipelines
でパイプラインを作成して 2 つのステージを含めます。最初のステージにはブルー インスタンスにアプリケーションを展開するブルー タスクを含め、2 番目のステージにはグリーン インスタンスにアプリケーションを展開するグリーン タスクを含めます。
パイプラインの作成には、CICD スマート パイプライン テンプレートを使用できます。自動的にパイプラインのステージとタスクを作成するもので、展開を選択できます。
パイプラインを手動で作成する場合は、パイプライン ステージを計画する必要があります。例については、タスクの手動追加を行う前の Automation Pipelines での CICD ネイティブ ビルドの計画を参照してください。
この例では、CICD スマート パイプライン テンプレートを使用してブルーグリーン パイプラインを作成します。
  1. パイプライン
    新しいパイプライン
    スマート テンプレート
    CI/CD テンプレート
    の順にクリックします。
  2. CICD スマート パイプライン テンプレートの CI 部分の情報を入力し、
    次へ
    をクリックします。
  3. スマート パイプライン テンプレートの CD 部分を入力します。
    1. アプリケーション展開の環境を選択します。たとえば、
      開発
      本番
      です。
    2. パイプラインによる展開で使用するサービスを選択します。
    3. [展開] 領域で、開発環境と本番環境のクラスタ エンドポイントを選択します。
    4. 本番展開モデルの場合、
      ブルーグリーン
      を選択し、
      作成
      をクリックします。
    スマート パイプライン テンプレートで、サービスと展開を選択し、本番展開モデルの [ブルーグリーン] をクリックします。
完了です。スマート パイプライン テンプレートを使用して、AWS 上の Kubernetes 本番クラスタ内のブルーグリーン インスタンスにアプリケーションを展開するパイプラインを作成しました。
ブルーグリーン展開タスクのサンプルの YAML コード
ブルーグリーン展開の Kubernetes パイプライン タスクに表示される YAML コードは、名前空間、サービス、展開を作成する次の例のようになります。プライベート所有のリポジトリからイメージをダウンロードする必要がある場合は、Docker 構成の [シークレット] を含むセクションを YAML ファイルに含める必要があります。スマート パイプライン テンプレートを使用する前の Automation Pipelines での CICD ネイティブ ビルドの計画の CD 部分を参照してください。
スマート パイプライン テンプレートによってパイプラインが作成されたら、それぞれの展開での必要に応じてタスクを変更できます。
サンプルの名前空間を作成する YAML コード:
apiVersion: v1 kind: Namespace metadata: name: pipelines-82855 namespace: pipelines-82855
サンプルのサービスを作成する YAML コード:
apiVersion: v1 kind: Service metadata: labels: app: pipelines-demo name: pipelines-demo namespace: bluegreen-799584 spec: minReadySeconds: 0 ports: - port: 80 selector: app: pipelines-demo tier: frontend type: LoadBalancer
サンプルの展開を作成する YAML コード:
apiVersion: extensions/v1 kind: Deployment metadata: labels: app: pipelines-demo name: pipelines-demo namespace: bluegreen-799584 spec: minReadySeconds: 0 replicas: 1 selector: matchLabels: app: pipelines-demo tier: frontend template: metadata: labels: app: pipelines-demo tier: frontend spec: containers: - image: ${input.image}:${input.tag} name: pipelines-demo ports: - containerPort: 80 name: pipelines-demo imagePullSecrets: - name: jfrog-2 minReadySeconds: 0
Automation Pipelines
の使用方法の詳細については、Automation Pipelines を使用するためのチュートリアルを参照してください。
デプロイをロールバックする場合は、Automation Pipelines で展開をロールバックする方法を参照してください。
詳細については、Getting Started with
VMware Aria Automation
のその他のリソースを参照してください。