Esta arquitetura de referência ilustra como os programadores podem criar, gerir e monitorizar contentores implementados na cloud pública, em várias clouds e no local.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Componentes
- Azure Container Registry é um serviço que cria um registo gerido. Cria, armazena e gere imagens de contentor e pode armazenar modelos de machine learning em contentores.
- Azure Kubernetes Service (AKS) é um serviço gerido que oferece um cluster do Kubernetes gerido com funcionalidade de escalamento horizontal elástico. Nesta arquitetura, é utilizado um cluster do Kubernetes local para executar vários contentores no local.
- Azure Container Instances executa contentores a pedido num ambiente do Azure sem servidor. Azure Container Instances é um método de baixa fricção para executar contentores que não requerem uma instalação completa do Docker ou do Kubernetes.
- O Azure Cosmos DB é uma base de dados de vários modelos que pode servir dados de forma elástica a uma escala massiva. Foi concebido para aplicações que são distribuídas globalmente num modelo de várias escritas.
- O Azure Key Vault é um serviço de gestão de credenciais com suporte de hardware que tem uma integração apertada com os serviços de identidade da Microsoft e os recursos de computação.
- Azure Policy impõe normas e avalia a conformidade dos recursos direcionados implementados no Azure.
- Azure Private Link cria um ponto final privado na sua rede virtual que pode utilizar para comunicar com a plataforma como um serviço (PaaS) do Azure sem expor o seu serviço à Internet pública.
- O Azure Monitor é um conjunto abrangente de serviços de monitorização para aplicações implementadas no Azure ou no local.
- Microsoft Defender para a Cloud é um sistema unificado de proteção contra ameaças e gestão de segurança para cargas de trabalho no local, em várias clouds e no Azure.
Detalhes do cenário
Potenciais casos de utilização
Utilizações típicas desta arquitetura:
- Aplicações Web com componentes internos e externos que implementam na cloud pública e no local com imagens de contentor partilhadas.
- Ciclos de testes de implementação modernos com análise de qualidade, testes, desenvolvimento ou teste alojados no local e na cloud pública.
Recomendações
Registo de Contentores do Azure
Azure Container Registry é um registo de contentores empresariais que pode implementar melhores práticas comuns ao proteger imagens de acesso não autorizado, replicar imagens em várias geografias, impedir entradas/saídas desnecessárias e otimizar os custos. Suporta a georreplicação chave na mão em várias regiões do Azure, o que o ajuda a minimizar a latência entre Azure Container Registry, os anfitriões de contentor e a equipa de desenvolvimento.
Azure Container Registry inclui um conjunto de tarefas, denominadas Tarefas do ACR, que podem gerir a criação e manutenção de imagens de contentores baseadas na cloud em vários sistemas operativos. As Tarefas do ACR podem ser acionadas manualmente, através de uma alteração ao controlo de origem, de uma alteração à imagem de contentor base ou de uma agenda fixa. Seguem-se cenários em que pode utilizar tarefas do ACR:
- Um programador da Internet das Coisas (IoT) está a criar imagens de contentor para serem executadas em dispositivos IoT baseados em ARM. O programador pode estar a utilizar um sistema operativo Linux ou macOS para desenvolver o software, mas precisa de executar a compilação numa plataforma arm.
- Uma equipa de desenvolvimento de software como serviço (SaaS) cria software em computadores Windows que executam imagens de contentor em anfitriões Linux. A equipa quer que as suas compilações sejam feitas num anfitrião Linux.
- Um open source responsável pela manutenção de projetos está a criar uma imagem de contentor que aumenta uma imagem de base do sistema operativo bem conhecida. O responsável pela manutenção quer que a imagem do contentor seja atualizada sempre que a imagem de base for atualizada.
Nota
As Tarefas do ACR podem uniformizar o ambiente de compilação e realizar a integração contínua das imagens de contentor.
Azure Container Instances
Azure Container Instances é um ambiente de computação sem servidor e de baixa fricção para aplicações em contentores. É uma excelente opção para a implementação de contentores devido à sua baixa sobrecarga de gestão e tempos de arranque rápidos. As imagens de contentor armazenadas no Azure Container Registry podem ser implementadas diretamente em grupos de contentores Azure Container Instances.
Nesta arquitetura, Azure Container Instances grupos de contentores são utilizados como nós virtuais para um cluster Azure Kubernetes Service. O AKS utiliza nós virtuais para registar um pod virtual com capacidade ilimitada e a capacidade de despachar pods com Azure Container Instances grupos de contentores. Isto é ideal quando quer um aprovisionamento rápido de pods individuais e apenas quer pagar o tempo de execução por segundo.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser utilizados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, veja Microsoft Azure Well-Architected Framework.
Fiabilidade
A fiabilidade garante que a sua aplicação pode cumprir os compromissos que assumiu com os seus clientes. Para obter mais informações, veja Descrição geral do pilar de fiabilidade.
- Normalmente, as aplicações modernas incluem um site, uma ou mais APIs HTTP e uma ligação a um arquivo de dados. As aplicações dentro de uma imagem de contentor devem estar sem estado para dimensionamento e disponibilidade horizontais máximos. Os dados devem ser armazenados num serviço separado que tenha uma disponibilidade semelhante. Para obter orientações sobre a conceção de uma aplicação que pode ser dimensionada para milhares de nós, veja a secção eficiência de desempenho do Azure Well-Architected Framework.
- O AKS tem uma linha de base de arquitetura de referência que define cada uma das categorias do Well-Architected Framework e recomenda uma implementação que esteja em conformidade com a categoria.
- Para reduzir o impacto de grandes solicitações de imagens de contentor, implemente Azure Container Registry numa região mais próxima da equipa de desenvolvimento e dos serviços de computação de produção. Considere uma implementação de Azure Container Registry georreplicada para equipas distribuídas e contentores de produção distribuídos.
- O Azure Cosmos DB é um serviço de base de dados que suporta a distribuição global chave na mão e suporta a ativação pós-falha automática em várias regiões. O Azure Cosmos DB também tem a capacidade de ativar várias escritas de regiões e adicionar ou remover dinamicamente regiões.
Segurança
A segurança fornece garantias contra ataques deliberados e abuso dos seus valiosos dados e sistemas. Para obter mais informações, veja Descrição geral do pilar de segurança.
Utilize Azure Private Link para comunicar com e entre serviços na sua rede virtual. Ao fazê-lo, encaminha o tráfego através de sub-redes específicas para aceder diretamente aos serviços individuais do Azure e proteger os seus dados contra exposição inadvertida à Internet pública.
Otimização de custos
A otimização de custos consiste em analisar formas de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, veja Descrição geral do pilar de otimização de custos.
- Utilize a calculadora de preços do Azure para prever os custos.
- Se a equipa de desenvolvimento e as instâncias de produção estiverem numa única região, considere colocar o recurso do Container Registry na mesma região. Ao fazê-lo, minimiza a latência push e pull do contentor e evita os custos mais elevados do escalão de serviço premium Azure Container Registry.
- Configurar Azure Container Registry para utilizar um Rede Virtual do Azure através de um ponto final de serviço Azure Private Link requer que a instância Azure Container Registry seja implementada no escalão Premium.
- O AKS oferece gestão de clusters gratuita. Só é faturado pelos recursos de computação, armazenamento e rede que o AKS utiliza para alojar nós. Veja Preços da Máquina Virtual do Azure ou Azure Container Instances para rever os preços de cada serviço de computação.
- Se precisar de um contrato de nível de serviço (SLA) de tempo de atividade específico, pode ativar a funcionalidade opcional do SLA de tempo de atividade do AKS.
- Azure Container Instances recursos são faturados pela segunda, com base numa alocação de recursos de CPU e memória virtuais ao grupo de contentores. A alocação de recursos de computação desnecessários pode aumentar significativamente os custos de execução desta solução de arquitetura. A monitorização e otimização de custos é um processo contínuo que deve ser realizado em intervalos regulares ao longo da duração da sua implementação. Para obter mais informações sobre como minimizar Azure Container Instances custos operacionais, veja a secção otimização de custos do Azure Well-Architected Framework.
Excelência Operacional
A excelência operacional abrange os processos de operações que implementam uma aplicação e a mantêm em execução em produção. Para obter mais informações, veja Descrição geral do pilar de excelência operacional.
Capacidade de gestão
- Considere utilizar modelos de Resource Manager do Azure para implementar grupos de contentores do Azure Container Instance de forma repetível para implementações de várias regiões e orquestração em larga escala. Também pode utilizar modelos de Resource Manager do Azure para implementar Azure Kubernetes Service, Key Vault do Azure e Azure Cosmos DB.
- Considere utilizar o controlo de acesso baseado em funções do Azure (RBAC do Azure) para impedir que os utilizadores criem ou eliminem acidentalmente instâncias de contentor sem permissão.
- Utilize o Azure Monitor para monitorizar métricas e registos para contentores no local e remotos, analisar os dados com consultas e criar alertas para situações anormais.
- Utilize Azure Policy para implementar a imposição de um conjunto de regras para clusters e pods implementados no Kubernetes Service ou num cluster do Kubernetes compatível com o Azure Arc.
DevOps
- Utilize tarefas do ACR para automatizar a compilação de imagens de contentor numa agenda ou quando forem efetuadas alterações ao código fonte.
- Considere utilizar tarefas do ACR para atualizar automaticamente as imagens de contentor à medida que as imagens de base são corrigidas e atualizadas.
- A equipa do AKS desenvolveu ações do GitHub que podem ajudar na implementação do GitOps e podem facilitar implementações de Azure Container Registry para clusters do AKS.
- Se o cluster do Kubernetes estiver anexado ao Azure Arc, pode gerir o cluster do Kubernetes com o GitOps. Para rever as melhores práticas para ligar um cluster híbrido do Kubernetes ao Azure Arc, veja a arquitetura de referência de gestão e implementação híbrida do Azure Arc para clusters do Kubernetes .
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, veja Descrição geral do pilar Eficiência do desempenho.
- As aplicações Web em contentores destinadas ao cliente beneficiam de dimensionamentos variáveis. Pode utilizar serviços como o Azure Container Instances e o AKS para aumentar horizontalmente de forma dinâmica para satisfazer a procura antecipada ou medida. Também pode utilizar serviços como Funções do Azure e Serviço de Aplicações do Azure para executar imagens de contentor em escala.
- A utilização interna de aplicações é mais previsível e pode ser executada num cluster do Kubernetes existente. Se estiver interessado em implementar serviços geridos pelo Azure no local, considere:
- O Azure Cosmos DB dimensiona automaticamente os recursos de serviço para satisfazer as necessidades de armazenamento da sua aplicação de forma elástica. Para débito, pode optar por pré-aprovisionar o débito ou operar o Azure Cosmos DB como um serviço sem servidor. Se a carga de trabalho tiver exigências variáveis ou imprevisíveis, também pode optar por aprovisionar o débito com o dimensionamento automático.
- Normalmente, as aplicações modernas incluem um site, uma ou mais APIs HTTP e uma ligação a um arquivo de dados. As aplicações numa imagem de contentor devem estar sem estado para o dimensionamento e disponibilidade horizontais máximos. Os dados devem ser armazenados num serviço separado que tenha uma disponibilidade semelhante. Para obter orientações sobre a conceção de uma aplicação que pode ser dimensionada para milhares de nós, veja a secção de eficiência de desempenho do Azure Well-Architected Framework.
- O AKS tem uma linha de base de arquitetura de referência que define cada uma das categorias do Well-Architected Framework e recomenda uma implementação que esteja em consonância com a categoria.
- Para reduzir o impacto de grandes solicitações de imagens de contentor, implemente Azure Container Registry numa região mais próxima da equipa de desenvolvimento e dos serviços de computação de produção. Considere uma implementação de Azure Container Registry georreplicada para equipas distribuídas e contentores de produção distribuídos.
- O Azure Cosmos DB é um serviço de base de dados que suporta a distribuição global chave na mão e suporta a ativação pós-falha automática em várias regiões. O Azure Cosmos DB também tem a capacidade de ativar múltiplas escritas de regiões e adicionar ou remover regiões dinamicamente.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- Pieter de Bruin | Gestor de Programas Sénior
Para ver perfis do LinkedIn não públicos, inicie sessão no LinkedIn.
Passos seguintes
- documentação do Azure Container Registry
- documentação do Azure Kubernetes Service
- Documentação do Azure Policy
- Documentação do Azure Monitor
- Documentação do Azure Container Instances
- Documentação do Azure Cosmos DB
- Documentação do Azure Key Vault
- documentação do Azure Private Link
- documentação do Microsoft Defender para a Cloud
- Documentação do Kubernetes
Recursos relacionados
Documentação de orientação híbrida relacionada:
- Design de arquitetura híbrida
- Opções híbridas do Azure
- Considerações de design de aplicações híbridas
- Implementar uma aplicação híbrida com dados no local que dimensionam entre clouds
Arquiteturas relacionadas:
- Infraestrutura empresarial como código com o Bicep e o Azure Container Registry
- Arquitetura de linha de base para um cluster do Azure Kubernetes Service (AKS)
- Arquitetura de microsserviços no Azure Kubernetes Service
- Arquitetura avançada de microsserviços Azure Kubernetes Service (AKS)
- GitOps para Azure Kubernetes Service
- Monitorizar uma arquitetura de microsserviços no Azure Kubernetes Service (AKS)
- Monitorização empresarial com o Azure Monitor