View a markdown version of this page

Configurar as definições do Argo CD - 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.

Configurar as definições do Argo CD

A funcionalidade do EKS para o Argo CD fornece uma experiência do Argo CD totalmente gerenciada. O Argo CD upstream fornece muitas configurações e recursos opcionais, e a capacidade é compatível com um subconjunto deles. Para configurações compatíveis, você as configura da mesma forma que o Argo CD upstream, por meio do ConfigMap argocd-cm em seu cluster. A capacidade gerenciada lê os campos compatíveis desse ConfigMap e os aplica à instância gerenciada do Argo CD.

As seções a seguir descrevem como configurar o ConfigMap argocd-cm para as configurações compatíveis.

Pré-requisitos

Antes de configurar as definições do Argo CD, você deve ter:

  • Um cluster do EKS com a funcionalidade para o Argo CD criada (consulte Criar um recurso Argo CD)

  • O namespace configurado para o Argo CD na capacidade (por padrão, o namespace argocd)

  • A CLI kubectl configurada para comunicação com o cluster

Configurar o ConfigMap argocd-cm

Para configurar as definições compatíveis do Argo CD, crie um ConfigMap denominado argocd-cm em seu cluster. A capacidade gerenciada lê as configurações compatíveis desse ConfigMap e as aplica à instância gerenciada do Argo CD. Para saber as configurações que o recurso suporta e como ele as aplica, consulte Configurações compatíveis.

Crie o ConfigMap com os seguintes requisitos:

  • Nomeie o ConfigMap argocd-cm.

  • Crie-o no namespace configurado para o Argo CD na capacidade (o namespace que você definiu na configuração do Argo CD quando criou a capacidade). Por padrão, este é o namespace argocd.

  • Aplique o rótulo app.kubernetes.io/part-of: argocd. Esse rótulo é obrigatório, que corresponde ao comportamento do Argo CD upstream.

  • Use o mesmo formato de campo e chaves do Argo CD upstream.

O exemplo a seguir mostra a estrutura do ConfigMap, com uma configuração que exibe um banner na interface do Argo CD. Adicione outras configurações suportadas abaixo de data da mesma forma.

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
Importante

Um ConfigMap não é um armazenamento seguro. Não coloque segredos, credenciais ou outras informações sensíveis no ConfigMap argocd-cm.

Como o recurso aplica suas configurações

Você configura o Argo CD criando um ConfigMap argocd-cm em seu próprio cluster. A capacidade aplica as configurações compatíveis do seu ConfigMap à instância gerenciada do Argo CD. Ele aplica somente as configurações suportadas e ignora qualquer outro campo ou recurso que você definir. Qualquer configuração que não esteja listada em Configurações compatíveis não é suportada e não tem efeito.

O recurso valida os valores que você define. Se um valor for inválido ou estiver incorreto, o recurso ignorará esse valor e continuará em execução com a configuração padrão para essa definição. Um erro em seu ConfigMap não interrompe sua instância do Argo CD gerenciada.

nota

O recurso aplica a configuração do ConfigMap argocd-cm em seu cluster. Qualquer entidade principal com acesso de gravação a este ConfigMap pode alterar a configuração da sua instância do Argo CD gerenciada. O controle de acesso baseado em perfil (RBAC) do Kubernetes do seu cluster controla o acesso ao ConfigMap, não as permissões do IAM que controlam o recurso de capacidade. Como prática recomendada de segurança, conceda permissão para modificar objetos no namespace do Argo CD somente para usuários e contas de serviço confiáveis. Como o Kubernetes RBAC define o escopo das permissões por tipo de recurso, você ainda pode conceder o acesso de que outros usuários precisam. Por exemplo, você pode permitir que os desenvolvedores criem e gerenciem Applications, mas não modifiquem ConfigMaps. Isso impede que eles alterem a configuração de argocd-cm.

Para obter mais informações sobre o modelo de responsabilidade compartilhada, o Kubernetes RBAC e o isolamento de namespace para o recurso Argo CD, consulte Considerações sobre segurança para funcionalidades do EKS. Para controlar o acesso no Argo CD, consulte Configuração das permissões do Argo CD.

Configurações compatíveis

As seções a seguir listam as configurações de argocd-cm que o recurso gerenciado suporta, agrupadas por categoria. Cada configuração usa a mesma chave e formato do Argo CD upstream. A coluna Como seu valor é aplicado de cada tabela mostra se seu valor se acrescenta à configuração padrão do recurso ou se a substitui. Para obter a descrição completa de cada configuração, consulte a referência do ConfigMap argocd-cm no site de documentação do Argo CD.

Interface do usuário

Essas configurações personalizam a interface do usuário do Argo CD.

Configuração Descrição Como seu valor é aplicado

ui.bannercontent

Texto para um banner exibido na interface do usuário, como um identificador de ambiente ou um aviso de manutenção.

