使用标志集

本指南介绍如何对标志进行分组、从集合创建版本,以及如何配置标志以订阅标志集

标志集是用于管理一组相关功能标志的逻辑容器。 随着应用规模的扩大和单个标志数量的增加,在扁平列表中管理这些标志可能会变得繁琐且容易出错。

标志集可让您根据功能区域、应用组件或任何其他逻辑条件来整理标志,从而为标志操作提供更高级别的抽象。

前提条件

开始之前,请确保您满足以下方面的要求:

  1. 配置为管理 App Lifecycle Manager 资源的 gcloud 环境。
  2. 已完成部署功能标志快速入门

功能标志分组

如需对标志进行分组,您可以在创建时将标志与 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"

从标志集创建发布

您可以创建引用一个或多个集合的 FlagRelease,而无需为每个标志手动创建时间点快照 (FlagRevisions)。应用生命周期管理器会自动处理所有必需的不可变快照的创建。

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 的标志。

后续步骤