Atualizar uma oferta de SaaS

Neste documento, descrevemos como atualizar uma oferta de SaaS usando o App Lifecycle Manager.

O App Lifecycle Manager permite atualizações em várias unidades provisionadas usando lançamentos. Os lançamentos segmentam unidades com base no UnitKind delas e podem, opcionalmente, aplicar filtros (unit_filter) para segmentar um subconjunto específico de unidades usando a Google Cloud CLI . Isso permite atualizações gerenciadas em toda a base implantada. Uma reversão pode ser realizada fazendo upgrade das unidades para uma versão anterior.

Para operações em uma única unidade específica, use os controles disponíveis na página Detalhes da unidade.

Antes de começar

Antes de atualizar sua oferta de app, faça o seguinte:

Criar uma versão

Antes de atualizar sua oferta de app, crie uma versão. Uma versão representa uma versão específica do aplicativo SaaS definida por um pacote de blueprint e as configurações associadas. Essencialmente, uma versão contém a atualização das suas unidades.

Console

  1. Acesse o App Lifecycle Manager.

    Acessar o App Lifecycle Manager

  2. Clique em Versões.

  3. Na página Versões, clique em Criar.

  4. Na página Criar versão:

    1. Na caixa Nome da versão, insira um nome exclusivo para a versão.
    2. Na caixa Tipo de unidade, selecione o tipo de unidade associado a esta versão.
    3. Na seção Somente atualizável de (opcional), é possível selecionar as versões das quais as unidades podem ser atualizadas para esta versão. Isso permite controlar os caminhos de upgrade.
    4. Nas etapas Criar blueprint e Armazenar blueprint, selecione ou crie seu blueprint. Consulte a documentação de blueprints para informações detalhadas sobre as opções de criação de blueprints.
    5. Na seção Variáveis (opcional), é possível definir variáveis de entrada para essa versão. Consulte a documentação sobre variáveis para mais informações sobre como definir variáveis.

  5. Clique em Criar.

  6. Você criou uma versão. Confira os detalhes da versão na página Detalhes da versão. Você poderá referenciar essa versão ao criar um lançamento.

gcloud

Para criar uma versão usando o console do Google Cloud :

gcloud beta app-lifecycle-manager releases create RELEASE_NAME --blueprint-package=BLUEPRINT_PACKAGE_URI --unit-kind=UNIT_KIND [--location=LOCATION] [--labels=[KEY=VALUE,...]] [--upgradeable-from-releases=[RELEASE_NAME,...]] [--input-variable-defaults=[variable=VARIABLE,value=VALUE,type=TYPE,...]]

Substitua:

  • RELEASE_NAME: o ID da versão que você quer criar. Ele vai fazer parte do nome completo do recurso da versão.
  • BLUEPRINT_PACKAGE_URI: o URI do pacote de blueprint a ser usado nesta versão. Os blueprints são imagens da OCI hospedadas no Artifact Registry ou em outro registro da OCI.
    • O pacote de blueprint contém os artefatos necessários para provisionar uma unidade e inclui metadados sobre o mecanismo usado (Terraform), bem como a versão.
    • Se você omitir o nome do host no URI, o padrão será o caminho regional do Artifact Registry (us-east1-docker.pkg.dev, por exemplo).
    • Consulte a documentação de blueprints para mais informações sobre como criar blueprints.
  • UNIT_KIND: o ID ou identificador totalmente qualificado do tipo de unidade a que esta versão corresponde. UNIT_KIND é imutável depois que você cria uma versão.
  • LOCATION: o local em que você quer criar a versão. Essa flag fornece um valor substituto para o local da versão se o caminho completo do URI não for fornecido. O padrão é o local configurado no ambiente da Google Cloud CLI.
  • LABELS: (opcional) rótulos a serem aplicados à versão para categorização. Os rótulos são pares de chave-valor.
    • As chaves precisam começar com um caractere minúsculo e conter apenas hifens, sublinhados, caracteres minúsculos e números.
    • Os valores precisam conter apenas hifens, sublinhados, caracteres minúsculos e números.
    • Por exemplo: --labels=environment=staging,team=app-lifecycle-manager
  • UPGRADEABLE_FROM_RELEASES: (opcional) uma lista separada por vírgulas de nomes de versões que especifica quais versões podem ser atualizadas com a nova versão que você criar.
    • Se você deixar essa sinalização vazia, não haverá restrições sobre quais versões podem ser atualizadas para essa versão.
    • Quando fornecidas, as solicitações de atualização de unidade para essa versão vão aplicar essa restrição.
  • INPUT_VARIABLE_DEFAULTS: (opcional) valores padrão para variáveis de entrada exigidas pelo blueprint.
    • É possível especificar padrões de variáveis inline ou referenciando um arquivo YAML ou JSON.
    • As variáveis definidas aqui podem ser substituídas durante a criação do lançamento.

