Definir estratégias de atualização reutilizáveis usando o Azure Kubernetes Fleet Manager

Os administradores podem controlar a sequência de atualizações para clusters gerenciados por frotas definindo uma série de estágios e grupos. Eles podem configurar quando as aprovações e pausas devem ocorrer dentro desses estágios e grupos. Toda a configuração pode ser salva como uma estratégia de atualização que pode ser gerenciada independentemente de execuções de atualização ou atualizações automáticas, permitindo que as estratégias sejam reutilizadas conforme necessário.

Este artigo aborda como definir estratégias de atualização usando grupos e estágios.

Um diagrama mostrando um exemplo de estratégia de atualização contendo dois estágios de atualização. Cada estágio de atualização contém dois grupos de atualização. Cada grupo de atualização contém dois clusters membros.

Pré-requisitos

  • Leia a visão geral conceitual das atualizações do Fleet, que fornece uma explicação dos ciclos de atualização, estágios, grupos e estratégias referenciados neste guia.

  • Você deve ter um recurso de frota com um ou mais grupos de membros. Caso contrário, siga o Guia de Início Rápido para criar um recurso Fleet e adicionar clusters ao Serviço Kubernetes do Azure (AKS) como membros.

  • Defina as seguintes variáveis de ambiente:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • Se você estiver seguindo as instruções da CLI do Azure neste artigo, precisará da CLI do Azure versão 2.70.0 ou posterior instalada. Para instalar ou atualizar, consulte Instalar a CLI do Azure.

  • Você também precisa da fleet extensão CLI do Azure versão 1.6.0 ou posterior, que pode ser instalada executando o seguinte comando:

    az extension add --name fleet
    

    Execute o az extension update comando para atualizar para a versão mais recente da extensão lançada:

    az extension update --name fleet
    

Selecione clusters para a sua estratégia

Existem duas formas de selecionar quais clusters estão incluídos em cada fase e grupo da sua estratégia de atualização para controlar a sequência de atualização:

  • Rótulos de membros (recomendados): Atribua rótulos a cada membro da frota e usa memberSelector para selecionar membros por esses rótulos. Cada membro pode ter várias etiquetas.
  • Atualizar grupos: Atribua um grupo de atualização a cada membro da frota, depois define grupos na tua estratégia que correspondam a esses nomes. Cada membro só pode pertencer a um grupo.

Crie uma estratégia de atualização usando selecionadores de membros (pré-visualização)

As etiquetas de membros são a abordagem recomendada para selecionar clusters nas suas estratégias de atualização porque oferecem mais flexibilidade. Para detalhes conceptuais, veja Agrupamentos de grupo usando rótulos de membros.

Importante

As funcionalidades em versão prévia do Azure Kubernetes Fleet Manager estão disponíveis num modelo de autoatendimento e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões prévias do Azure Kubernetes Fleet Manager são parcialmente cobertas pelo apoio ao cliente numa base de melhor esforço possível. Assim sendo, estas funcionalidades não se destinam ao uso em produção.

Aplicar etiquetas nos clusters de membros

Aplique etiquetas ao adicionar um agrupamento de membros à frota

Aplique etiquetas aos membros da sua frota usando o az fleet member create comando. O exemplo seguinte aplica dois rótulos ao grupo de membros: env=staging e tier=frontend:

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

Aplique etiquetas a um membro da frota existente

Aplique etiquetas aos membros da sua frota usando o az fleet member update comando

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

Criar uma estratégia de atualização

Uma estratégia de atualização consiste em um ou mais estágios, onde um estágio pode conter um ou mais grupos de atualização.

  1. Crie um arquivo JSON para definir os estágios e grupos para a execução da atualização. Os estágios são executados sequencialmente na ordem em que aparecem no arquivo JSON. Os grupos correm em paralelo dentro de cada estágio. O seguinte ficheiro de exemplo (example-labels-strategy.json) define uma estratégia com dois estágios que usam memberSelector para selecionar clusters pelos seus rótulos e inclui definições opcionais maxConcurrency :

    • O estágio staging utiliza um memberSelector ao nível de estágio para selecionar todos os clusters com o rótulo env=staging e criar um grupo implícito.
    • O production estágio utiliza um memberSelector de nível de estágio para pré-filtrar clusters com o rótulo env=production, depois define dois grupos, cada um com memberSelector próprio para selecionar clusters pelo rótulo tier.

    Quando memberSelector está configurado em um grupo, o campo name do grupo é usado apenas como identificador de visualização para relatórios de status e de registo, e não é mais utilizado para a seleção dos membros da frota com base em atualizações de grupos.

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

Nota

O maxConcurrency campo é opcional e controla quantos clusters podem ser atualizados simultaneamente ao nível do estágio ou grupo. Use um valor maior para atualizar clusters mais rapidamente na sua frota, ou um valor menor para uma implementação mais controlada que limite o raio de explosão caso surjam problemas.

