本指南介绍如何对标志进行分组、从集合创建版本,以及如何配置标志以订阅标志集。
标志集是用于管理一组相关功能标志的逻辑容器。 随着应用规模的扩大和单个标志数量的增加,在扁平列表中管理这些标志可能会变得繁琐且容易出错。
标志集可让您根据功能区域、应用组件或任何其他逻辑条件来整理标志,从而为标志操作提供更高级别的抽象。
前提条件
开始之前,请确保您满足以下方面的要求:
- 配置为管理 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"
从标志集创建发布
您可以创建引用一个或多个集合的 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的标志。
后续步骤
- 了解如何使用 CEL 实现复杂的定位。
- 了解多租户架构。