このドキュメントでは、SaaS Runtime を使用してリリースをロールアウトする方法について説明します。
SaaS ランタイムでは、ロールアウトを使用して、複数のプロビジョニングされたユニットにわたって更新を有効にできます。ロールアウトは UnitKind に基づいてユニットをターゲットとし、必要に応じて Google Cloud CLI を使用してフィルタ(unit_filter)を適用し、ユニットの特定のサブセットをターゲットにできます。これにより、デプロイされたベース全体でマネージド アップデートが可能になります。ロールバックは、ユニットを以前のリリースにアップグレードすることで実行できます。
単一の特定のユニットに対するオペレーションについては、[ユニットの詳細] ページで使用可能なコントロールを使用します。
始める前に
SaaS サービスを更新する前に、次のことを行う必要があります。
- SaaS ランタイムが有効になっていることを確認します。
- SaaS サービスを作成するために必要な IAM 権限があることを確認します。
- SaaS サービスを作成します。
- UnitKind を作成します。
- Unit を作成してプロビジョニングする。
- 新しい Terraform ブループリントまたは変更された Terraform ブループリントを準備します。
リリースを作成する
SaaS サービスを更新する前に、リリースを作成する必要があります。リリースは、ブループリント パッケージとその関連構成によって定義される SaaS アプリケーションの特定のバージョンを表します。つまり、リリースにはユニットのアップデートが含まれています。
コンソール
SaaS ランタイムに移動します。
[リリース] をクリックします。
[リリース] ページで、[作成] をクリックします。
[リリースの作成] ページで、次の操作を行います。
- [リリース名] ボックスに、リリースの一意の名前を入力します。
- [ユニットの種類] ボックスで、このリリースに関連付けるユニットの種類を選択します。
- [Only upgradeable from (optional)] セクションでは、ユニットをこのリリースにアップグレードできるリリースを必要に応じて選択できます。これにより、アップグレード パスを制御できます。
- [ブループリントの作成] ステップと [ブループリントの保存] ステップで、ブループリントを選択または作成します。ブループリントの作成オプションの詳細については、ブループリントのドキュメントをご覧ください。
[変数(省略可)] セクションで、このリリースの入力変数を設定できます。変数の設定の詳細については、変数のドキュメントをご覧ください。
[作成] をクリックします。
リリースが作成されました。リリースの詳細は、[リリースの詳細] ページで確認できます。このリリースは、ロールアウトを作成するときに参照できます。
gcloud
Google Cloud コンソールを使用してリリースを作成するには:
gcloud beta saas-runtime releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]
次のように置き換えます。
RELEASE_NAME: 作成するリリースの ID。これは、リリースの完全なリソース名の一部になります。BLUEPRINT_PACKAGE_URI: このリリースで使用するブループリント パッケージの URI。ブループリントは、Artifact Registry または別の OCI レジストリでホストされている OCI イメージです。- ブループリント パッケージには、ユニットのプロビジョニングに必要なアーティファクトが含まれています。また、使用されるエンジン(Terraform)とバージョンに関するメタデータも含まれています。
- URI でホスト名を省略すると、デフォルトでリージョンの Artifact Registry パス(
us-east1-docker.pkg.devなど)になります。 - ブループリントの作成の詳細については、ブループリントのドキュメントをご覧ください。
UNIT_KIND: このリリースに対応するユニット種類の ID または完全修飾識別子。リリースを作成すると、UNIT_KIND は変更できなくなります。LOCATION: リリースを作成するロケーション。このフラグは、完全な URI パスが指定されていない場合に、リリース場所のフォールバック値を提供します。デフォルトは、Google Cloud CLI 環境で構成されたロケーションです。LABELS:(省略可)分類のためにリリースに適用するラベル。ラベルは Key-Value ペアです。- キーは小文字で始まり、使用できるのはハイフン、アンダースコア、小文字、数字のみです。
- 値に使用できるのは、ハイフン、アンダースコア、小文字、数字のみです。
- 例:
--labels=environment=staging,team=saas-runtime
UPGRADEABLE_FROM_RELEASES:(省略可)作成する新しいリリースで更新できる既存のリリースを指定するリリース名のカンマ区切りリスト。- このフラグを空のままにすると、このリリースに更新できるリリースに制約がなくなります。
- 指定された場合、このリリースに対するユニット更新リクエストはこの制約を適用します。
INPUT_VARIABLE_DEFAULTS:(省略可)ブループリントに必要な入力変数のデフォルト値。- 変数のデフォルトは、インラインで指定するか、YAML ファイルまたは JSON ファイルを参照して指定できます。
- ここで定義された変数は、ロールアウトの作成時にオーバーライドできます。
変数の設定について詳しくは、変数に関するドキュメントをご覧ください。リリースの詳細については、Release Google Cloud CLI リファレンスをご覧ください。
ロールアウトの種類の作成
ロールアウトを作成する前に、リリースをユニットにデプロイする方法のテンプレートとして機能するロールアウトの種類を作成する必要があります。
コンソール
SaaS ランタイムに移動します。
[ロールアウトの種類] をクリックします。
[ロールアウトの種類] ページで、[作成] をクリックします。
[ロールアウトの種類の作成] ページで、次の操作を行います。
- [ロールアウトの種類名] ボックスに、ロールアウトの種類の名前を入力します。
- [ユニットの種類] ボックスで、リリースをロールアウトするユニットの種類を指定するユニットの種類を選択します。
[ロールアウト戦略] プルダウンで、リリースをユニットにデプロイするために使用する戦略を選択します。
- 1 回に 1 つのロケーション(シンプル): 1 回に 1 つのロケーションを更新します(ソーク時間はなし)。最大 20% のユニットを同時に更新します。
- すべて一度に(シンプル): すべてのロケーションで同時にロールアウトが開始されます(開発環境や緊急事態に最適)。
- 段階的: 複数のロケーションにわたって、更新を割合のバッチで指数関数的に段階的にロールアウトします(ソーク時間あり)。
- プログレッシブ(単一のロケーション): 1 つのロケーション内で問題を検出するために、ソーク時間を延長して、ユニットをパーセンテージ バッチで更新します。
ロールアウト戦略の詳細については、ロールアウト戦略をご覧ください。
[作成] をクリックします。
ロールアウトの種類が作成されました。[ロールアウトの種類の詳細] ページで、ロールアウトの種類のパラメータを表示して編集できます。
gcloud
Google Cloud コンソールを使用してロールアウトの種類を作成するには:
gcloud beta saas-runtime rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT
次のように置き換えます。
ROLLOUT_KIND_NAME: ロールアウトの種類の名前。UNIT_KIND: リリースを適用するユニットを定義します。リリースは、選択したユニット種類のすべてのユニットに適用されます。LOCATION: ロールアウトの種類を作成するロケーション。ROLLOUT_STRATEGY: ロールアウトの種類に対するロールアウト戦略を定義します。値は次のとおりです。Google.Cloud.Simple.OneLocationAtATime: 1 つのロケーションを一度に更新します(ソーク時間はなし)。最大 20% のユニットを同時に更新します。Google.Cloud.Simple.AllAtOnce: すべてのロケーションで同時にロールアウトが開始されます(開発環境や緊急シナリオに最適)。Google.Cloud.Progressive.Gradual.v1: 複数のロケーションにわたって、指数関数的にパーセンテージ バッチでアップデートを段階的にロールアウトします(ソーク時間あり)。Google.Cloud.Progressive.SingleLocation.v1: 1 つの地域内の問題を検出するために、延長されたソーク時間で更新ユニットを割合バッチで更新します。
ロールアウト戦略の詳細については、ロールアウト戦略をご覧ください。
ERROR_BUDGET: エラー予算の構成。失敗したユニットの数がerror_budgetの上限(allowed_count、allowed_ratio*total_unitsで定義)を超えると、ロールアウトは一時停止します。error_budgetが設定されていない場合、SaaS ランタイムは発生したエラーの数に関係なく、すべてのユニットの更新を試みます。UNIT_FILTER: ユニットに対して使用される CEL 形式のフィルタ文字列。フィルタが適用され、対象となるユニットの人口が決定されます。このフィルタは、ロールアウトの範囲を縮小することのみが可能です。ロールアウトの範囲を拡大することはできません。UPDATE_UNIT_KIND_DEFAULT: 単位の種類を更新するための構成。デフォルトでは、ロールアウトの開始時にユニットの種類が更新されます。値は次のとおりです。UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: ユニットの種類の更新戦略が指定されていません。UPDATE_UNIT_KIND_STRATEGY_ON_START: ロールアウトの開始時にユニット種類の戦略を更新します。UPDATE_UNIT_KIND_STRATEGY_NEVER: 単位の種類戦略を更新しません。
詳細については、RolloutKind Google Cloud CLI リファレンスをご覧ください。
エラー バジェット機能
SaaS ランタイムには、セーフガードとしてエラー バジェット機能(RolloutKind の ErrorBudget)が含まれています。これにより、ユニットの更新失敗数(インフラストラクチャ アプリケーションなど)または割合が構成されたしきい値を超えた場合に、ロールアウトを自動的に一時停止できます。これにより、更新中に発生する可能性のある問題の影響を抑えることができます。
ロールアウトの作成
ロールアウトの種類を作成したら、ユニットの更新に使用するリリースを指定するロールアウトを作成できます。
ロールアウトが作成されると、SaaS ランタイムはユニットの種類で定義された戦略に従ってユニットを更新します。
コンソール
SaaS ランタイムに移動します。
[ロールアウト] をクリックします。
[ロールアウト リスト] ページで、[作成] をクリックします。
[ロールアウトの作成] ページで、次の操作を行います。
- [ロールアウトの種類] ボックスで、指定したユニットにリリースをロールアウトする方法の詳細を示すロールアウトの種類を選択します。
- [リリース] ボックスで、ユニットの更新に使用するリリースを指定します。
- [ロールアウト名] ボックスに、ロールアウトの名前を入力します。
[作成] をクリックします。
ロールアウトが作成されました。
[グローバル ロールアウトの詳細] ページでは、ロールアウトの状態、ロールアウトの進行状況(ユニット数別)、ロールアウトの失敗など、ロールアウトの詳細をモニタリングできます。
gcloud
Google Cloud コンソールを使用してロールアウトを作成するには:
gcloud beta saas-runtime rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION
次のように置き換えます。
ROLLOUT_NAME: ロールアウトの名前。ROLLOUT_KIND_NAME: リリースをユニットに適用するために使用するロールアウトの種類を定義します。リリースは、ロールアウトの種類で定義されたユニットの種類のすべてのユニットに適用されます。RELEASE_NAME: ユニットにデプロイするリリース バイナリを定義します。LOCATION: ロールアウトを作成するロケーション。
詳細については、Rollout Google Cloud CLI リファレンスをご覧ください。
次のステップ
- SaaS ランタイムの詳細については、SaaS ランタイムの概要をご覧ください。
- チュートリアルを試すには、SaaS ランタイムを使用して VM をデプロイするをご覧ください。
- サービス アカウントの使用方法と、これらのアカウントにきめ細かい権限を付与する方法については、SaaS Runtime サービス アカウントをご覧ください。