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
Com o EKS Capability for Argo CD, você obtém uma experiência do Argo CD totalmente gerenciada. O Argo CD upstream fornece muitas configurações e recursos opcionais, e o EKS Capability for Argo CD é 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 AWS 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
kubectlconfigurada 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ê os campos compatíveis desse ConfigMap e os aplica à instância gerenciada do Argo CD. O recurso ignora todos os campos e recursos não compatíveis que você definiu. Revise a lista de campos compatíveis para confirmar se uma configuração foi aplicada.
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:
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: # Supported settings go here (see the following sections)
Importante
Um ConfigMap não é um armazenamento seguro. Não coloque segredos, credenciais ou outras informações sensíveis no ConfigMap argocd-cm.
Configurações compatíveis
A capacidade gerenciada é compatível com o seguinte campo do argocd-cm:
| Campo | Descrição |
|---|---|
|
|
Scripts de verificação de integridade personalizados para recursos personalizados. Consulte Verificações de integridade personalizadas. |
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
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
useOpenLibsestá 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:
-
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 gete revise o status de integridade do recurso.<application-name> -
Se o recurso não indicar a integridade esperada, verifique o seguinte:
-
O ConfigMap é denominado
argocd-cme está no namespace configurado para o Argo CD na capacidade. -
O ConfigMap tem o rótulo
app.kubernetes.io/part-of: argocdobrigatório. -
A chave de verificação de integridade usa o
<group>_<kind>correto para o tipo de recurso.
-