Substituições

ui.bannerurl

URL ao qual o banner está vinculado, como um runbook ou uma página wiki.

Substituições

ui.bannerpermanent

Defina como true para evitar que os usuários descartem o banner.

Substituições

ui.bannerposition

Onde o banner aparece: top, bottom, ou both.

Substituições

ui.cssurl

URL de um arquivo CSS personalizado para identidade visual ou estilo. O CSS é executado no seu navegador.

Substituições

Configurações de recursos

Essas configurações controlam como a capacidade monitora, compara e exibe os recursos que o Argo CD gerencia.

Configuração Descrição Como seu valor é aplicado

resource.customizations.ignoreDifferences.<group>_<kind>

Campos a serem ignorados quando o Argo CD compara o Git com o cluster para um tipo de recurso, como contagens de réplicas gerenciadas por um escalador automático de pod horizontal.

Anexos

resource.customizations.ignoreDifferences.all

Campos a serem ignorados ao comparar o Git com o cluster, aplicados a todos os tipos de recursos.

Anexos

resource.customizations.ignoreResourceUpdates.<group>_<kind>

Campos que o Argo CD ignora ao decidir se um evento de atualização deve acionar a reconciliação, o que reduz a carga. O evento ainda ocorre e o Argo CD ignora somente as alterações nesses campos.

Anexos

resource.customizations.ignoreResourceUpdates.all

Campos que o Argo CD ignora ao processar eventos de atualização, aplicados a todos os tipos de recursos.

Anexos

resource.customizations.knownTypeFields.<group>_<kind>

Tipos de campo (lista, mapa ou primitivo) para um recurso personalizado, para que o Argo CD calcule diferenças precisas em vez de mostrar a substituição de todo o campo.

Anexos

resource.customizations.health.<group>_<kind>

Verificação de integridade personalizada para um tipo de recurso, definida como um script Lua. O recurso inclui verificações de integridade integradas para recursos ACK e kro. Consulte Verificações de integridade personalizadas.

Substituições

resource.exclusions

Tipos de recursos que o Argo CD não monitora, o que melhora o desempenho de tipos de alta rotatividade.

Anexos

resource.inclusions

Tipos de recursos que o Argo CD monitora. Quando configurado, o Argo CD monitora somente os tipos listados.

Anexos

resource.compareoptions

Opções que controlam como o Argo CD calcula as diferenças, como ignoreAggregatedRoles.

Substituições

resource.respectRBAC

Se o controlador monitora somente os recursos que ele tem permissão RBAC para ler. Aceita normal ou strict.

Substituições

resource.customLabels

Rótulos de recursos adicionais a serem exibidos na visualização de recursos da interface do usuário.

Substituições

resource.includeEventLabelKeys

Rótulos de aplicativos e projetos para copiar nos eventos do Kubernetes que o Argo CD gera.

Substituições

resource.excludeEventLabelKeys

Rótulos a serem excluídos dos eventos do Kubernetes que o Argo CD gera.

Substituições

resource.sensitive.mask.annotations

Anotações para mascarar quando a interface do usuário ou a CLI exibem segredos.

Substituições

Configurações do repositório e da ferramenta

Essas configurações controlam as ferramentas de manifesto que o Argo CD usa para renderizar seus manifestos.

Configuração Descrição Como seu valor é aplicado

kustomize.enable

Se o Kustomize está habilitado como um tipo de fonte de manifesto.

Substituições

helm.enable

Se o Helm está habilitado como um tipo de fonte de manifesto.

Substituições

jsonnet.enable

Se o Jsonnet está habilitado como um tipo de fonte de manifesto.

Substituições

kustomize.buildOptions

Sinalizadores globais de linha de comando passados para cada kustomize build. O recurso oferece suporte a um subconjunto de sinalizadores. Consulte Sinalizadores kustomize.buildOptions suportados.

Substituições

Sinalizadores kustomize.buildOptions suportados

Para kustomize.buildOptions, o recurso filtra seu valor para um conjunto de sinalizadores seguros e compatíveis. Ele não oferece suporte a sinalizadores que permitem que a compilação leia arquivos arbitrários ou execute código arbitrário. Ele descarta qualquer sinalizador não suportado ou valor inválido individualmente e aplica os demais sinalizadores compatíveis. Você pode escrever sinalizadores no formato --flag value ou --flag=value.

Sinalizador Valores compatíveis Observações

--reorder

legacy, none

Altera a ordem somente do YAML renderizado.

--enable-helm

Booleano

Executa o binário gerenciado do Helm pelo caminho.

--enable-managedby-label

Booleano

Adiciona somente rótulos.

O recurso elimina qualquer outro sinalizador, incluindo --load-restrictor, --enable-exec e --enable-alpha-plugins.

Verificações de integridade personalizadas

