As informações neste artigo fornecem recomendações para criar um pipeline de implantação de aplicativo para aplicativos em contêineres no Serviço de Kubernetes do Azure habilitado pelo Azure Arc. Os aplicativos podem ser executados no Azure Local ou no Windows Server. Especificamente, a orientação é para implantações que usam o Azure Arc e o GitOps.
Importante
As informações neste artigo se aplicam a AKS no Azure Stack HCI, versão 22H2 e AKS-HCI no Windows Server. A versão mais recente do AKS é executada no sistema operacional Azure Stack HCI, versão 23H2. Para obter mais informações sobre a versão mais recente, consulte a AKS no sistema operacional Azure Stack HCI, documentação da versão 23H2.
Arquitetura
Baixe um arquivo do Visio dessa arquitetura.
Fluxo de trabalho
A arquitetura ilustra uma implementação que implanta aplicativos em contêineres em clusters do AKS que são executados no Azure Local ou no Windows Server. Ele usa o GitOps para gerenciar a infraestrutura como código (IaC).
- Um operador configura uma infraestrutura local no Azure Local ou no hardware do Windows Server que é capaz de hospedar um cluster do AKS.
- Localmente, um administrador implanta um cluster do AKS na infraestrutura do Azure Local ou do Windows Server e conecta o cluster ao Azure usando o Azure Arc. Para habilitar o GitOps, o administrador também implanta a extensão Flux e sua configuração no cluster do AKS.
- As configurações do GitOps facilitam a IaC. Essas configurações do GitOps representam o estado desejado do cluster do AKS e usam as informações fornecidas pela administração local. O de administração local refere-se às ferramentas de gerenciamento, interfaces e práticas fornecidas pelo cluster do AKS implantado no Azure Local ou no Windows Server.
- O administrador envia por push as configurações do GitOps para um repositório Git. Você também pode usar um repositório Helm ou Kustomize. Os componentes do Flux no cluster do AKS monitoram o repositório para alterações, detectando e aplicando atualizações conforme necessário.
- A extensão Flux no cluster do AKS recebe uma notificação do fluxo do GitOps quando são feitas alterações nas configurações nos repositórios. Ele dispara automaticamente a implantação da configuração desejada usando gráficos do Helm ou Kustomize.
- As alterações de aplicativo na forma de configuração ou código novos ou atualizados são enviadas por push para os repositórios designados, incluindo atualizações de imagem de contêiner correspondentes. Essas atualizações de imagem de contêiner são enviadas por push para registros de contêineres públicos ou privados.
- O operador Flux no cluster do AKS detecta alterações nos repositórios e inicia sua implantação no cluster.
- As alterações são implementadas de forma contínua no cluster para garantir o tempo de inatividade mínimo e preservar o estado desejado do cluster.
Componentes
- Local do Azure é uma solução de HCI (infraestrutura hiperconvergente) que você pode usar para executar cargas de trabalho virtualizadas localmente. Ele usa uma combinação de tecnologias de computação, armazenamento e rede definidas pelo software. Ele é criado com base no Windows Server e integra-se aos serviços do Azure para fornecer uma experiência de nuvem híbrida.
- AKS no Azure Local permite que desenvolvedores e administradores usem o AKS para implantar e gerenciar aplicativos em contêineres no Azure Local.
- a do Azure Arc é uma solução híbrida de gerenciamento de nuvem que você pode usar para gerenciar servidores, clusters kubernetes e aplicativos em ambientes locais, multinuvem e de borda. Ele fornece uma experiência de gerenciamento unificada, permitindo que você governe recursos em diferentes ambientes usando serviços de gerenciamento do Azure, como Azure Policy, Microsoft Defender para Nuvem e Azure Monitor.
- Os repositórios Git, Helm e Bitbucket (públicos e privados) podem hospedar configurações do GitOps, incluindo repositórios do Azure DevOps e do GitHub.
- Registros de contêiner (públicos e privados), incluindo o Registro de Contêiner do Azure e o Docker Hub, hospedam imagens de contêiner.
- do Azure Pipelines é um serviço de CI (integração contínua) e CD (entrega contínua) que automatiza atualizações para repositórios e registros.
- O Flux é uma ferramenta de implantação do GitOps de software livre que os clusters kubernetes habilitados para Azure Arc podem usar. Você pode usar a conexão do Azure Arc para implementar os componentes de cluster que acompanham as alterações nos repositórios Git, Helm ou Kustomize designados e aplicá-los ao cluster local. O operador Flux periodicamente (ou com base em um gatilho) revisa a configuração de cluster existente para garantir que ele corresponda ao do repositório. Se detectar diferenças, o Flux as corrigirá aplicando ou, no caso de descompasso de configuração, reaplicando a configuração desejada.
Detalhes do cenário
A execução de contêineres em escala requer um orquestrador para automatizar o agendamento, a implantação, a rede, o dimensionamento, o monitoramento de integridade e o gerenciamento de contêineres. O Kubernetes é um orquestrador comumente usado para novas implantações em contêineres. À medida que o número de clusters e ambientes do Kubernetes aumenta, gerenciá-los individualmente pode ser desafiador. O uso de serviços habilitados para Azure Arc, como Kubernetes habilitado para Azure Arc, GitOps, Azure Monitor e Azure Policy, reduz a carga administrativa e ajuda a resolver esse desafio.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
O Well-Architected Framework fornece princípios orientadores que ajudam a avaliar e otimizar os benefícios das soluções baseadas em nuvem. Dada a integração inerente de implantações locais do AKS com tecnologias do Azure, é apropriado aplicar recomendações de estrutura ao seu design e implementação do GitOps.
Fiabilidade
A confiabilidade garante que seu aplicativo possa cumprir os compromissos que você faz com seus clientes. Para obter mais informações, consulte Visão geral do pilar de confiabilidade.
- Usar os recursos de alta disponibilidade do Kubernetes para garantir alta confiabilidade em soluções baseadas em GitOps.
- usar o Flux v2 para aumentar ainda mais a disponibilidade do aplicativo em implantações que abrangem vários locais ou clusters.
- Usar implantações automatizadas para reduzir a possibilidade de erro humano.
- Integrar um pipeline de CI/CD em sua arquitetura para melhorar a eficácia dos testes automatizados.
- Acompanhar todas as alterações de código para que você possa identificar e resolver problemas rapidamente. Para acompanhar essas alterações operacionais, use os recursos internos do GitHub ou do Azure DevOps. Você pode usar essas ferramentas para implementar políticas e automação para garantir que as alterações sejam controladas, siga o processo de aprovação apropriado e sejam manteneveis.
Segurança
A segurança fornece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.
Entenda os benefícios de segurança da arquitetura. Com pipelines flux v2, Kustomize, GitOps e DevOps, as alterações operacionais são aplicadas por meio da automação. Você pode controlar e auditar o código que implementa essas práticas operacionais aproveitando mecanismos como proteção de branch, revisões de solicitação de pull e histórico imutável. A abordagem iac remove a necessidade de gerenciar permissões para acessar a infraestrutura e dá suporte ao princípio de privilégios mínimos. O suporte do Flux para escopo de configuração baseado em namespace facilita cenários multilocatários.
Entenda a criptografia. Para ajudar a garantir a segurança de dados, o serviço de configuração de cluster armazena os dados de recurso de configuração do Flux em um banco de dados do Azure Cosmos DB e os criptografa em repouso.
Considere usar pontos de extremidade privados. O GitOps dá suporte ao Link Privado do Azure para conectividade com os serviços relacionados ao Azure Arc.
Usar as políticas do Azure e o Azure Arc
O Azure Arc estende o escopo do gerenciamento de recursos além do Azure. O escopo estendido fornece uma gama de benefícios que se aplicam a servidores físicos e virtuais. No contexto do AKS, esses benefícios incluem:
- de Governança
. O Azure Arc pode impor a governança de runtime que afeta os clusters do AKS e seus pods usando o Azure Policy para Kubernetes e relatórios centralizados da conformidade de política correspondente. Você pode usar essa funcionalidade para, por exemplo, impor o uso de HTTPS para o tráfego de entrada direcionado ao cluster do Kubernetes ou para garantir que os contêineres ouçam apenas em portas específicas que você designar. - operações aprimoradas. O Azure Arc fornece suporte aprimorado para a configuração de cluster automatizado por meio do GitOps.
O Azure Policy facilita o gerenciamento centralizado do GitOps por meio do implantar o GitOps no cluster do Kubernetes definição de política. Depois de atribuir essa política, ela aplicará automaticamente qualquer configuração baseada em GitOps que você escolher para clusters kubernetes habilitados para Azure Arc que você designar, se os recursos do Azure Resource Manager estiverem no escopo da atribuição.
Otimização de custo
A otimização de custos é para reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.
Use o de automação que o GitOps fornece para minimizar sua sobrecarga de gerenciamento e manutenção. O modelo operacional simplificado requer menos esforço para manter e resulta em custos operacionais reduzidos.
usar o AKS habilitado pelo Arc. AKS Arc fornece suporte interno para dimensionamento automático dos recursos de computação e maior densidade de carga de trabalho inerente à contêinerização. O dimensionamento automático pode ajudá-lo a dimensionar corretamente sua infraestrutura física e acelerar as iniciativas de consolidação do datacenter, o que pode ajudá-lo a economizar dinheiro.
Excelência operacional
A excelência operacional abrange os processos de operações que implantam um aplicativo e o mantêm em execução em produção. Para obter mais informações, consulte Visão geral do pilar de excelência operacional.
usar repositórios GitOps para fornecer uma única fonte de verdade que armazena todos os dados de infraestrutura de cluster e aplicativos do AKS. Esses repositórios podem servir como o único componente que aplica alterações ao cluster.
Aproveite a integração do GitOps com a abordagem de DevOps à infraestrutura para reduzir o tempo necessário para fornecer novas versões de software. Também recomendamos que você use o Azure Resource Manager e o Azure Arc para criar um modelo operacional consistente para cargas de trabalho em contêineres baseadas em nuvem e locais. Para controlar as configurações do GitOps em diferentes níveis, use o Azure Policy junto com os recursos dos operadores flux. Ao fazer isso, você pode estabelecer o controle no nível da empresa, no nível de um cluster do AKS individual ou até mesmo no nível de namespaces específicos em um cluster.
Criar configurações do GitOps com escopo para um cluster (ou para vários clusters) para implementar uma linha de base para componentes da infraestrutura em contêineres, como controladores de entrada, malhas de serviço, produtos de segurança e soluções de monitoramento. Isso pode ajudá-lo a garantir que seus clusters atendam aos requisitos de infraestrutura de linha de base.
Criar configurações do GitOps no nível do namespace que permitem controlar os recursos de suas cargas de trabalho em um nível mais granular (por exemplo, pods, serviços e rotas de entrada) e, portanto, garantir que suas cargas de trabalho estejam em conformidade com os padrões do aplicativo. Seguindo essas diretrizes, você pode garantir que a implantação e o gerenciamento de aplicativos AKS Arc permaneçam eficientes, eficazes e econômicos.
Usar o GitOps
O GitOps é uma ótima correspondência para o gerenciamento de clusters do AKS. O Kubernetes é baseado no modelo declarativo. O estado do cluster e seus componentes são descritos no código. O GitOps armazena esse código em um repositório Git e o usa para definir o estado desejado do ambiente de destino.
As alterações de código estão sujeitas a controle de versão, auditoria e aprovações opcionais. Você pode usar revisões e aprovações para disparar automaticamente atualizações da infraestrutura do AKS e cargas de trabalho em contêineres. O GitOps usa um modelo de pull, no qual um conjunto especializado de componentes de cluster sonda o status do repositório. Quando uma alteração é detectada, um componente GitOps hospedado pelo AKS recupera e aplica a nova configuração.
O GitOps minimiza significativamente a necessidade de gerenciamento direto de cluster, resultando em um modelo operacional simplificado e também maior segurança. O GitOps dá suporte ao princípio do privilégio mínimo. Por exemplo, o GitOps remove a necessidade de modificar clusters manualmente por meio do kubectl, portanto, menos privilégios são necessários. O GitOps também fornece comentários antecipados sobre as alterações de política propostas. Os comentários antecipados são particularmente valiosos para os desenvolvedores, pois ajudam a reduzir os riscos e os custos associados a bugs.
O GitOps simplifica a padronização das configurações de cluster em sua organização para atender aos requisitos de conformidade e governança. Você pode definir uma configuração de linha de base que deseja aplicar a cada cluster e seus componentes, incluindo, por exemplo, políticas de rede, associações de função e políticas de segurança do pod. Para implementar essa configuração em todos os clusters habilitados para Azure Arc, você pode usar o Azure Policy, direcionando grupos de recursos ou assinaturas. Essas políticas se aplicam automaticamente aos recursos existentes e também aos recursos criados após a atribuição de política.
O GitOps vincula seu cluster a um ou mais repositórios Git. Você pode usar cada repositório para descrever diferentes aspectos da configuração do cluster. O modelo declarativo resultante facilita a automação do provisionamento e gerenciamento de recursos do Kubernetes, como namespaces ou implantações por meio de seus arquivos de manifesto. Você também pode usar gráficos do Helm, que, juntamente com Flux v2 e Kustomize, facilitam a implantação automatizada de aplicativos em contêineres ou arquivos Kustomize que descrevem alterações específicas do ambiente.
Usar Flux
O Flux é implementado como um operador kubernetes. Ele usa um conjunto de controladores e APIs declarativas correspondentes. Os controladores gerenciam um conjunto de recursos personalizados que funcionam coletivamente para fornecer a funcionalidade pretendida.
O GitOps está habilitado em um cluster kubernetes habilitado para Azure Arc como uma extensão de cluster Microsoft.KubernetesConfiguration/extensions/microsoft.flux
. Depois de instalar a extensão do cluster microsoft.flux
, você pode criar um ou mais recursos fluxConfigurations
que sincronizam o conteúdo das fontes de configuração com o cluster e reconciliam o cluster com um estado desejado.
Por padrão, a extensão microsoft.flux
instala os controladores Flux (Origem, Kustomize, Helm e Notificação) e CRD (Definições de Recursos Personalizados do FluxConfig), fluxconfig-agent
e fluxconfig-controller
. Você também pode escolher quais desses controladores deseja instalar e, opcionalmente, pode instalar os controladores image-automation
e image-reflector
do Flux, que facilitam a atualização e a recuperação de imagens do Docker.
Quando você cria um recurso de fluxConfigurations
, os valores fornecidos para os parâmetros, como o repositório Git de destino, são usados para criar e configurar os objetos kubernetes que habilitam a funcionalidade do GitOps no cluster.
Quando você implanta e configura extensões de cluster do Flux v2, ele fornece os seguintes componentes e funcionalidade:
-
source-controller
. Monitora fontes de configurações personalizadas, como repositórios Git, repositórios helm e serviços de armazenamento em nuvem, como buckets S3, e sincroniza e autoriza com essas fontes. -
kustomize-controller
. Monitora recursos personalizados baseados em CRDs de Kustomization, que contêm manifestos do Kubernetes e arquivos YAML brutos. Aplica os manifestos e os arquivos YAML ao cluster. -
helm-controller
. Monitora recursos personalizados baseados em gráficos e armazenados em repositórios do Helm exibidos porsource-controller
. -
notification-controller
. Gerencia eventos de entrada que se originam de um repositório Git e eventos de saída, como aqueles direcionados ao Microsoft Teams ou ao Slack. -
FluxConfig CRD
. Representa recursos personalizados que definem objetos Kubernetes específicos do Flux. -
fluxconfig-agent
. Detecta recursos de configuração do Flux novos e atualizados. Inicia as atualizações de configuração correspondentes no cluster. Comunica alterações de status ao Azure. -
fluxconfig-controller
. Monitorafluxconfigs
recursos personalizados.
A versão 2 do Flux fornece estes recursos adicionais:
Categoria | Característica |
---|---|
infraestrutura e gerenciamento de carga de trabalho | Gerenciamento de dependência de implantação |
Integração com o RBAC (controle de acesso baseado em função) do Kubernetes | |
Avaliações de integridade para clusters e suas cargas de trabalho | |
Atualizações automatizadas de imagem de contêiner para Git, incluindo verificação e aplicação de patch de imagem | |
Interoperabilidade com provedores de API de Cluster | |
segurança e governança | Alertas para sistemas externos (por meio de remetentes de webhook) |
Validação orientada por política, incluindo suporte para o Gatekeeper do Open Policy Agent | |
Verificação e aplicação de patch de imagem de contêiner | |
Alertas para sistemas externos (por meio de remetentes de webhook) | |
Integração com outros fluxos do GitOps | Integração com uma variedade de provedores Git, incluindo GitHub, GitLab e Bitbucket |
Interoperabilidade com provedores de fluxo de trabalho, incluindo o GitHub Actions |
Para obter mais informações, consulte configurações do GitOps Flux v2 com o AKS e o Kubernetes habilitado para Azure Arc.
Eficiência de desempenho
A eficiência de desempenho é a capacidade da sua carga de trabalho de dimensionar para atender às demandas colocadas nele pelos usuários de maneira eficiente. Para obter mais informações, consulte Visão geral do pilar de eficiência de desempenho.
As cargas de trabalho de cluster se beneficiam da escalabilidade e da agilidade inerentes à plataforma kubernetes. O Flux v2 oferece agilidade adicional, reduzindo o tempo necessário para entrega de software de ponta a ponta.
- Otimizar o cluster do Kubernetes e a infraestrutura configuração para suas cargas de trabalho específicas. Recomendamos que você trabalhe com o desenvolvedor de aplicativos para determinar as configurações necessárias.
- Usar o recurso de dimensionamento automático no Kubernetes. Para obter mais informações, consulte dimensionamento automático de cluster no AKS habilitado pelo Azure Arc.
- Adicionar um cache para otimizar o aplicativo.
- Estabelecer uma linha de base de desempenho. Faça benchmark de sua arquitetura e use métricas e ferramentas de monitoramento para identificar quaisquer problemas ou gargalos que afetem o desempenho.
Contribuintes
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos colaboradores a seguir.
Autores principais:
- Sarah Cooley | Gerenciador de Programas Principal
- Mike Kostersitz | Principal Líder do Gerenciador de Programas
Outros colaboradores:
- Mick Alberts | Gravador Técnico
- Nate Waters | Gerente de Marketing de Produto
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
- início rápido : configurar o AKS Arc usando o Windows Admin Center
- Início Rápido: Criar um cluster kubernetes local no AKS Arc usando o Windows Admin Center
- Início Rápido: configurar um host do Serviço de Kubernetes do Azure no Azure Local e no Windows Server e implantar um cluster de carga de trabalho usando o PowerShell
- configurações do GitOps Flux v2 com o AKS e o Kubernetes habilitado para Azure Arc
- Tutorial: Usar o GitOps com o Flux v2 nos clusters kubernetes ou AKS habilitados para Azure Arc
- Tutorial : Implementar CI/CD com o GitOps (Flux v2)
Recursos relacionados
- arquitetura de linha de base para AKS no Local do Azure
- arquitetura de rede para AKS no Azure Local
- gerenciamento híbrido e implantação do Azure Arc para clusters do Kubernetes