Comparação da funcionalidade do EKS para o Argo CD em relação ao Argo CD autogerenciado - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Comparação da funcionalidade do EKS para o Argo CD em relação ao Argo CD autogerenciado

A funcionalidade do EKS para o Argo CD fornece uma experiência do Argo CD totalmente gerenciada e executada no EKS. Para obter uma comparação geral das funcionalidades do EKS em relação às soluções autogerenciadas, consulte Considerações sobre as funcionalidades do EKS. Este tópico aborda as diferenças específicas do Argo CD, incluindo autenticação, gerenciamento de diversos clusters e suporte aos recursos da versão original.

Diferenças em relação à versão original do Argo CD

A funcionalidade do EKS para o Argo CD se baseia na versão original do Argo CD, porém apresenta diferenças na maneira de acesso, configuração e integração com os serviços da AWS.

RBAC e autenticação: a funcionalidade inclui três funções de RBAC (administrador, editor e visualizador) e usa o Centro de Identidade da AWS para autenticação, em vez do sistema de autenticação interno do Argo CD. Configure os mapeamentos de perfis por meio do parâmetro rbacRoleMapping da funcionalidade a fim de mapear os grupos do Centro de Identidade para os perfis do Argo CD, e não por meio do ConfigMap argocd-rbac-cm do Argo CD. A interface do usuário do Argo CD é hospedada usando um URL direto próprio (que pode ser localizado no console do EKS, na guia Funcionalidades do seu cluster), e o acesso à API usa autenticação e autorização da AWS por meio do IAM.

Configuração do cluster: a funcionalidade não configura automaticamente clusters locais nem topologias do tipo “hub-and-spoke”. É necessário configurar os clusters de destino da sua implantação e as entradas de acesso ao EKS. A funcionalidade é compatível somente com clusters do Amazon EKS como destinos de implantação, usando ARNs de cluster de EKS (não URLs do servidor da API do Kubernetes). A funcionalidade não adiciona automaticamente o cluster local (kubernetes.default.svc) como destino de implantação. Para realizar a implantação no mesmo cluster em que a funcionalidade foi criada, registre explicitamente esse cluster usando seu ARN.

Acesso simplificado a clusters remotos:: a funcionalidade simplifica implantações em vários clusters ao usar entradas de acesso do EKS para conceder ao Argo CD o acesso a clusters remotos, eliminando a necessidade de configurar perfis do IAM para contas de serviço (IRSA, na sigla em inglês) ou estabelecer suposições de perfis do IAM entre contas. A funcionalidade também fornece acesso transparente a clusters de EKS totalmente privados, sem exigir emparelhamento da VPC ou configurações de rede especializadas. A AWS gerencia automaticamente a conectividade entre a funcionalidade do Argo CD e os clusters remotos privados.

Integração direta com serviços da AWS: a funcionalidade oferece integração direta com serviços da AWS por meio das permissões do IAM do perfil da funcionalidade. É possível referenciar repositórios do CodeCommit, charts do Helm do ECR e CodeConnections diretamente nos recursos da Application, sem a necessidade de criar configurações de Repository. Isso simplifica a autenticação e elimina a necessidade de gerenciar credenciais separadas para os serviços da AWS. Para mais detalhes, consulte Configuração do acesso ao repositório.

Suporte para namespace: o recurso exige que você especifique um único namespace no qual os recursos personalizados do Argo CD Application, ApplicationSet e AppProject devem ser criados.

nota

Essa restrição de namespace só se aplica aos recursos personalizados do Argo CD (Application, ApplicationSet, AppProject). As workloads da sua aplicação podem ser implantadas em qualquer namespace em qualquer cluster de destino. Por exemplo, se você criar a funcionalidade com o namespace argocd, todos os CRs da Application deverão ser criados no namespace argocd, mas essas Applications podem implantar workloads em default, production, staging ou em qualquer outro namespace.

nota

O recurso gerenciado tem requisitos específicos para o uso da CLI e configuração do AppProject:

  • Ao usar a CLI do Argo CD, especifique as aplicações com o prefixo do namespace: argocd app sync namespace/appname

  • Os recursos do AppProject devem especificar .spec.sourceNamespaces para definir quais namespaces o projeto pode observar para Applications (normalmente definidos como o namespace que você especificou ao criar o recurso)

  • As anotações de rastreamento de recursos usam o formato: namespace_appname:group/kind:namespace/name