Para mais informações sobre como definir variáveis, consulte a documentação sobre variáveis. Para mais informações sobre as versões, consulte a referência da Google Cloud CLI Release.

Criar um tipo de lançamento

Antes de criar um lançamento, é preciso criar um tipo de lançamento que sirva como modelo para a implantação da versão nas unidades.

Console

  1. Acesse o App Lifecycle Manager.

    Acessar o App Lifecycle Manager

  2. Clique em Tipos de lançamento.

  3. Na página Tipos de lançamento, clique em Criar.

  4. Na página Criar um tipo de lançamento:

    1. Na caixa Nome do tipo de lançamento, insira um nome para o tipo de lançamento.
    2. Na caixa Tipo de unidade, selecione o tipo de unidade que você quer atualizar com a versão.
    3. No menu suspenso Estratégia de lançamento, selecione a estratégia que você quer usar para implantar a versão nas suas unidades:

      • Um local por vez (simples): atualiza um local por vez (sem tempos de imersão). Atualiza até 5% das unidades simultaneamente.
      • Tudo de uma vez (simples): todos os locais começam a ser atualizados simultaneamente (ideal para ambientes de desenvolvimento e cenários de emergência).
      • Progressiva (gradual): implanta atualizações gradualmente em lotes percentuais de forma exponencial em vários locais (com tempos de imersão).
      • Progressiva (local único): atualiza as unidades em lotes percentuais com tempos de imersão estendidos para detectar problemas em um único local.

      Para mais informações sobre estratégias de lançamento, consulte Estratégias de lançamento.

  5. Clique em Criar.

  6. Você criou um tipo de lançamento. Na página Detalhes do tipo de lançamento, é possível conferir e editar os parâmetros do tipo de lançamento.

gcloud

Para criar um tipo de lançamento usando o console do Google Cloud :

  gcloud beta app-lifecycle-manager rollout-kinds create ROLLOUT_KIND_NAME --unit-kind=UNIT_KIND --location=LOCATION --rollout_strategy=ROLLOUT_STRATEGY --error_budget=ERROR_BUDGET --unit_filter=UNIT_FILTER --update_unit_kind_default=UPDATE_UNIT_KIND_DEFAULT

Substitua:

  • ROLLOUT_KIND_NAME: o nome do tipo de lançamento.
  • UNIT_KIND: define as unidades em que você quer aplicar as versões. As versões são aplicadas a todas as unidades do tipo selecionado.
  • LOCATION: o local em que você quer criar o tipo de lançamento.
  • ROLLOUT_STRATEGY: define a estratégia de lançamento para o tipo de lançamento. Os possíveis valores incluem:

    • Google.Cloud.Simple.OneLocationAtATime: atualiza um local por vez (sem tempos de imersão). Atualiza até 5% das unidades simultaneamente.
    • Google.Cloud.Simple.AllAtOnce: todos os locais começam a ser atualizados simultaneamente (ideal para ambientes de desenvolvimento e cenários de emergência).
    • Google.Cloud.Progressive.Gradual.v1: implanta gradualmente atualizações em lotes percentuais de forma exponencial em vários locais (com tempos de imersão).
    • Google.Cloud.Progressive.SingleLocation.v1: atualiza unidades em lotes percentuais com tempos de imersão estendidos para detectar problemas em um único local.

    Para mais informações sobre estratégias de lançamento, consulte Estratégias de lançamento.

  • ERROR_BUDGET: a configuração da margem de erro. Se o número de unidades com falha exceder o máximo de error_budget (definido por allowed_count, allowed_ratio * total_units), o lançamento será pausado. Se error_budget não for definido, o App Lifecycle Manager vai tentar atualizar todas as unidades, independentemente do número de falhas encontradas.

  • UNIT_FILTER: string de filtro formatada em CEL usada em unidades. O filtro será aplicado para determinar a população de unidades qualificadas. Esse filtro só pode reduzir o escopo do lançamento. Não é possível expandir o escopo do lançamento.

  • UPDATE_UNIT_KIND_DEFAULT: a configuração para atualizar o tipo de unidade. Por padrão, o tipo de unidade será atualizado no início do lançamento. Os possíveis valores incluem:

    • UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED: a estratégia de atualização do tipo de unidade não foi especificada.
    • UPDATE_UNIT_KIND_STRATEGY_ON_START: atualize a estratégia de tipo de unidade no início do lançamento.
    • UPDATE_UNIT_KIND_STRATEGY_NEVER: nunca atualize a estratégia de tipo de unidade.

Para mais informações, consulte a referência da Google Cloud CLI RolloutKind.

Recurso de margem de erro

O App Lifecycle Manager inclui um recurso de margem de erro (ErrorBudget em RolloutKind) como proteção. Isso pode pausar automaticamente um lançamento se o número ou a porcentagem de falhas de atualização de unidade (durante a aplicação da infraestrutura, por exemplo) exceder um limite configurado, ajudando a limitar o impacto de possíveis problemas durante uma atualização.

Criar um lançamento

Depois de criar um tipo de lançamento, é possível criar um lançamento que especifique a versão com que você quer atualizar as unidades.

Depois que o lançamento é criado, o App Lifecycle Manager atualiza as unidades de acordo com a estratégia definida no tipo de unidade.

Console

  1. Acesse o App Lifecycle Manager.

    Acessar o App Lifecycle Manager

  2. Clique em Lançamentos.

  3. Na página Lista de lançamentos, clique em Criar.

  4. Na página Criar um lançamento:

    1. Na caixa Tipo de lançamento, selecione o tipo de lançamento que detalha como implantar a versão nas unidades especificadas.
    2. Na caixa Versão, especifique a versão para atualizar as unidades.
    3. Na caixa Nome do lançamento, insira um nome para o lançamento.
  5. Clique em Criar.

  6. Seu lançamento foi criado.

    Na página Detalhes do lançamento global, é possível monitorar os detalhes do lançamento, incluindo o estado, o progresso (por contagem de unidades) e as falhas.

gcloud

Para criar um lançamento usando o console do Google Cloud :

  gcloud beta app-lifecycle-manager rollouts create ROLLOUT_NAME --rollout-kind=ROLLOUT_KIND_NAME --release=RELEASE_NAME --location=LOCATION

Substitua:

  • ROLLOUT_NAME: o nome do lançamento.
  • ROLLOUT_KIND_NAME: define qual tipo de lançamento você quer usar para aplicar versões às suas unidades. As versões são aplicadas a todas as unidades do tipo de unidade definido no tipo de lançamento.
  • RELEASE_NAME: define o binário de lançamento que você quer implantar nas unidades.
  • LOCATION: o local em que você quer criar o lançamento.

Para mais informações, consulte a referência da Google Cloud CLI Rollout.

A seguir