Migrar do Amazon EKS para o Azure Kubernetes Service (AKS)

Este artigo fornece estratégias para migrar cargas de trabalho típicas sem e com estado do Amazon EKS para o Azure Kubernetes Service (AKS).

Considerações

O processo de implantação real de uma carga de trabalho de produção do mundo real pode variar dependendo dos seguintes fatores:

  • Estratégias de implantação: A escolha entre GitOps e métodos tradicionais de integração contínua/implantação contínua DevOps (CI/CD) influencia significativamente a abordagem de implantação. O GitOps prioriza a infraestrutura declarativa gerenciada por meio de repositórios controlados por versão, enquanto o CI/CD DevOps se concentra em fluxos de trabalho automatizados para entrega de aplicativos.

  • Artefatos de implantação: A seleção de artefatos de implantação desempenha um papel crucial na definição da estrutura de implantação. Arquivos YAML, arquivos de manifesto, gráficos Helm e configurações do Kustomize representam várias abordagens para especificar e personalizar configurações de implantação, cada uma com seus pontos fortes e casos de uso.

  • Autenticação e autorização de carga de trabalho: Dependendo da configuração, os métodos de autenticação e autorização podem ser diferentes. Você pode usar funções do Amazon Web Services (AWS) Identity and Access Management (IAM), mecanismos de identidade de carga de trabalho ou cadeias de conexão para controle de acesso.

  • Monitoramento: A implementação de soluções de monitoramento é um aspecto crítico que pode envolver várias ferramentas e metodologias para garantir o desempenho e a integridade das cargas de trabalho implantadas. Para obter mais informações sobre como o monitoramento do AKS se compara ao EKS, consulte Monitoramento e registro em log do Kubernetes.

Antes de iniciar a migração, revise e considere as seguintes orientações gerais e recursos de práticas recomendadas:

Considerações sobre migração de carga de trabalho

Esta seção analisa algumas coisas que você deve considerar antes de migrar suas cargas de trabalho do Amazon EKS para o AKS.

Entenda seu ambiente do Amazon EKS

Analise o ambiente EKS existente para entender a arquitetura, os recursos e as configurações atuais.

  • Revise a configuração do EKS: avalie a configuração do cluster EKS, como tipos e número de nós, política de versão e suporte do Kubernetes e configuração de dimensionamento.

    Observação

    O EKS permite a criação de imagens AMI personalizadas para nós EKS. O AKS não permite o uso de imagens de nó personalizadas. Se sua implantação exigir personalização de nó, você poderá aplicar a personalização do kubelet e/ou DaemonSets para personalizar seus nós.

  • Revise as cargas de trabalho do aplicativo: identifique todas as cargas de trabalho do Kubernetes em execução no cluster EKS, incluindo implantações, serviços, conjuntos com estado, configurações de entrada e declarações de volume persistente. Verifique se você tem uma lista completa de aplicativos e seus recursos associados.

  • Verifique dependências: identifique quaisquer dependências nos serviços do AWS específicas para o EKS.

    Serviço AWS Dependência
    Gerenciador de Segredos do AWS Azure Key Vault
    Agente de serviço do AWS Guard Microsoft Defender para Contêineres
    Agente de identidade do pod do EKS Identidades de carga de trabalho do Microsoft Entra ID
    Drivers de Interface de Armazenamento de Contêiner (CSI) do Amazon Elastic File System (EFS) ou Elastic Block Store (EBS) Drivers CSI AKS
  • Cluster EKS de backup: você pode usar uma ferramenta que não seja da Microsoft, como Velero, para fazer backup e migrar recursos do Kubernetes e volumes persistentes.

Preparar o ambiente Azure AKS

A Interface de Rede de Contêiner do Azure (CNI) do Amazon Virtual Private Cloud (VPC) é o plug-in de rede padrão suportado pelo EKS. Um cluster AKS suporta vários plug-ins e métodos de rede para implantar um cluster em uma rede virtual, incluindo:

Para preparar o cluster AKS, siga estas etapas:

  1. Crie um novo cluster AKS no Azure definindo as configurações de rede desejadas para corresponder às suas necessidades.
  2. Revise seus manifestos do Kubernetes e arquivos YAML usados no EKS. Verifique se há possíveis incompatibilidades de versão da API do Kubernetes ou configurações específicas do EKS que o AKS não aceita.
  3. Verifique se as imagens do Docker e o local do registro de imagens de contêiner estão acessíveis a partir do cluster AKS. Verifique a conectividade de rede e todas as configurações de autenticação e autorização necessárias para acessar as imagens.

