Blue/Green デプロイを作成してステージングする

このドキュメントでは、Cloud SQL のブルーカーン デプロイを作成してステージングし、メジャー バージョンのアップグレードや構成変更を行う方法について説明します。

始める前に

Blue/Green デプロイを作成してステージングするには、必要なロールがあり、ソース インスタンスがデプロイの前提条件を満たしていることを確認します。

必要なロールと権限

Blue/Green デプロイの作成とステージングに必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • Cloud SQL 編集者(roles/cloudsql.editor)
  • Cloud SQL 管理者(roles/cloudsql.admin)

カスタムロールの場合は、次の権限があることを確認してください。

  • cloudsql.blueGreenDeployments.create
  • cloudsql.blueGreenDeployments.get
  • cloudsql.instances.get
  • cloudsql.instances.create
  • cloudsql.operations.get

Cloud SQL の IAM ロールと権限の詳細については、ロールと権限をご覧ください。

インスタンスの前提条件

Blue/Green デプロイを作成する前に、本番環境(Blue)インスタンスが次の要件を満たしていることを確認します。

  1. データベース エンジンとバージョン: インスタンスで Cloud SQL for MySQL バージョン 5.7、8.0、または 8.4 を実行する必要があります。バージョン 8.0.18 はサポートされていません。メジャー バージョンのアップグレードでは、バージョン 8.0 から 8.4 にアップグレードできます。
  2. バイナリ ロギングと自動バックアップ: グリーン環境への継続的な論理レプリケーションを確立するには、ブルー インスタンスでバイナリ ロギングと自動バックアップを有効にする必要があります。
  3. インスタンスのステータス: ブルー インスタンスは RUNNING 状態である必要があります。進行中のオペレーションや競合するメンテナンスの時間枠がないことが必要です。
  4. サポートされていない機能: インスタンスで、Blue/Green デプロイでサポートされていない機能が使用されていないことを確認します。これには、次の機能が含まれます。

  5. 最新のメンテナンス バージョン: Blue/Green デプロイを作成する前に、インスタンスで最新のメンテナンス バージョンを実行する必要があります。詳細については、セルフサービス メンテナンスをご覧ください。

  6. ネットワーク アーキテクチャ: インスタンスは新しいネットワーク アーキテクチャを使用する必要があります。古いネットワーク アーキテクチャを使用するインスタンスはサポートされていません。

デプロイの作成をトリガーすると、Cloud SQL は一連の自動事前チェックを自動的に実行して、レプリケーションの互換性とフラグを検証します。メジャー バージョンのアップグレードの場合、Cloud SQL はソース インスタンスでメジャー バージョン アップグレードの事前チェック API を実行して、ワークフローを続行する前にアップグレードの準備状況を検証します。事前チェックが失敗すると、デプロイの作成が停止し、オペレーション ステータスにエラーが返されます。

Blue/Green デプロイを作成する

メジャー バージョン アップグレードを実行する目的で Blue/Green デプロイを作成することも、ハードウェアまたはフラグの更新をステージングする目的で作成することもできます。

コンソール

  1. Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [構成] セクションで、[Blue/Green デプロイを作成] をクリックします。
  4. [Blue/Green デプロイを作成] ページの [デプロイ情報] セクションで、[デプロイ名] フィールドにデプロイの一意の名前を入力します。
  5. [デプロイのユースケース] リストで、次のいずれかのオプションを選択します。
    • オプション A(メジャー バージョンのアップグレード): スイッチオーバー前にグリーン インスタンスでメジャー バージョンのアップグレードをステージングしてテストするには、[メジャー バージョンのアップグレード] を選択します。[ターゲット データベースのバージョン] リストで、ターゲット データベースのバージョン(MySQL 8.4 など)を選択します。

      インテントを使用してデプロイを作成すると、Cloud SQL は、グリーン インスタンスを作成する前に、オペレーションの一部としてメジャー バージョン アップグレードの事前チェックを自動的に実行します。または、デプロイを作成する前にメジャー バージョン アップグレードの事前チェックを実行して、アップグレードの阻害要因を特定することをおすすめします。

    • オプション B(デフォルト): 構成またはハードウェアの変更をテストするために、ソース インスタンスと同じデータベース バージョンでグリーン ステージング環境を作成するには、[デフォルト] を選択します。
  6. [作成] をクリックします。

