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 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 aplicam-se 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 on Azure Stack HCI versão 23H2.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Fluxo de Trabalho
A arquitetura ilustra uma implementação que implanta aplicativos em contêineres em clusters AKS executados 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.
- No local, um administrador implanta um cluster AKS na infraestrutura do Azure Stack HCI 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 AKS.
- As configurações do GitOps facilitam o IaC. Essas configurações do 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 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 AKS monitoram o repositório em busca de alterações, detetando 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 do 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 públicos ou privados.
- O operador Flux no cluster AKS deteta 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 localmente. 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 integra-se aos serviços do Azure para fornecer uma experiência de nuvem híbrida.
- O AKS no Azure Stack HCI permite que desenvolvedores e administradores usem o AKS para implantar e gerenciar aplicativos em contêineres 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ê gerencie recursos em diferentes ambientes usando serviços de gerenciamento do Azure, como Azure Policy, Microsoft Defender for Cloud 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.
- Os 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.
- 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.
- O Flux é uma ferramenta de implantação do 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ê designa 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 ela corresponda à do repositório. Se detetar 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 que um orquestrador automatize 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 cresce, gerenciá-los individualmente pode ser um desafio. Usar serviços habilitados para Arco do Azure, como Kubernetes habilitados para Azure Arc, GitOps, Azure Monitor e Azure Policy, reduz a carga administrativa e ajuda a enfrentar 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 das implantações AKS locais com as 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 atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte 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 em sua arquitetura para melhorar a eficácia dos testes automatizados.
- Rastreie 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 oferece 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 os pipelines Flux v2, Kustomize, GitOps e DevOps, as mudanças 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 ramificação, 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 suporta o princípio de menor privilégio. O suporte de fluxo para escopo de configuração baseado em namespace facilita cenários multilocatário.
Entenda a criptografia. Para ajudar a garantir a segurança dos dados, o serviço de configuração de cluster armazena os dados do recurso de configuração do Flux em um banco de dados do Azure Cosmos DB e os criptografa em repouso.
Considere o uso de 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 Azure Arc
O Azure Arc estende o escopo do gerenciamento de recursos além do Azure. O escopo estendido fornece uma série de benefícios que se aplicam a servidores físicos e virtuais. No contexto da AKS, esses benefícios incluem:
- Governação. O Azure Arc pode impor a governança de tempo de execução que afeta os clusters AKS e seus pods usando a Política do Azure para Kubernetes e relatórios centralizados da conformidade de política correspondente. Você pode usar esse recurso para, por exemplo, impor o uso de HTTPS para o tráfego de entrada destinado ao cluster Kubernetes ou para garantir que os contêineres escutem apenas em portas específicas que você designar.
- Operações melhoradas. O Azure Arc fornece suporte aprimorado para configuração automatizada de cluster por meio do GitOps.
O Azure Policy facilita o gerenciamento centralizado do 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 Azure Resource Manager estiverem no escopo da atribuição.
Otimização de custos
A otimização de custos consiste em 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 a automação que o GitOps fornece para minimizar suas despesas gerais de gerenciamento e manutenção. O modelo operacional simplificado requer menos esforço de manutenção e resulta em custos operacionais reduzidos.
Use o AKS ativado pelo Arc. O AKS Arc fornece suporte integrado para dimensionamento automático dos recursos de computação e aumento da 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 operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte 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 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 a Política do Azure junto com os recursos dos operadores do Flux. Ao fazer isso, você pode estabelecer o controle no nível da empresa, 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 para um cluster (ou para 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 satisfaçam os requisitos de infraestrutura de linha de base.
Crie configurações de GitOps no nível de 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 de aplicativos. 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 em 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 acionar automaticamente atualizações da infraestrutura do 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 é detetada, 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 suporta 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 mudanças de política propostas. O feedback inicial é particularmente valioso para os desenvolvedores porque os ajuda a reduzir o risco e os custos associados a bugs.
O GitOps simplifica a padronização de configurações de cluster em toda a 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 vincula seu cluster a um ou mais repositórios Git. Você pode usar cada repositório para descrever diferentes aspetos 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 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 é habilitado em um cluster Kubernetes habilitado para Azure Arc como uma Microsoft.KubernetesConfiguration/extensions/microsoft.flux
extensão de cluster. Depois de instalar a extensão de microsoft.flux
cluster, você pode criar um ou mais fluxConfigurations
recursos que sincronizam o conteúdo das fontes de configuração com o cluster e reconciliar o cluster para 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 qual desses controladores deseja instalar e, opcionalmente, 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 em relação a essas fontes.kustomize-controller
. Monitora recursos personalizados baseados em CRDs de Kustomização, 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 apresentados pelosource-controller
.notification-controller
. Gerencia eventos de entrada originários 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
. Deteta 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 recursos personalizadosfluxconfigs
.
A versão 2 do Flux fornece estes recursos adicionais:
Categoria | Funcionalidade |
---|---|
Gerenciamento de infraestrutura e carga de trabalho | Gerenciamento de dependência de implantação |
Integração com o controle de acesso baseado em função (RBAC) 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 | |
Segurança e governação | Alertas para sistemas externos (através de remetentes webhook) |
Validação orientada por políticas, incluindo suporte para Open Policy Agent Gatekeeper | |
Verificação e aplicação de patches em imagens de contêiner | |
Alertas para sistemas externos (através de 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 AKS e Kubernetes habilitados para Azure Arc.
Eficiência de desempenho
Eficiência de desempenho é a capacidade da sua carga de trabalho para dimensionar para satisfazer as exigências que os utilizadores lhe colocam de forma 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 de software de ponta a ponta.
- Otimize o cluster do Kubernetes e a configuração da infraestrutura 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 obter mais informações, consulte Dimensionamento automático de cluster no AKS habilitado pelo Azure Arc.
- Adicione um cache para otimizar o aplicativo.
- Estabeleça uma linha de base de desempenho. Avalie sua arquitetura e use métricas e ferramentas de monitoramento para identificar quaisquer problemas ou gargalos que afetem o desempenho.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Sarah Cooley - Brasil | Gerente de Programa Principal
- Mike Kostersitz - Brasil | Gerente Principal de Programa Líder
Outros contribuidores:
- Mick Alberts - Brasil | Redator Técnico
- Nate Águas | Gerente de Marketing de Produto
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Guia de início rápido: configurar o AKS Arc usando o Windows Admin Center
- Guia de início rápido: criar um cluster Kubernetes local no AKS Arc usando o Windows Admin Center
- Guia de 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 o AKS e o Kubernetes habilitado para Azure Arc
- Tutorial: Usar o GitOps com o Flux v2 em clusters Kubernetes ou AKS habilitados para Azure Arc
- Tutorial: Implementar a CI/CD com o GitOps (Flux v2)