This guide shows you how to group flags, create releases from sets, and configure flags to subscribe to flag sets.
Flag sets are logical containers for managing groups of related feature flags. As your applications grow and the number of individual flags increases, managing them in a flat list can become cumbersome and error-prone.
Flag sets allow you to organize flags based on functional area, application component, or any other logical criteria, providing a higher-level abstraction for flag operations.
Prerequisites
Before you begin, ensure you have:
- A
gcloudenvironment configured to manage App Lifecycle Manager resources. - Completed the Deploy feature flags quickstart.
Group feature flags
To group flags, you associate them with a flag_set identifier during creation,
or update an existing flag. This identifier creates a clear boundary of
ownership and lets you use the flags set as a single resource.
Create a flag in a 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."
Update an existing flag to add to a flag set
gcloud beta app-lifecycle-manager flags update "auth-flag" \
--location="global"
--flag-set="auth-module-flags"
Create a release from a flag set
Instead of manually creating point-in-time snapshots (FlagRevisions) for every
flag, you can create a FlagRelease that references one or more sets.
App Lifecycle Manager automatically handles the creation of all necessary
immutable snapshots.
gcloud beta app-lifecycle-manager flags releases create "auth-release-v1.2" \
--location=global \
--flag-sets='["auth-module-flags"]' \
--unit-kind="UNIT_KIND_NAME"
Replace UNIT_KIND_NAME with your unit kind.
Create a release for all flags
You can set the all_flags boolean to true to fetch all flags linked to the
rollout's unit kind:
gcloud beta app-lifecycle-manager flags releases create "all-flags-release" \
--location=global \
--all-flags \
--unit-kind="UNIT_KIND_NAME"
Consuming a flag set
To subscribe to a flag set, use a selector when you initialize the OpenFeature provider.
Go example:
The selector tells the flag source to filter for this specific set:
provider := flagd.NewProvider(
// The selector tells the flag source to filter for this specific set
flagd.WithSelector("flagSetId=auth-module-flags"),
// ... other options
)
Selector Behavior:
- Empty selector: Selects only flags that have no flag set ID.
flagSetId=*: Selects all flags associated with the unit.flagSetId=X: Selects only flags where the set is exactlyX.
What's next
- Learn about Complex Targeting with CEL.
- Learn about Multi-Tenant Architecture.