Migrar Aplicativos Azure Spring para o Serviço Kubernetes do Azure
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
Este artigo aplica-se a:✅ Basic/Standard ✅ Enterprise
Este artigo fornece uma visão geral da migração do Azure Spring Apps para o Azure Kubernetes Service (AKS).
O Azure Spring Apps é uma solução de plataforma como serviço (PaaS) projetada especificamente para aplicativos Spring Boot. Isso facilita a implantação, a execução e o gerenciamento desses aplicativos. O Azure Spring Apps cuida da infraestrutura, do dimensionamento e do monitoramento, para que os desenvolvedores possam se concentrar em seu código.
O AKS é uma oferta de infraestrutura como serviço (IaaS) que fornece um ambiente Kubernetes totalmente gerenciado. O AKS oferece mais controle sobre como seus aplicativos são implantados e gerenciados. Ele suporta uma ampla gama de aplicativos em contêineres e permite a personalização para atender a necessidades específicas.
Migrar aplicativos do Azure Spring Apps para o AKS significa passar de um ambiente gerenciado para um que oferece mais flexibilidade. Esse processo requer a adoção de novas ferramentas e práticas para alcançar os mesmos resultados no AKS que você teve com o Azure Spring Apps.
Mapeamento conceitual
Como o Azure Spring Apps e o AKS são tipos diferentes de ofertas de serviços de nuvem, não é totalmente preciso mapear os conceitos do Azure Spring Apps diretamente para o AKS. Além disso, o Azure Spring Apps depende de muitos componentes internos quando usados em ambientes de produção, que não estão listados aqui. O diagrama e a tabela a seguir fornecem um mapeamento simples de conceitos do Azure Spring Apps para o AKS para ajudá-lo a entender o básico. Em um ambiente de produção real, você deve considerar soluções mais seguras e confiáveis.
Serviço Azure Spring Apps | Azure Kubernetes Service |
---|---|
Uma instância de serviço hospeda e protege um limite para aplicativos e outros recursos e oferece suporte a uma rede virtual personalizada. | Um Cluster é a unidade básica de implantação. Dentro de um cluster, um Namespace é uma subdivisão virtual usada para organizar e isolar recursos. Ele compartilha a mesma infraestrutura de rede subjacente definida pela rede virtual do cluster. Escolher entre um cluster dedicado ou um cluster compartilhado com namespaces depende das suas necessidades de negócios. |
Um aplicativo é um aplicativo de negócios que serve como um recurso filho dentro de uma instância de serviço. | Um aplicativo de negócios é um conceito virtual no Azure Spring Apps e é composto por vários recursos no AKS. O Ingress controla o acesso externo aos serviços e define regras para rotear o tráfego para diferentes serviços. Um Serviço abstrai o acesso a um conjunto de pods. Você pode executar uma opção de implantação azul-verde atualizando um serviço para apontar para uma versão diferente de uma implantação usando rótulos. |
Uma implantação é a versão de um aplicativo. Um aplicativo pode ter uma implantação de produção e uma implantação de preparo. | Uma implantação gerencia a implantação e o ciclo de vida de um aplicativo ou serviço específico. Ele também permite atualizações contínuas e reversões, permitindo alterações controladas e contínuas de aplicativos sem tempo de inatividade. |
Uma instância de aplicativo é a unidade de tempo de execução mínima gerenciada pelo serviço. | Um Pod representa um ou mais contêineres firmemente acoplados e hospeda uma única instância de um aplicativo ou carga de trabalho em execução. |
Considerações de rede
Antes de provisionar um cluster AKS, é importante considerar cuidadosamente as configurações de rede. Essas decisões podem afetar significativamente o desempenho, a escalabilidade e a segurança de seus aplicativos.
O AKS depende de plugins de Container Networking Interface (CNI) para gerenciar a rede dentro de seus clusters. Esses plug-ins lidam com tarefas críticas, como atribuir endereços IP a pods, rotear tráfego entre eles e habilitar a comunicação por meio dos Serviços Kubernetes. O AKS suporta vários plugins CNI adaptados a diferentes necessidades de rede, proporcionando flexibilidade no design de clusters.
O AKS oferece dois modelos de rede principais: redes de sobreposição e redes planas. As redes de sobreposição atribuem endereços IP privados a pods, separados da sub-rede da Rede Virtual do Azure dos nós AKS. Esse modelo é escalável e conserva endereços IP de rede virtual, mas usa NAT (Network Address Translation) para o tráfego que sai do cluster. Por outro lado, as redes planas atribuem endereços IP de pod diretamente da mesma sub-rede da Rede Virtual do Azure que os nós, permitindo que serviços externos acessem pods sem NAT. Embora as redes planas permitam a comunicação direta do pod, elas exigem um espaço de endereço IP de rede virtual mais extenso.
Um planejamento de IP adequado é essencial para uma operação suave do AKS. É importante garantir que as sub-redes tenham endereços IP suficientes para todos os recursos, evitar intervalos sobrepostos e deixar espaço para crescimento futuro para evitar problemas e interrupções de conectividade. Para obter mais informações, consulte Visão geral da rede CNI do Serviço Kubernetes do Azure.
Para lidar com o tráfego de entrada no AKS, você pode usar balanceadores de carga ou controladores de entrada. Os balanceadores de carga operam na Camada 4, distribuindo o tráfego com base em protocolos e portas, enquanto os controladores de entrada trabalham na Camada 7, oferecendo recursos avançados, como roteamento baseado em URL e terminação TLS/SSL. Os controladores de entrada reduzem a necessidade de vários IPs públicos gerenciando o tráfego para vários aplicativos por meio de um único IP. Para aplicações web, os controladores de entrada são preferidos, pois fornecem melhor gerenciamento de tráfego e integração com os recursos do Kubernetes. Para obter mais informações, consulte Ingresso NGINX gerenciado com o complemento de roteamento de aplicativo.
Para proteger o tráfego de rede no AKS, use o WAF (Web Application Firewalls), como o Azure Application Gateway, para proteger contra ataques, como scripts entre sites e envenenamento de cookies, enquanto gerencia o roteamento de tráfego e o encerramento TLS/SSL. Além disso, implemente políticas de rede para controlar a comunicação pod-to-pod definindo regras em manifestos YAML, com base em rótulos, namespaces ou portas. Essas políticas, que estão disponíveis apenas para nós baseados em Linux, garantem um melhor controle de tráfego e segurança dentro do cluster. Para obter mais informações, consulte Proteger o tráfego entre pods usando políticas de rede no AKS.
Aprovisionar o
Para provisionar um cluster AKS, você pode usar o portal do Azure, a CLI do Azure ou modelos ARM. O processo normalmente envolve a seleção da região desejada, a definição do tamanho e o tipo do pool de nós e a escolha do modelo de rede - Azure CNI ou Kubenet. Você também deve configurar opções de autenticação, como a integração do Microsoft Entra ID para controle de acesso do usuário. Para monitoramento e dimensionamento, você pode habilitar o Azure Monitor e configurar o dimensionamento automático com base no uso de recursos. Após o provisionamento, você pode gerenciar o cluster usando kubectl ou a CLI do Azure. Para obter instruções detalhadas sobre o provisionamento do AKS, visite Criar um cluster AKS.
Acesso e identidade
O AKS oferece várias maneiras de gerenciar autenticação, autorização e controle de acesso para clusters Kubernetes. Você pode usar o RBAC (controle de acesso baseado em função) do Kubernetes para conceder aos usuários, grupos e contas de serviço acesso apenas aos recursos de que precisam. Para obter mais informações, consulte Usando autorização RBAC. O AKS também suporta o Microsoft Entra ID e o Azure RBAC para melhorar a segurança e o controlo, permitindo-lhe atribuir e gerir permissões de uma forma mais simplificada.
Para obter a melhor segurança, recomendamos a integração do AKS com o Microsoft Entra ID. Essa integração usa protocolos OpenID Connect e OAuth 2.0 para autenticação. Os usuários se autenticam usando credenciais do Microsoft Entra ao interagir com o cluster AKS, com suas permissões de acesso controladas pelo administrador do cluster. Para obter mais informações, consulte Habilitar a autenticação de identidade gerenciada do Azure para clusters Kubernetes com kubelogin
O Microsoft Entra Workload ID integra os recursos nativos do Kubernetes com provedores de identidade externos por meio da federação OpenID Connect (OIDC). Ele usa a Projeção de Volume de Token de Conta de Serviço para atribuir identidades Kubernetes a pods por meio de contas de serviço anotadas. Com esses tokens, os aplicativos Kubernetes podem autenticar e acessar recursos do Azure com segurança usando o Microsoft Entra ID. Essa configuração funciona perfeitamente com bibliotecas como as bibliotecas de cliente do Azure Identity (Azure.Identity
) ou a Biblioteca de Autenticação da Microsoft (MSAL) para simplificar a autenticação para suas cargas de trabalho. Para saber como configurar um cluster e configurar seu pod de aplicativo com cargas de trabalho identificadas, consulte Implantar e configurar a identidade da carga de trabalho.
Contentorizar aplicações
A contentorização de aplicações em imagens de contentores é essencial para a implementação no AKS. Ele garante que as implantações sejam consistentes, portáteis e escaláveis. O uso de imagens de contêiner oferece flexibilidade no gerenciamento de diferentes versões de aplicativos. Ele facilita atualizações e reversões e melhora a eficiência de recursos, permitindo que vários contêineres sejam executados em um único host.
O Azure Spring Apps ajuda os usuários a criar imagens de contêiner e implantar aplicativos de maneiras diferentes. Você pode implantar a partir do código-fonte, de artefatos construídos, como arquivos JAR ou WAR, ou diretamente de uma imagem de contêiner. Para saber como implantar a partir de um arquivo JAR ou WAR, consulte Criar uma imagem de contêiner a partir de um JAR ou WAR. Para saber como implantar a partir do código-fonte, consulte Containerize um aplicativo usando Paketo Buildpacks.
Para monitorar o desempenho de aplicativos implantados no AKS, você pode integrar o agente APM (Application Performance Monitoring) durante o processo de conteinerização. Para obter mais informações, consulte Integrar o monitoramento de desempenho do aplicativo em imagens de contêiner.
Implante aplicativos e componentes do Spring Cloud
Para implantar aplicativos no AKS, você pode usar Implantações, que é usado pelo Azure Spring Apps, ou StatefulSets, dependendo das necessidades do seu aplicativo. Para aplicativos sem monitoração de estado, como microsserviços, você normalmente usaria uma implantação, que gerencia réplicas de seu aplicativo e garante que elas sejam executadas sem problemas. Esse tipo é usado pelo Azure Spring Apps. Por outro lado, StatefulSets são ideais para aplicativos que exigem armazenamento persistente ou identidades estáveis, como bancos de dados ou serviços com necessidades de estado.
Juntamente com a implantação do aplicativo, você também precisa definir um Serviço para expor seus pods de back-end. Um Serviço é uma abstração que permite definir um conjunto lógico de pods e permite o acesso à rede a eles. Essa capacidade é crucial para o balanceamento de carga e a comunicação entre pods.
Ao implantar componentes do Spring Cloud, como o Spring Cloud Config ou o Spring Cloud Gateway, você geralmente usaria Implantações para serviços sem monitoração de estado. Para serviços de back-end que precisam de armazenamento ou estado estável, você pode escolher StatefulSets.
Os links a seguir fornecem exemplos de referência de imagens de contêiner e arquivos de manifesto para componentes do Spring Cloud:
Monitor
O monitoramento é uma parte crucial do gerenciamento de aplicativos implantados no AKS. O AKS fornece uma variedade de ferramentas para rastrear e analisar o status do seu cluster e cargas de trabalho, incluindo soluções integradas como Azure Monitor, Azure Log Analytics e Prometheus. Para obter mais informações, consulte os seguintes artigos:
- Gestão do Prometheus para recolha de métricas.
- Informações de contêiner para coleta de logs
- Azure Managed Grafana para visualização.
Além do Azure Monitor e do Prometheus, você também pode usar outras soluções de monitoramento, como Datadog, New Relic ou Elastic Stack (ELK). Você pode integrar essas ferramentas ao AKS para coletar logs, métricas e rastreamentos, oferecendo várias informações sobre o desempenho do cluster.
Tutorial
Fornecemos um tutorial para demonstrar a experiência completa de executar o aplicativo da loja ACME Fitness no AKS. Para obter mais informações, consulte acme-fitness-store/azure-kubernetes-service. Este tutorial fornece orientações práticas e destina-se a referência. O AKS é altamente flexível, então você precisa escolher configurações e personalizações com base em suas necessidades específicas.