Recursos não suportados: os seguintes recursos não estão disponíveis na funcionalidade gerenciada:

  • Plug-ins de gerenciamento de configuração (CMPs, na sigla em inglês) para geração de manifestos personalizados

  • Scripts Lua personalizados para avaliação da integridade de recursos (as verificações de integridade nativas para recursos padrão são suportadas)

  • O controlador de notificações

  • Provedores de SSO personalizados (somente o Centro de Identidade da AWS é compatível, abrangendo também identidades federadas de terceiros por meio do Centro de Identidade da AWS)

  • Extensões da interface do usuário e banners personalizados

  • Acesso direto aos ConfigMaps de configuração argocd-cm, argocd-params e outros

  • Modificação do tempo limite de sincronização (fixado em 120 segundos)

Compatibilidade: as Applications e os ApplicationSets funcionam de forma idêntica à versão original do Argo CD, sem alterações nos seus manifestos. A funcionalidade usa as mesmas APIs do Kubernetes e CRDs, portanto, ferramentas como o kubectl funcionam de maneira semelhante. A funcionalidade oferece suporte completo às Applications e aos ApplicationSets, bem como a fluxos de trabalho de GitOps com sincronização automática, implantações em vários clusters, políticas de sincronização (automatizada, de supressão e de autorreparação), ciclos de sincronização e hooks, avaliação da integridade de recursos padrão do Kubernetes, funcionalidades de reversão, fontes de repositórios do Git (HTTPS e SSH), Helm, Kustomize e manifestos em YAML sem formatação, credenciais de aplicativo do GitHub, projetos para multilocação, além de exclusões e inclusões de recursos.

Uso da CLI do Argo CD com a funcionalidade gerenciada

Para a maioria das operações, a CLI do Argo CD se comporta de maneira idêntica à versão original do Argo CD, mas há diferenças na autenticação e no registro de clusters.

Pré-requisitos

Instale a CLI do Argo CD conforme as instruções de instalação da versão original.

Configuração

Configure a CLI usando variáveis de ambiente:

  1. Obtenha o URL do servidor do Argo CD no console do EKS (na guia Funcionalidades do seu cluster) ou por meio da AWS CLI. O prefixo https:// deve ser removido:

    export ARGOCD_SERVER=$(aws eks describe-capability \ --cluster-name my-cluster \ --capability-name my-argocd \ --query 'capability.configuration.argoCd.serverUrl' \ --output text \ --region region-code | sed 's|^https://||')
  2. Gere um token de conta na interface do usuário do Argo CD (SettingsAccountsadminGenerate New Token) e, em seguida, defina-o como uma variável de ambiente:

    export ARGOCD_AUTH_TOKEN="your-token-here"
Importante

Essa configuração usa o token da conta de administrador para a configuração inicial e os fluxos de trabalho de desenvolvimento. Para casos de uso em ambientes de produção, empregue perfis e tokens com escopo de projeto, seguindo o princípio de privilégio mínimo. Para obter mais informações sobre a configuração de perfis de projeto e RBAC, consulte Configuração das permissões do Argo CD.

  1. Defina a opção gRPC obrigatória:

    export ARGOCD_OPTS="--grpc-web"

Com essas variáveis de ambiente configuradas, é possível utilizar a CLI do Argo CD sem a necessidade de executar o comando argocd login.

Principais diferenças

A funcionalidade gerenciada apresenta as seguintes limitações da CLI:

  • Os comandos argocd admin não são suportados (pois exigem acesso direto ao pod)

  • O comando argocd login não é suportado (utilize tokens de conta ou de projeto)

  • O comando argocd cluster add requer o sinalizador --aws-cluster-name com o ARN do cluster de EKS

Exemplo: registro de um cluster

Registre um cluster de EKS para a implantação de aplicações:

# Get the cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default

Para obter a documentação completa da CLI do Argo CD, consulte a referência da CLI do Argo CD.

Caminho de migração

É possível migrar de um Argo CD autogerenciado para a funcionalidade gerenciada:

  1. Analise a configuração atual do Argo CD quanto a recursos sem suporte (por exemplo, controle de notificações, CMPs, verificações de integridade personalizadas, extensões de IU)

  2. Reduza a escala dos controladores do Argo CD autogerenciados para zero réplicas para evitar conflitos

  3. Crie um recurso de funcionalidade do Argo CD no cluster

  4. Exporte Applications, ApplicationSets e AppProjects existentes

  5. Migre as credenciais de repositório, os segredos do cluster e os modelos de credenciais do repositório (repocreds)

  6. Se estiver usando chaves GPG, certificados TLS ou hosts conhecidos de SSH, migre também essas configurações

  7. Atualize os campos destination.server para usar nomes de cluster ou ARNs de clusters de EKS

  8. Aplique essas configurações na instância gerenciada do Argo CD

  9. Verifique se as aplicações estão sendo sincronizadas corretamente

  10. Desative sua instalação autogerenciada do Argo CD

A funcionalidade gerenciada usa as mesmas APIs e definições de recursos do Argo CD, portanto, seus manifestos existentes funcionam com modificações mínimas.

Próximas etapas