Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ Fleet Manager ✔️ Fleet Manager com cluster de hubs
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.
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 está a seguir as instruções da CLI do Azure neste artigo, instale a versão mais recente da CLI do Azure. Para instalar ou atualizar, consulte Instalar a CLI do Azure.
Também precisas da
fleetextensão CLI do Azure. Para o instalar, execute o seguinte comando:az extension add --name fleetExecute o
az extension updatecomando 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
memberSelectorpara 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)
Use as etiquetas dos membros para selecionar clusters nas suas estratégias de atualização. Proporcionam 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
Use o az fleet member create comando para colocar etiquetas aos membros da sua frota. 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
Use o az fleet member update comando para colocar etiquetas aos membros da sua frota.
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.
Nota
Uma experiência no portal Azure estará disponível antes da disponibilidade geral desta funcionalidade.
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
memberSelectorpara selecionar clusters pelos seus rótulos e inclui definições opcionaismaxConcurrency:- O estágio
stagingutiliza ummemberSelectorao nível de estágio para selecionar todos os clusters com o rótuloenv=staginge criar um grupo implícito. - O
productionestágio utiliza ummemberSelectorde nível de estágio para pré-filtrar clusters com o rótuloenv=production, depois define dois grupos, cada um commemberSelectorpróprio para selecionar clusters pelo rótulotier.
Quando
memberSelectorestá configurado em um grupo, o camponamedo 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" } ] } ] }- O estágio
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).
Crie uma nova estratégia de atualização usando o
az fleet updatestrategy createcomando com o sinalizador--stagesdefinido 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
Pode selecionar clusters nas estratégias de atualização atribuindo-os a um único grupo de atualização. Defina 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
No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.
No menu de serviço, em Configurações, selecione Clusters de membros>Adicionar.
Selecione o cluster que pretende adicionar e, em seguida, selecione Seguinte: Rever + adicionar.
Introduza o nome do grupo de atualizações ao qual pretende atribuir o cluster e, em seguida, selecione Adicionar.
Atribua um cluster membro a um grupo de atualização ao adicionar o cluster membro à frota, utilizando o comando az fleet member create com o parâmetro --update-group definido para o nome do grupo de atualização.
az fleet member create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--member-cluster-id $CLUSTERID \
--update-group group-1a
Atribuir um membro da frota existente a um grupo de atualização
No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.
No menu de serviço, em Configurações, selecione Clusters de membros.
Selecione os clusters que pretende atribuir a um grupo de atualizações e, em seguida, selecione Atribuir grupo de atualizações
Introduza o nome do grupo de atualização ao qual pretende atribuir o cluster e, em seguida, selecione Atribuir.
Atribua um membro da frota existente a um grupo de atualização usando o az fleet member update comando com o --update-group sinalizador definido para o nome do grupo de atualização.
az fleet member update \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--update-group group-1
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.
No portal do Azure, navegue até o recurso do Azure Kubernetes Fleet Manager.
No menu de serviço, em Configurações, selecione de vários clusters e, em seguida>.
Insira um nome para a estratégia.
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.
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.
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.
Para esse cenário, criamos estágios e grupos para corresponder aos detalhes usados para o processo do portal do Azure.
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 etapa, por isso a ordenação não é importante. O ficheiro de exemplo seguinte (example-stages.json) define uma estratégia com duas fases e inclui as definições opcionais
maxConcurrencyemaxAllowedFailures:{ "stages": [ { "name": "stage-1", "maxConcurrency": "7", "maxAllowedFailures": "2", "groups": [ { "name": "group-1", "maxConcurrency": "3", "maxAllowedFailures": "1" }, { "name": "group-2", "maxConcurrency": "50%", "maxAllowedFailures": "25%" } ], "afterStageWaitInSeconds": 300 }, { "name": "stage-2", "maxConcurrency": "100%", "maxAllowedFailures": "0", "groups": [ { "name": "group-3", "maxConcurrency": "2", "maxAllowedFailures": "0" } ] } ] }maxConcurrencyO
maxConcurrencycampo é opcional e controla quantos clusters podem ser atualizados simultaneamente ao nível do estágio ou grupo. Utilize um valor mais elevado para atualizar os clusters mais rapidamente em toda a sua frota, ou um valor mais baixo para uma implementação mais controlada que limite o impacto caso surjam problemas.Neste exemplo,
stage-1definemaxConcurrencycomo"7", permitindo que até"7"clusters sejam atualizados simultaneamente. Dentro destage-1,group-1limita a concorrência a"3"clusters, o que significa que até"3"clusters neste grupo podem ser atualizados simultaneamente.group-2permite que até"50%"um dos seus clusters sejam atualizados simultaneamente (por exemplo, se o grupo tiver 4 clusters, até 2 podem ser atualizados ao mesmo tempo).Os valores podem ser um inteiro fixo (por exemplo,
"3") ou uma percentagem (por exemplo,"100%"). 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).maxAllowedFailuresO
maxAllowedFailurescampo é opcional e controla quantas falhas de atualização de cluster de membros são toleradas antes de o grupo ou etapa ser marcado como falhado. Por defeito (quando desativado ou"0"), uma única falha interrompe toda a execução da atualização.Esta configuração avalia apenas o número de falhas. Não impõe uma taxa mínima de sucesso. Um grupo ou fase pode, portanto, terminar em
Completedmesmo que alguns ou todos os membros tenham falhado, desde que o limiar de falha não tenha sido ultrapassado quando o Fleet tomou as suas decisões de agendamento.Neste exemplo,
stage-1definemaxAllowedFailurescomo"2", tolerando até duas falhas de membros em todo o estágio. Dentro destage-1,group-1tolera a falha de"1"egroup-2tolera a falha de"25%"dos seus membros (por exemplo, se o grupo contiver 4 clusters, até 1 falha é tolerada).stage-2definemaxAllowedFailurescomo"0", o que significa que qualquer falha interrompe imediatamente a execução e é frequentemente útil em fases de produção.Para a maioria dos lançamentos, prefira valores baseados em percentagens porque escalam melhor entre diferentes tamanhos de grupo. Evite definir o valor como igual ao total de membros, a menos que queira intencionalmente um comportamento que, na prática, corresponda a "nunca falhar" para esse segmento.
Os valores podem ser um inteiro fixo (por exemplo,
"3") ou uma percentagem (por exemplo,"25%"). Para detalhes sobre como estes valores são resolvidos, veja Falhas Máximas permitidas (pré-visualização).Crie uma nova estratégia de atualização usando o
az fleet updatestrategy createcomando com o sinalizador--stagesdefinido como o nome do seu arquivo JSON.az fleet updatestrategy create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name $STRATEGY \ --stages example-stages.json
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:
- Como fazer: Atualizar vários clusters usando as execuções de atualização do Kubernetes Fleet Manager do Azure.
- Como: Adicionar aprovações às Estratégias de Atualização do Gerenciador de Frota do Kubernetes do Azure.
- Como fazer: atualize automaticamente vários clusters usando o Azure Kubernetes Fleet Manager.
- Perguntas frequentes sobre atualizações de vários clusters.