Quando uma fase usa memberSelector sem grupos (como staging), todos os membros correspondentes formam um único grupo implícito e a fase maxConcurrency controla diretamente a concorrência. Quando grupos são definidos (como production), o nível maxConcurrency de palco atua como um teto global para todos os grupos.

Neste exemplo, a staging fase define maxConcurrency para "1", pelo que os clusters de staging são atualizados um de cada vez. O production estágio permite até "4" clusters em simultâneo, com o grupo frontend e o backend limitados a "3".

Os valores podem ser um inteiro fixo (por exemplo, "3") ou uma percentagem (por exemplo, "50%"). Se for omitido, o sistema aplica valores por defeito. Para detalhes sobre como estes valores são resolvidos e os seus limites superiores, veja Concorrência máxima (pré-visualização).

  1. Crie uma nova estratégia de atualização usando o az fleet updatestrategy create comando com o sinalizador --stages definido como o nome do seu arquivo JSON.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

Crie uma estratégia de atualização usando grupos de atualização

Clusters também podem ser selecionados em estratégias de atualização, atribuindo-os a um único grupo de atualização. Pode definir uma estratégia de atualização que atribua estes grupos de atualização a estágios. Dentro de um estágio de atualização, as atualizações são aplicadas a cada grupo de atualizações em paralelo. Dentro de um grupo de atualização, os clusters de membros são atualizados sequencialmente.

Nota

Um membro da frota só pode fazer parte de um grupo de atualização, mas um grupo de atualização pode ter vários membros da frota atribuídos a ele. Um grupo de atualização em si não é um tipo de recurso separado. Os grupos de atualização são apenas cadeias de caracteres que representam referências dos membros da frota. Assim, se todos os membros da frota com referências a um grupo de atualização comum forem excluídos, esse grupo de atualização específico também deixará de existir.

Atribuir clusters a grupos de atualização

Atribuir ao grupo ao adicionar cluster de membros à frota

  1. No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.

  2. No menu de serviço, em Configurações, selecione Clusters de membros>Adicionar.

    Captura de ecrã da página do portal do Azure para o Azure Kubernetes Fleet Manager para adicionar clusters de membros.

  3. Selecione o cluster que pretende adicionar e, em seguida, selecione Seguinte: Rever + adicionar.

  4. Introduza o nome do grupo de atualizações ao qual pretende atribuir o cluster e, em seguida, selecione Adicionar.

    Captura de ecrã da página do portal do Azure para o Azure Kubernetes Fleet Manager no passo de revisão e adição para clusters membros.

Atribuir um membro da frota existente a um grupo de atualização

  1. No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.

  2. No menu de serviço, em Configurações, selecione Clusters de membros.

  3. Selecione os clusters que pretende atribuir a um grupo de atualizações e, em seguida, selecione Atribuir grupo de atualizações

    Captura de ecrã da página do portal do Azure para atribuir clusters de membros existentes a um grupo.

  4. Introduza o nome do grupo de atualização ao qual pretende atribuir o cluster e, em seguida, selecione Atribuir.

    Captura de ecrã da página do portal do Azure para clusters de membros que mostra o formulário para atualizar o grupo de um cluster de membros.

Criar uma estratégia de atualização

Uma estratégia de atualização consiste em um ou mais estágios, onde um estágio pode conter um ou mais grupos de atualização.

  1. No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.

  2. No menu de serviço, em Configurações, selecione de vários clusters e, em seguida>.

  3. Insira um nome para a estratégia.

  4. Na primeira vez que você visualiza a página, um diagrama de explicação da estratégia de atualização é exibido que pode ajudar a visualizar como as estratégias funcionam.

    Uma captura de tela do portal do Azure mostrando a criação da estratégia de atualização.

  5. Selecione Criar estágio e digite:

    • Nome da etapa - nomeie a etapa - deve ser único entre todos os nomes de etapa na estratégia.
    • Aprovações de estágio (opcional) - selecione esta opção se quiser aguardar uma aprovação antes que esta etapa comece ou depois de ser concluída. Para obter mais informações, consulte Adicionar aprovações para atualizar grupos e estágios.
    • (Opcional) Pausar após etapa - selecione esta opção se quiser definir uma pausa antes de passar para a próxima etapa.
    • (Opcional) Duração da pausa - selecione uma duração predefinida ou insira um valor personalizado em segundos.

    Uma captura de tela do portal do Azure mostrando a criação do estágio de estratégia de atualização do Azure Kubernetes Fleet Manager.

  6. Atribui um ou mais Grupos de Atualização ao palco e depois seleciona Criar.

    Nota

    O número máximo de Grupos de Atualização em cada Estágio de Atualização é 50.

    Uma captura de tela do portal do Azure mostrando a criação do estágio de estratégia de atualização do Azure Kubernetes Fleet Manager, selecionando grupos de atualização a serem incluídos.

Próximos passos

Você pode usar uma estratégia de atualização como parte de uma execução de atualização manual ou um perfil de atualização automática. Veja: