このドキュメントでは、SaaS ランタイムを使用してリリースをロールアウトする方法について説明します。
SaaS ランタイムを使用すると、ロールアウトを使用して、プロビジョニングされた複数のユニットにわたって更新を行うことができます。ロールアウトは、ユニットの
UnitKind に基づいてユニットをターゲットとし、必要に応じて Google Cloud CLI
を使用してフィルタ(unit_filter)を適用して、ユニットの特定のサブセットをターゲットにできます。これにより、デプロイされたベース全体でマネージド
アップデートが可能になります。ユニットを以前のリリースにアップグレードすることで、ロールバックを実行できます。
単一の特定のユニットに対するオペレーションの場合は、[ユニットの詳細] ページで使用可能なコントロールを使用します。
始める前に
SaaS サービスを更新する前に、次のことを行う必要があります。
- SaaS ランタイムが有効になっていることを確認します。
- SaaS サービスを作成するために必要な IAM 権限があることを確認します。
- SaaS オファリングを作成します。
- UnitKind を作成します。
- ユニットを作成してプロビジョニングします。
- 新規または変更された Terraform ブループリントを準備します。
リリースを作成する
SaaS サービスを更新するには、まずリリースを作成する必要があります。 リリースは、ブループリント パッケージとその関連構成によって定義される SaaS アプリケーションの特定のバージョンを表します。 基本的に、リリースにはユニットの更新が含まれます。
コンソール
SaaS ランタイムに移動します。
[リリース] をクリックします。
[リリース] ページで、[作成] をクリックします。
[リリースを作成] ページで、次の操作を行います。
- [リリース名] ボックスに、リリースの一意の名前を入力します。
- [ユニットの種類] ボックスで、このリリースに関連付けるユニットの種類を選択します。
- [アップグレード元(省略可)] セクションで、ユニットをこのリリースにアップグレードできるリリースを必要に応じて選択できます。これにより、アップグレード パスを制御できます。
- [ブループリントを作成] ステップと [ブループリントを保存] ステップで、ブループリントを選択または作成します。ブループリントの作成オプションの詳細については、 ブループリントのドキュメント をご覧ください。
[変数(省略可)] セクションで、このリリースの入力変数を必要に応じて設定できます。変数の設定の詳細については、 変数のドキュメント をご覧ください。
[作成] をクリックします。
リリースが作成されました。リリースの詳細は、[リリースの詳細] ページで確認できます。ロールアウトを作成するときに、このリリースを参照できます。
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% のユニットを同時に更新します。
- すべて同時(シンプル): すべてのロケーションで同時にロールアウトが開始されます(開発環境や緊急事態に最適です)。
- プログレッシブ(段階的): 複数のロケーションにわたって、指数関数的にパーセント バッチで更新を段階的にロールアウトします(ソーク時間あり)。
- プログレッシブ(単一ロケーション): 延長されたソーク時間でパーセント バッチでユニットを更新し、単一 ロケーション内の問題を検出します。
ロールアウト戦略の詳細については、ロールアウト戦略をご覧ください。
[作成] をクリックします。
ロールアウトの種類が作成されました。[ロールアウトの種類の詳細] ページで、ロールアウトの種類のパラメータを表示および編集できます。
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 回に 1 つのロケーションを更新します(ソーク時間はなし)。最大 20% のユニットを同時に更新します。Google.Cloud.Simple.AllAtOnce: すべてのロケーションで同時にロールアウトが開始されます(開発環境や緊急事態に最適です)。Google.Cloud.Progressive.Gradual.v1: 複数のロケーションにわたって、指数関数的にパーセント バッチで更新を段階的にロールアウトします(ソーク時間あり)。Google.Cloud.Progressive.SingleLocation.v1: 延長されたソーク時間でパーセント バッチでユニットを更新し、単一ロケーション内の問題を検出します。
ロールアウト戦略の詳細については、ロールアウト戦略をご覧ください。
ERROR_BUDGET: エラー バジェットの構成。 失敗したユニットの数がerror_budgetの最大値(allowed_count、allowed_ratio*total_unitsで定義)を超えると、ロールアウトは一時停止します。error_budgetが設定されていない場合、SaaS ランタイムは発生した失敗の数に関係なく、すべてのユニットの更新を試みます。UNIT_FILTER: CEL 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 ランタイム サービス アカウントをご覧ください。