Criação de Applications - 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.

Criação de Applications

As Applications correspondem a implantações nos clusters de destino. Cada Application define uma origem (repositório do Git) e um destino (cluster e namespace). Quando aplicado, o Argo CD criará os recursos especificados pelos manifestos no repositório do Git para o namespace no cluster. As Applications frequentemente especificam implantações de workloads, mas podem gerenciar quaisquer recursos do Kubernetes disponíveis no cluster de destino.

Pré-requisitos

Criação de uma Application básica

Defina uma Application que realize implantações usando um repositório do Git:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook destination: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: default
Importante

Use o ARN do cluster do EKS no campo destination.server, e não o URL do servidor da API do Kubernetes. A funcionalidade gerenciada requer ARNs para identificar os clusters.

Aplique a Application:

kubectl apply -f application.yaml

Visualize o status da Application:

kubectl get application guestbook -n argocd

Configuração da origem

Repositório do Git:

spec: source: repoURL: https://github.com/example/my-app targetRevision: main path: kubernetes/manifests

Etiqueta ou confirmação específica do Git:

spec: source: targetRevision: v1.2.0 # or commit SHA

Chart do Helm:

spec: source: repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - values.yaml parameters: - name: image.tag value: v1.2.0

Chart do Helm do ECR:

spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: chart-name

Se o perfil da funcionalidade tiver as permissões necessárias do ECR, o repositório será usado diretamente, sem necessidade da configuração de Repository adicional. Para mais detalhes, consulte Configuração do acesso ao repositório.

Repositório do Git do CodeCommit:

spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: main path: kubernetes/manifests

Se o perfil da funcionalidade tiver as permissões necessárias do CodeCommit, o repositório será usado diretamente, sem necessidade da configuração de Repository adicional. Para mais detalhes, consulte Configuração do acesso ao repositório.

Repositório do Git do CodeConnections:

spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests

O formato do URL do repositório é derivado do ARN da conexão do CodeConnections. Se o perfil da funcionalidade tiver as permissões necessárias do CodeConnections e uma conexão estiver configurada, o repositório será usado diretamente, sem necessidade da configuração de Repository adicional. Para mais detalhes, consulte Configuração do acesso ao repositório.

Kustomize:

spec: source: repoURL: https://github.com/example/kustomize-app targetRevision: main path: overlays/production kustomize: namePrefix: prod-

Políticas de sincronização

Defina como o Argo CD deve sincronizar as aplicações.

Sincronização manual (padrão):

As aplicações exigem aprovação manual para sincronizar alterações:

spec: syncPolicy: {} # No automated sync

Acionamento manual da sincronização:

kubectl patch application guestbook -n argocd \ --type merge \ --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'

Sincronização automática:

As aplicações são sincronizadas automaticamente quando alterações no Git são detectadas:

spec: syncPolicy: automated: {}

Autorreparação:

Reverte automaticamente alterações manuais no cluster:

spec: syncPolicy: automated: selfHeal: true

Quando esta opção está habilitada, o Argo CD reverte quaisquer alterações realizadas diretamente no cluster, garantindo que o Git permaneça como fonte da verdade.

Supressão:

Exclui automaticamente recursos removidos do Git:

spec: syncPolicy: automated: prune: true
Atenção

A supressão excluirá recursos do seu cluster. Use com cautela em ambientes de produção.

Sincronização automática combinada:

spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Opções de sincronização

Configuração de sincronização adicional:

Crie um namespace, se ele não existir:

spec: syncPolicy: syncOptions: - CreateNamespace=true

Valide os recursos antes de realizar a aplicação:

spec: syncPolicy: syncOptions: - Validate=true

Realize a aplicação somente quando não estiver em sincronização:

spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true

Recursos avançados de sincronização

O Argo CD oferece recursos avançados de sincronização para implantações complexas:

  • Ciclos de sincronização: controlam a ordem de criação de recursos usando anotações argocd.argoproj.io/sync-wave

  • Hooks de sincronização: executam trabalhos antes ou depois da sincronização usando as anotações argocd.argoproj.io/hook (nomeadamente, PreSync, PostSync e SyncFail)

  • Avaliação da integridade dos recursos: verificações de integridade personalizadas são realizadas para recursos específicos da aplicação

Para obter detalhes, consulte Sync Waves e Resource Hooks na documentação do CD Argo.

Desconsideração de diferenças

Evite que o Argo CD sincronize campos específicos gerenciados por outros controladores (como a HPA gerenciando réplicas):

spec: ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas

Para obter detalhes sobre como desconsiderar padrões e realizar exclusões de campos, consulte Diffing Customization na documentação do Argo CD.

Implantação em vários ambientes

Implante a mesma aplicação em vários ambientes:

Desenvolvimento do:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-dev namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: develop path: overlays/development destination: server: arn:aws:eks:us-west-2:111122223333:cluster/dev-cluster namespace: my-app

Produção:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-prod namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: main path: overlays/production destination: server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: my-app syncPolicy: automated: prune: true selfHeal: true

Monitoramento e gerenciamento de Applications

Visualize o status da Application:

kubectl get application my-app -n argocd

Acesse a interface do usuário do Argo CD:

Abra a interface do usuário do Argo CD pelo console do EKS para visualizar a topologia da aplicação, o status de sincronização, a integridade dos recursos e o histórico de implantações. Consulte Como trabalhar com o Argo CD para obter instruções de acesso à interface do usuário.

Reversão de Applications:

Reverta para uma revisão anterior por meio da interface do usuário do Argo CD ou alterando o targetRevision na especificação da Application para uma confirmação ou etiqueta anterior no Git.

Recursos adicionais