gcloud

gcloud を使用して Blue/Green デプロイを作成するには、blue-green-deployments create コマンドを実行します。

オプション A: インテントを使用して作成する(メジャー バージョンのアップグレード)

インテントを使用してデプロイを作成すると、Cloud SQL は、グリーン インスタンスを作成する前に、オペレーションの一部としてメジャー バージョン アップグレードの事前チェックを自動的に実行します。または、デプロイを作成する前に、ブルー インスタンスでメジャー バージョンのアップグレードの事前チェックを実行して、アップグレードの阻害要因を特定することもできます。

gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \
  --source-instance=SOURCE_INSTANCE_ID \
  --target-database-version=TARGET_DATABASE_VERSION \
  --region=REGION \
  --async

次のように置き換えます。

  • DEPLOYMENT_NAME: デプロイの一意の名前。
  • SOURCE_INSTANCE_ID: ブルーのソース インスタンスの名前。
  • TARGET_DATABASE_VERSION: ターゲット バージョン(例: MYSQL_8_4)。
  • REGION: ブルー インスタンスの Google Cloud リージョン。

オプション B: インテントなしで作成する(ハードウェアまたは構成)

--target-database-version フラグを省略して、Blue インスタンスと同じデータベース バージョンで Green 環境をプロビジョニングします。

gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \
  --source-instance=SOURCE_INSTANCE_ID \
  --region=REGION \
  --async

Blue/Green デプロイの作成には数分かかります。特に、メジャー バージョンのアップグレードを行う場合は時間がかかります。オペレーションに予想より時間がかかっていることを示すメッセージが表示される場合があります。このメッセージは無視するか、gcloud sql operations wait コマンドを実行してメッセージを閉じ、オペレーションが完了するまで待ちます。

gcloud sql operations wait OPERATION_ID

OPERATION_ID は、コマンドによって返された、またはメッセージに表示されたオペレーション ID に置き換えます。

REST v1

Cloud SQL Admin API を使用して Blue/Green デプロイを作成するには、blueGreenDeployments.create メソッドに POST リクエストを送信します。

オプション A: インテントを使用して作成する(メジャー バージョンのアップグレード)

インテントを使用してデプロイを作成すると、Cloud SQL は、グリーン インスタンスを作成する前に、オペレーションの一部としてメジャー バージョン アップグレードの事前チェックを自動的に実行します。または、デプロイを作成する前に、ブルー インスタンスでメジャー バージョンのアップグレードの事前チェックを実行して、アップグレードの阻害要因を特定することもできます。

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
  "sourceInstance": "SOURCE_INSTANCE_ID",
  "requestedConfig": {
    "databaseVersion": "TARGET_DATABASE_VERSION"
  }
}

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: ブルー インスタンスの Google Cloud リージョン。
  • DEPLOYMENT_NAME: デプロイの一意の名前。
  • SOURCE_INSTANCE_ID: ブルーのソース インスタンスの名前。
  • TARGET_DATABASE_VERSION: ターゲット データベースのバージョン(例: MYSQL_8_4)。

オプション B: インテントなしで作成する(ハードウェアまたは構成)

requestedConfig フィールドを省略して、Blue インスタンスと同じデータベース バージョンで Green 環境をプロビジョニングします。

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
  "sourceInstance": "SOURCE_INSTANCE_ID"
}

REST v1beta4

Cloud SQL Admin API を使用して Blue/Green デプロイを作成するには、blueGreenDeployments.create メソッドに POST リクエストを送信します。

オプション A: インテントを使用して作成する(メジャー バージョンのアップグレード)

