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: name: in-cluster namespace: default
nota

Use destination.name com o nome do cluster utilizado ao registrar o cluster (como in-cluster para o cluster local). O campo destination.server também funciona com ARNs de cluster de EKS, mas o uso de nomes de cluster é recomendado para melhor legibilidade.

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 com valores do repositório Git externo (padrão de várias fontes):

spec: sources: - repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - $values/environments/production/values.yaml - repoURL: https://github.com/example/config-repo targetRevision: main ref: values

Para obter mais informações, consulte Arquivos de valor do Helm do repositório Git externo na documentação do Argo CD.

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

Configuração de novas tentativas

Configure o comportamento de novas tentativas para sincronizações com falha:

spec: syncPolicy: retry: limit: 5 # Number of failed sync attempts; unlimited if less than 0 backoff: duration: 5s # Amount to back off (default unit: seconds, also supports "2m", "1h") factor: 2 # Factor to multiply the base duration after each failed retry maxDuration: 3m # Maximum amount of time allowed for the backoff strategy

Isso é particularmente útil para recursos que dependam da criação de CRDs primeiro ou quando se trabalha com instâncias kro em que o CRD pode não estar imediatamente disponível.

Opções de sincronização

Configuração de sincronização adicional:

Crie um namespace, se ele não existir:

spec: syncPolicy: syncOptions: - CreateNamespace=true

Ignore a simulação em caso de falta de recursos:

Útil ao aplicar recursos que dependam de CRDs que ainda não existam (como instâncias kro):

spec: syncPolicy: syncOptions: - SkipDryRunOnMissingResource=true

Isso também pode ser aplicado a recursos específicos usando um rótulo no próprio recurso.

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: name: 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: name: 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, da CLI do Argo CD ou atualizando o targetRevision na especificação da aplicação para uma confirmação ou etiqueta anterior no Git.

Com a CLI do Argo CD:

argocd app rollback argocd/my-app <revision-id>
nota

Ao usar a CLI do Argo CD com o recurso gerenciado, especifique as aplicações com o prefixo do namespace: namespace/appname.

Para obter mais informações, consulte reversão de aplicações do argocd na documentação do Argo CD.

Recursos adicionais