O Argo CD avalia a integridade dos recursos que ele implanta. Para recursos padrão do Kubernetes, como implantações e serviços, o Argo CD tem uma lógica de integridade integrada. Para recursos personalizados que o Argo CD não reconhece, ele não tem lógica de integridade integrada e não indica nenhum status de integridade.

Quando um recurso personalizado não tem verificação de integridade, o Argo CD indica que não há integridade para ele e o exclui da integridade geral da aplicação. Como resultado, uma aplicação pode indicar Healthy mesmo quando seus recursos ainda estão sendo provisionados ou falharam. Isso também significa que as ondas de sincronização podem avançar antes que esses recursos estejam prontos, porque a ordem de sincronização depende da integridade indicada.

Com verificações de integridade personalizadas, você pode definir a lógica de integridade para seus recursos personalizados, para que o Argo CD reporte a integridade com precisão e sequencie as implantações corretamente. Você define verificações de integridade personalizadas da mesma forma que faz no Argo CD upstream, usando as mesmas chaves de configuração. Os scripts upstream existentes e os exemplos da comunidade funcionam com o EKS Capability for Argo CD sem modificação.

Verificações de integridade integradas para ACK e kro

O EKS Capability for Argo CD inclui verificações de integridade integradas para recursos do AWS Controllers for Kubernetes (ACK) e do kro (Kube Resource Orchestrator). Esses recursos indicam uma integridade precisa sem configuração adicional.

Para alterar a forma como a capacidade avalia a integridade de um recurso do ACK ou do kro, você pode definir uma verificação de integridade personalizada para o tipo de recurso. Uma verificação de integridade personalizada que você define para um tipo de recurso substitui a verificação de integridade integrada desse tipo.

Escrever uma verificação de integridade personalizada

Defina uma verificação de integridade personalizada adicionando um script Lua ao ConfigMap argocd-cm, usando uma chave no seguinte formato:

resource.customizations.health.<group>_<kind>

Substitua <group> pelo grupo de APIs do recurso personalizado e <kind> pelo seu tipo. Por exemplo, a chave para um recurso personalizado com o grupo de APIs example.com e o tipo Database é resource.customizations.health.example.com_Database.

O script Lua tem acesso ao objeto de recurso por meio da variável global obj. O script deve retornar uma tabela com um campo status definido como Healthy, Progressing, Degraded ou Suspended. O script também pode definir um campo message opcional para fornecer uma mensagem de status descritiva.

No exemplo a seguir, o ConfigMap define uma verificação de integridade para um recurso personalizado Database. O script indica o recurso como Healthy quando sua fase de status é Ready, e como Progressing caso contrário:

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs

Para obter mais informações sobre o formato do script de verificação de integridade, a lista de verificações de integridade integradas e exemplos da comunidade que você pode adaptar, consulte Resource Health no site de documentação do Argo CD.

Segurança e limitações

Com a capacidade gerenciada, seus scripts personalizados de verificação de integridade são executados em computação isolada e totalmente gerenciada. O ambiente de execução é isolado por capacidade e não tem acesso aos dados do seu cluster ou às APIs da AWS. Você não provisiona, aplica patch ou opera nenhuma parte do ambiente de execução.

Observe o seguinte ao escrever verificações de integridade personalizadas para uso com o EKS Capability:

  • As bibliotecas Lua padrão não estão disponíveis. A opção useOpenLibs está sempre desabilitada, o que é o padrão no Argo CD upstream. Os scripts não podem acessar o sistema operacional ou o sistema de arquivos. Se você migrar um script de um Argo CD autogerenciado que depende de bibliotecas Lua padrão, ele poderá não ser executado da mesma forma na capacidade. Recomendamos que você teste seus scripts de verificação de integridade em um ambiente de desenvolvimento antes de usá-los na produção.

Se a avaliação de integridade estiver temporariamente indisponível, o recurso indicará os recursos personalizados afetados como Progressing em vez de remover o status de integridade deles. Isso mantém os recursos afetados visíveis na integridade da aplicação até que a avaliação seja recuperada.

Verificar uma verificação de integridade personalizada

Depois de aplicar ou atualizar o ConfigMap argocd-cm, confirme se a verificação de integridade está ativa:

  1. Na interface do usuário do Argo CD, escolha uma aplicação que inclua um recurso personalizado do tipo para o qual você definiu uma verificação de integridade. Confirme se o recurso indica o status de integridade que seu script retorna. Como alternativa, execute argocd app get <application-name> e revise o status de integridade do recurso.

  2. Se o recurso não indicar a integridade esperada, verifique o seguinte:

    • O ConfigMap é denominado argocd-cm e está no namespace configurado para o Argo CD na capacidade.

    • O ConfigMap tem o rótulo app.kubernetes.io/part-of: argocd obrigatório.

    • A chave de verificação de integridade usa o <group>_<kind> correto para o tipo de recurso.