インテントを使用してデプロイを作成すると、Cloud SQL は、グリーン インスタンスを作成する前に、オペレーションの一部としてメジャー バージョン アップグレードの事前チェックを自動的に実行します。または、デプロイを作成する前に、ブルー インスタンスでメジャー バージョンのアップグレードの事前チェックを実行して、アップグレードの阻害要因を特定することもできます。

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
  "sourceInstance": "SOURCE_INSTANCE_ID",
  "requestedConfig": {
    "databaseVersion": "TARGET_DATABASE_VERSION"
  }
}

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: ブルー インスタンスの Google Cloud リージョン。
  • DEPLOYMENT_NAME: デプロイの一意の名前。
  • SOURCE_INSTANCE_ID: ブルーのソース インスタンスの名前。
  • TARGET_DATABASE_VERSION: ターゲット データベースのバージョン(例: MYSQL_8_4)。

オプション B: インテントなしで作成する(ハードウェアまたは構成)

requestedConfig フィールドを省略して、Blue インスタンスと同じデータベース バージョンで Green 環境をプロビジョニングします。

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
  "sourceInstance": "SOURCE_INSTANCE_ID"
}

デプロイ ステータスをモニタリングする

作成は長時間実行オペレーション(LRO)です。ステージング中に、Cloud SQL は Green インスタンスをプロビジョニングし、アップグレードして(メジャー バージョンのアップグレードがリクエストされた場合)、継続的な論理レプリケーションを開始します。

Blue/Green デプロイの進行状況とステータスを確認します。

コンソール

  1. Google Cloud コンソールで、Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [Blue/Green デプロイのステータス] カードを見つけて、デプロイのステータスを確認します。
  4. プロビジョニング タスクと進行状況の詳細を表示するには、[詳細] をクリックして [デプロイの概要] ページを開きます。

gcloud

gcloud を使用して Blue/Green デプロイの進行状況とステータスを確認するには、blue-green-deployments describe コマンドを実行します。

gcloud beta sql blue-green-deployments describe DEPLOYMENT_NAME \
  --region=REGION

次のように置き換えます。

  • DEPLOYMENT_NAME: Blue/Green デプロイの名前。
  • REGION: デプロイが作成された Google Cloud リージョン。

作成オペレーションが完了するまで待機するには、gcloud sql operations wait コマンドを実行します。

gcloud sql operations wait OPERATION_ID

OPERATION_ID は、作成オペレーションの ID に置き換えます。

REST v1

Cloud SQL Admin API を使用して Blue/Green デプロイの進行状況とステータスを確認するには、blueGreenDeployments.get メソッドに GET リクエストを送信します。

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments/DEPLOYMENT_NAME

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: デプロイが作成された Google Cloud リージョン。
  • DEPLOYMENT_NAME: Blue/Green デプロイの名前。

REST v1beta4

Cloud SQL Admin API を使用して Blue/Green デプロイの進行状況とステータスを確認するには、blueGreenDeployments.get メソッドに GET リクエストを送信します。

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
  locations/REGION/
  blueGreenDeployments/DEPLOYMENT_NAME

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • REGION: デプロイが作成された Google Cloud リージョン。
  • DEPLOYMENT_NAME: Blue/Green デプロイの名前。

コマンド出力または Google Cloud コンソールで、state フィールドをモニタリングして、デプロイのライフサイクルを追跡します。

  • PROVISIONING: グリーン インスタンスが作成され、アップグレード(リクエストされた 場合)され、継続的な論理レプリケーションに接続されます。
  • SWITCHOVER_READY: 初期レプリケーションが完了し、継続的な論理レプリケーションがアクティブになっています。デプロイは、検証、テスト、切り替えの準備が整っています。
  • SWITCHOVER_NOT_READY: デプロイはプロビジョニングされていますが、スイッチオーバーを開始できません(たとえば、レプリケーションが破損している場合や、errorDetail で問題が報告されている場合)。

デプロイのライフサイクルのすべてのフェーズの詳細については、デプロイのライフサイクルと状態をご覧ください。

デプロイの状態が SWITCHOVER_READY に変わるまで待ってから、デプロイの説明、アプリケーション ワークロードの検証、スイッチオーバーの開始に進みます。

次のステップ