Seguindo essas etapas, você pode criar com êxito um cluster AKS e garantir a compatibilidade para seus manifestos do Kubernetes e imagens do Docker, garantindo um processo de migração suave do EKS para o AKS.

Visão geral da migração

A migração do Amazon EKS para o AKS envolve várias etapas, como:

  • Migração de imagens de contêiner: migrar imagens de contêiner é uma etapa crucial ao migrar do EKS para o AKS. Você pode usar ferramentas como kubectl, Docker ou registros de contêiner para exportar e importar imagens.

    1. Exportar imagens do EKS.
    2. Configure um Registro de Contêiner do Azure e anexe ao AKS, se ainda não tiver feito.
    3. Enviar imagens por push para o Registro de Contêiner

    As imagens de contêiner também podem ser importadas para o Registro de Contêiner diretamente de um repositório público ou privado que não seja do Azure. Para obter mais informações, veja Importar imagens de contêiner.

  • Migração de manifesto do Kubernetes: o AKS usa o manifesto do arquivo YAML do Kubernetes para definir objetos do Kubernetes. As implantações são normalmente criadas e gerenciadas com kubectl create ou kubectl apply. Crie uma implantação definindo um arquivo de manifesto no formato YAML. Para mais informações, veja este exemplo de manifesto AKS. Você pode saber mais sobre como os arquivos YAML funcionam no Kubernetes revisando Implantações e manifestos YAML.

  • Migração de dados: planeje cuidadosamente a migração de aplicativos com estado para evitar perda de dados ou tempo de inatividade inesperado. Para obter mais informações, consulte a seção Considerações sobre migração de carga de trabalho com estado.

Considerações sobre migração de carga de trabalho sem estado

A migração de seus manifestos do Kubernetes envolve a adaptação da configuração para funcionar no ambiente do Azure, incluindo estas etapas:

  1. Atualizar manifestos: atualize seus manifestos do Kubernetes para usar os novos locais de imagem no Registro de Contêiner. Substitua as referências de imagem nos seus arquivos YAML pelo caminho do Registro de Contêiner.

    1. Revise seus arquivos de manifesto do Kubernetes existentes para configurações específicas do AWS, como funções VPC e IAM.
    2. Revise as funções do IAM do EKS associadas a nós, contas de serviço e outros recursos. Mapeie-o com funções equivalentes de controle de acesso baseado em função (RBAC) do Azure AKS. Para obter mais informações, consulte Identidade e acesso à carga de trabalho do Kubernetes.
    3. Modifique os arquivos de manifesto para substituir configurações específicas do AWS por configurações específicas do Azure, como anotações.
  2. Aplique manifestos ao AKS:

    1. Conecte-se ao cluster AKS.
    2. Aplique os arquivos de manifesto do Kubernetes modificados usando o kubectl apply -f.

Considerações sobre migração de carga de trabalho com estado

Se seus aplicativos usarem volumes persistentes (PVs) ou declarações de volume persistente (PVCs) para armazenamento de dados, certifique-se de fazer backup desses dados. Você pode usar ferramentas como Velero para executar backups de cluster, inclusive para dados de PVs e PVCs. Para obter mais informações, consulte Backup e restauração dos recursos de cluster do Amazon EKS usando o Velero.

Os aplicativos com estado geralmente têm requisitos persistentes de armazenamento de dados que adicionam complexidade ao processo de migração. Para obter uma comparação dos recursos de armazenamento do Amazon EKS e do AKS, consulte Opções de armazenamento para um cluster do Kubernetes.

Siga estas etapas para fazer backup de dados persistentes:

  1. Configure o Velero no cluster AKS e EKS.
  2. Execute um backup do cluster EKS.
  3. Copie o backup do Velero do bucket do S3 para o armazenamento de blobs do Azure usando o comando az copy.
  4. Como AKS e EKS podem usar storageClassNames diferentes para as declarações de volume persistente, crie um configMap que converta a origem storageClassNames em um nome de classe compatível com AKS. Você pode ignorar essa etapa se estiver usando a mesma solução de armazenamento nos clusters EKS e AKS Kubernetes.
  5. Restaure o backup para AKS (usando o comando Velero restore).
  6. Aplique as alterações necessárias aos objetos restaurados, como referências a imagens de contêiner no Amazon Elastic Container Registry (ECR), ou acesso a segredos.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autores principais:

  • Dixit Arora | Engenheiro sênior de clientes, ISV DN Coe
  • Ketan Chawda | Engenheiro de Clientes Sênior, ISV DN CoE

Outros colaboradores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas