As informações nesse artigo fornece recomendações para criar um pipeline de implantação de aplicativos conteineirizados no Serviço Kubernetes do Azure habilitado pelo Azure Arc. Os aplicativos podem ser executados no Azure Stack HCI 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 ao AKS no Azure Stack HCI versão 22H2 e ao AKS-HCI no Windows Server. A versão mais recente do AKS é executada no Azure Stack HCI 23H2. Para obter mais informações sobre a versão mais recente, consulte a documentação do AKS no Azure Stack HCI versão 23H2.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Workflow
A arquitetura ilustra uma implementação que implanta aplicativos conteineirizados em clusters AKS em execução no Azure Stack HCI ou no Windows Server. Ele usa GitOps para gerenciar a infraestrutura como código (IaC).
- Um operador configura uma infraestrutura local no Azure Stack HCI ou no hardware do Windows Server capaz de hospedar um cluster AKS.
- Na infraestrutura local, um administrador implanta um cluster AKS na infraestrutura do Azure Stack HCI ou 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 AKS.
- As configurações do GitOps facilitam o IaC. Essas configurações de GitOps representam o estado desejado do cluster AKS e usam as informações fornecidas pela administração local. A administração local refere-se às ferramentas de gerenciamento, interfaces e práticas fornecidas pelo cluster AKS implantado no Azure Stack HCI ou no Windows Server.
- O administrador envia 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 AKS monitoram o repositório em busca de alterações, detectando e aplicando atualizações conforme necessário.
- A extensão Flux no cluster AKS recebe uma notificação do fluxo GitOps quando são feitas alterações nas configurações nos repositórios. Ele aciona automaticamente a implantação da configuração desejada usando gráficos Helm ou Kustomize.
- As alterações de aplicativo na forma de configuração ou código novo ou atualizado 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êiner privados ou públicos.
- O operador Flux no cluster 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 mínimo de tempo de inatividade e preservar o estado desejado do cluster.
Componentes
- O Azure Stack HCI é uma solução de infraestrutura hiperconvergente (HCI) que você pode usar para executar cargas de trabalho virtualizadas no local. Ele usa uma combinação de tecnologias de computação, armazenamento e rede definidas por software. Ele foi criado com base no Windows Server e se integra aos serviços do Azure para fornecer uma experiência de nuvem híbrida.
- AKS no Azure Stack HCI permite que desenvolvedores e administradores usem o AKS para implantar e gerenciar aplicativos conteinerizados no Azure Stack HCI.
- O Azure Arc é uma solução de gerenciamento de nuvem híbrida que você pode usar para gerenciar servidores, clusters Kubernetes e aplicativos em ambientes locais, multicloud 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 a Política do Azure, o Microsoft Defender para Nuvem e o 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 Hub do Docker, imagens de contêiner de host.
- O Azure Pipelines é um serviço de integração contínua (CI) e entrega contínua (CD) que automatiza atualizações para repositórios e registros.
- Flux é uma ferramenta de implantação GitOps de código aberto 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 controlam as alterações nos repositórios Git, Helm ou Kustomize que você designar e aplicá-los ao cluster local. O operador Flux periodicamente (ou com base em um gatilho) revisa a configuração do cluster existente para garantir que ela corresponda àquela no repositório. Se detectar diferenças, o Flux as corrige aplicando ou, no caso de desvio 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 da 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 cresce, gerenciá-los individualmente pode ser um desafio. Usar serviços habilitados para o Azure Arc, como Kubernetes habilitado para Azure Arc, GitOps, Azure Monitor e Política do Azure, reduz a carga administrativa e ajuda a enfrentar esse desafio.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar 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 das implantações locais do AKS com as tecnologias do Azure, é apropriado aplicar recomendações de estrutura ao seu design e implementação do GitOps.
Confiabilidade
A confiabilidade garante que seu aplicativo possa cumprir os compromissos que você deve assumir com seus clientes. Para obter mais informações, confira Visão geral do pilar de confiabilidade.
- Use os recursos de alta disponibilidade do Kubernetes para garantir alta confiabilidade em soluções baseadas em GitOps.
- Use o Flux v2 para aumentar ainda mais a disponibilidade do aplicativo em implantações que abrangem vários locais ou clusters.
- Use implantações automatizadas para reduzir a possibilidade de erro humano.
- Integre um pipeline de CI/CD à sua arquitetura para melhorar a eficácia dos testes automatizados.
- Acompanhe todas as alterações de código para que você possa identificar e resolver problemas rapidamente. Para controlar 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, sigam o processo de aprovação apropriado e possam ser mantidas.
Segurança
A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.
Entenda os benefícios de segurança da arquitetura. Com os pipelines Flux v2, Kustomize, GitOps e DevOps, as mudanças operacionais são aplicadas via automação. Você pode controlar e auditar o código que implementa essas práticas operacionais aproveitando mecanismos como proteção de filial, revisões de solicitação pull e histórico imutável. A abordagem IaC elimina a necessidade de gerenciar permissões para acessar a infraestrutura e oferece suporte ao princípio de privilégio mínimo. O suporte do Flux para escopo de configuração baseado em namespace facilita cenários multilocatário.
Entender a criptografia. Para ajudar a garantir a segurança dos dados, o serviço de configuração de cluster armazena os dados de recursos de configuração do Flux numa base de dados DB do Azure Cosmos e encripta-os em repouso.
Considere usar pontos de extremidade privados. O GitOps dá suporte ao Azure Private Link para conectividade com serviços relacionados ao Azure Arc.
Usar 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 oferece uma série de benefícios que se aplicam a servidores físicos e virtuais. No contexto do AKS, esses benefícios incluem:
- Governança. O Azure Arc pode impor a governação do tempo de execução que afeta os clusters AKS e as suas cápsulas utilizando o Azure Policy para Kubernetes e relatórios centralizados da conformidade política correspondente. Você pode usar esse recurso para, por exemplo, impor o uso de HTTPS para tráfego de entrada direcionado ao cluster Kubernetes ou para garantir que os contêineres escutem apenas em portas específicas designadas por você.
- Operações melhoradas. O Azure Arc fornece suporte aprimorado para configuração automatizada de cluster via GitOps.
O Azure Policy facilita o gerenciamento centralizado de GitOps por meio da definição de política de cluster interna Implantar GitOps no Kubernetes. Depois de atribuir essa política, ela aplica automaticamente qualquer configuração baseada em GitOps escolhida aos clusters Kubernetes habilitados para Azure Arc que você designar, se os recursos do Gerenciador de Recursos do Azure estiverem no escopo da atribuição.
Otimização de custo
A otimização de custos consiste em reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.
Use a automação que o GitOps fornece para minimizar a sobrecarga de gerenciamento e manutenção. O modelo operacional simplificado requer menor esforço de manutenção e resulta em redução de custos operacionais.
Use o AKS habilitado pelo Arc. O AKS Arc fornece suporte integrado para dimensionamento automático dos recursos de computação e maior densidade de carga de trabalho inerente à conteinerizaçã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 na produção. Para obter mais informações, confira Visão geral do pilar de excelência operacional.
Use repositórios GitOps para fornecer uma única fonte de verdade que armazena todos os dados de infraestrutura de cluster e aplicativos 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 infraestrutura de DevOps para reduzir o tempo necessário para fornecer novas versões de software. Também recomendamos que você use o Gerenciador de Recursos do Azure e o Azure Arc para criar um modelo operacional consistente para cargas de trabalho em contêineres locais e baseadas em nuvem. Para controlar as configurações do GitOps em diferentes níveis, use a Política do Azure junto com os recursos dos operadores do Flux. Ao fazer isso, você pode estabelecer o controle no nível corporativo, no nível de um cluster AKS individual ou até mesmo no nível de namespaces específicos dentro de um cluster.
Crie configurações de GitOps com escopo em um cluster (ou em vários clusters) para implementar uma linha de base para componentes da infraestrutura conteinerizada, 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.
Crie configurações de GitOps em nível de namespace que permitam 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 sua implantação e gerenciamento de aplicativos AKS Arc permaneçam eficientes, eficazes e econômicos.
Usar GitOps
O GitOps é uma ótima combinação para o gerenciamento de clusters 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 revisões e aprovações opcionais. Você pode usar revisões e aprovações para disparar automaticamente atualizações da infraestrutura AKS e cargas de trabalho em contêineres. O GitOps usa um modelo 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 no AKS recupera e aplica a nova configuração.
O GitOps minimiza significativamente a necessidade de gerenciamento direto de clusters, resultando em um modelo operacional simplificado e também maior segurança. O GitOps apoia o princípio do menor privilégio. Por exemplo, o GitOps elimina a necessidade de modificar clusters manualmente via kubectl, portanto, menos privilégios são necessários. O GitOps também fornece feedback antecipado sobre as alterações de política propostas. O feedback antecipado é particularmente valioso para os desenvolvedores porque os ajuda a reduzir o risco e os custos associados a bugs.
O GitOps simplifica a padronização das configurações de cluster em toda a 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, diretivas de rede, associações de função e diretivas de segurança de pod. Para implementar essa configuração em todos os clusters habilitados para o Azure Arc, você pode usar a Política do Azure, 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 da política.
O GitOps associa seu cluster do Kubernetes 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 Helm, que, juntamente com o Flux v2 e o Kustomize, facilitam a implantação automatizada de aplicativos em contêineres ou arquivos Kustomize que descrevem alterações específicas do ambiente.
Use o 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 trabalham coletivamente para fornecer a funcionalidade pretendida.
O GitOps está habilitado em um cluster Kubernetes habilitado para Azure Arc como uma Microsoft.KubernetesConfiguration/extensions/microsoft.flux
extensão do cluster. Depois que a extensão de cluster é instalada, microsoft.flux
você pode criar um ou mais recursosfluxConfigurations
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 microsoft.flux
extensão instala os controladores Flux (Source, Kustomize, Helm e Notification) e FluxConfig Custom Resource Definitions (CRD), fluxconfig-agent
e fluxconfig-controller
. Você também pode escolher quais desses controladores deseja instalar e, opcionalmente, pode instalar o Flux image-automation
e image-reflector
os controladores, que facilitam a atualização e a recuperação de imagens do Docker.
Quando você cria um fluxConfigurations
recurso, 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 GitOps no cluster.
Quando você implanta e configura extensões de cluster do Flux v2, ele fornece os seguintes componentes e funcionalidades:
source-controller
. Monitora fontes de configurações personalizadas, como repositórios Git, repositórios Helm e serviços de armazenamento em nuvem, como buckets do S3, e sincroniza e autoriza essas fontes.kustomize-controller
. Monitora recursos personalizados baseados em CRDs Kustomization, que contêm manifestos do Kubernetes e arquivos YAML brutos. Aplica os manifestos e arquivos YAML ao cluster.helm-controller
. Monitora recursos personalizados baseados em gráficos e armazenados em repositórios Helm exibidos pelosource-controller
.notification-controller
. Gerencia eventos de entrada originados de um repositório Git e eventos de saída, como aqueles destinados 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
. Monitora recursosfluxconfigs
personalizados.
A versão 2 do Flux fornece estes recursos adicionais:
Categoria | Recurso |
---|---|
Gerenciamento de infraestrutura e 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 imagens de contêiner para o Git, incluindo varredura e aplicação de patches de imagens | |
Interoperabilidade com provedores de API de cluster | |
Governança e segurança | Alerta para sistemas externos (via remetentes webhook) |
Validação orientada por políticas, incluindo suporte para Open Policy Agent Gatekeeper | |
Varredura e aplicação de patches de imagens de contêiner | |
Alerta para sistemas externos (via remetentes webhook) | |
Integração com outros fluxos GitOps | Integração com uma variedade de provedores Git, incluindo GitHub, GitLab e Bitbucket |
Interoperabilidade com provedores de fluxo de trabalho, incluindo ações do GitHub |
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 do desempenho é a capacidade de dimensionar sua carga de trabalho para atender às demandas colocadas por 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 agilidade inerentes à plataforma Kubernetes. O Flux v2 oferece agilidade adicional, reduzindo o tempo necessário para a entrega completa do software.
- Otimize sua configuração de cluster e infraestrutura do Kubernetes para suas cargas de trabalho específicas. Recomendamos que você trabalhe com o desenvolvedor do aplicativo para determinar as configurações necessárias.
- Use o recurso de dimensionamento automático no Kubernetes. Para mais informações, consulte Dimensionamento automático de cluster no AKS habilitado pelo Azure Arc.
- Adicione um cache para otimizar o aplicativo.
- Estabelecer uma linha de base do desempenho. Avalie sua arquitetura e use métricas e ferramentas de monitoramento para identificar quaisquer problemas ou gargalos que afetem o desempenho.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Principais autores:
- Sarah Cooley | Gerente Principal de Programas
- Mike Kostersitz | Líder principal de gerente de programa
Outros colaboradores:
- Mick Alberts | Escritor 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 do Kubernetes no AKS Arc usando o Windows Admin Center
- Início rápido: configurar um host do Serviço Kubernetes do Azure no Azure Stack HCI e no Windows Server e implantar um cluster de carga de trabalho usando o PowerShell
- Configurações do GitOps Flux v2 com AKS e Kubernetes habilitado para Azure Arc
- Tutorial: Usar o GitOps com o Flux v2 em clusters do AKS ou de Kubernetes habilitado para Azure Arc
- Tutorial: implementar CI/CD com o GitOps (Flux v2)