Usar conjuntos de flags

Este guia mostra como agrupar flags, criar versões de conjuntos e configurar flags para se inscrever em conjuntos de flags.

Os conjuntos de flags são contêineres lógicos para gerenciar grupos de flags de recursos relacionados. À medida que seus aplicativos crescem e o número de flags individuais aumenta, o gerenciamento delas em uma lista simples pode se tornar complicado e propenso a erros.

Os conjuntos de flags permitem organizar flags com base na área funcional, no componente do aplicativo ou em qualquer outro critério lógico, fornecendo uma abstração de nível superior para operações de flag.

Pré-requisitos

Antes de começar, verifique se você atende a estes requisitos:

  1. Um ambiente gcloud configurado para gerenciar recursos do App Lifecycle Manager.
  2. Concluiu o guia de início rápido Implantar flags de recursos.

Agrupar flags de recursos

Para agrupar flags, associe-as a um identificador flag_set durante a criação ou atualize uma flag atual. Esse identificador cria um limite claro de propriedade e permite usar o conjunto de flags como um único recurso.

Criar uma flag em um conjunto de flags

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."

Atualizar uma flag atual para adicionar a um conjunto de flags

gcloud beta app-lifecycle-manager flags update "auth-flag" \
    --location="global"
    --flag-set="auth-module-flags"

Criar uma versão de um conjunto de flags

Em vez de criar manualmente snapshots pontuais (FlagRevisions) para cada flag, você pode criar um FlagRelease que faça referência a um ou mais conjuntos. O App Lifecycle Manager processa automaticamente a criação de todos os snapshots imutáveis necessários.

gcloud beta app-lifecycle-manager flags releases create "auth-release-v1.2" \
    --location=global \
    --flag-sets='["auth-module-flags"]' \
    --unit-kind="UNIT_KIND_NAME"

Substitua UNIT_KIND_NAME pelo tipo de unidade.

Criar uma versão para todas as flags

É possível definir o booleano all_flags como true para buscar todas as flags vinculadas ao tipo de unidade do lançamento:

gcloud beta app-lifecycle-manager flags releases create "all-flags-release" \
    --location=global \
    --all-flags \
    --unit-kind="UNIT_KIND_NAME"

Consumir um conjunto de flags

Para se inscrever em um conjunto de flags, use um seletor ao inicializar o provedor OpenFeature.

Exemplo de Go:

O seletor informa à origem da flag para filtrar esse conjunto específico:

provider := flagd.NewProvider(
    // The selector tells the flag source to filter for this specific set
    flagd.WithSelector("flagSetId=auth-module-flags"),
    // ... other options
)

Comportamento do seletor:

  • Seletor vazio: seleciona apenas flags que não têm um ID de conjunto de flags.
  • flagSetId=*: seleciona todas as flags associadas à unidade.
  • flagSetId=X: seleciona apenas flags em que o conjunto é exatamente X.

A seguir