このガイドでは、フラグをグループ化する方法、セットからリリースを作成する方法、フラグセットをサブスクライブするようにフラグを構成する方法について説明します。
フラグセットは、関連する機能フラグのグループを管理するための論理コンテナです。アプリケーションが拡大し、個々のフラグの数が増えると、フラット リストでの管理が煩雑になり、エラーが発生しやすくなります。
フラグセットを使用すると、機能領域、アプリケーション コンポーネント、その他の論理条件に基づいてフラグを整理し、フラグ オペレーションのより高レベルの抽象化を実現できます。
前提条件
始める前に、次のものを用意してください。
- App Lifecycle Manager リソースを管理するように構成された
gcloud環境。 - 機能フラグのデプロイのクイックスタートを完了している。
フィーチャー トグルをグループ化する
フラグをグループ化するには、作成時に flag_set 識別子に関連付けるか、既存のフラグを更新します。この識別子により、所有権の明確な境界が作成され、設定されたフラグを単一のリソースとして使用できます。
フラグセットにフラグを作成する
gcloud beta app-lifecycle-manager flags create "auth-flag" \
--key="auth-flag" \
--flag-value-type=BOOL \
--location=global \
--flag-set="auth-module-flags" \
--description="Flag for the core authentication service."
既存のフラグを更新してフラグセットに追加する
gcloud beta app-lifecycle-manager flags update "auth-flag" \
--location="global"
--flag-set="auth-module-flags"
フラグセットからリリースを作成する
フラグごとに特定の時点のスナップショット(FlagRevisions)を手動で作成する代わりに、1 つ以上のセットを参照する FlagRelease を作成できます。App Lifecycle Manager は、必要なすべての不変スナップショットの作成を自動的に処理します。
gcloud beta app-lifecycle-manager flags releases create "auth-release-v1.2" \
--location=global \
--flag-sets='["auth-module-flags"]' \
--unit-kind="UNIT_KIND_NAME"
UNIT_KIND_NAME は、ユニットの種類に置き換えます。
すべてのフラグのリリースを作成する
all_flags ブール値を true に設定すると、ロールアウトの単位の種類に関連付けられているすべてのフラグを取得できます。
gcloud beta app-lifecycle-manager flags releases create "all-flags-release" \
--location=global \
--all-flags \
--unit-kind="UNIT_KIND_NAME"
フラグセットの使用
フラグセットをサブスクライブするには、OpenFeature プロバイダを初期化するときにセレクタを使用します。
Go の例:
セレクタは、この特定のセットをフィルタするようフラグソースに指示します。
provider := flagd.NewProvider(
// The selector tells the flag source to filter for this specific set
flagd.WithSelector("flagSetId=auth-module-flags"),
// ... other options
)
セレクタの動作:
- 空のセレクタ: フラグセット ID が設定されていないフラグのみを選択します。
flagSetId=*: ユニットに関連付けられているすべてのフラグを選択します。flagSetId=X: セットがXと完全に一致するフラグのみを選択します。
次のステップ
- CEL を使用した複雑なターゲティングについて学習する。
- マルチテナント アーキテクチャについて学習する。