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
-
Um cluster de EKS com a funcionalidade para o Argo CD criada
-
Acesso ao repositório configurado (consulte Configuração do acesso ao repositório)
-
Cluster de destino registrado (consulte Registro de clusters de destino)
-
kubectlconfigurado para o estabelecimento de comunicação com o cluster
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
Chart do Helm do ECR:
spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:chart-versionchart: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-nametargetRevision: 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
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
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
Recursos adicionais
-
Trabalho com o Argo CD Projects: organize aplicações com Projects para ambientes multilocatários
-
Uso de ApplicationSets: realize implantações em vários clusters com modelos
-
Application Specification
: acesse a referência de API completa para a Application -
Sync Options
: acesse a configuração de sincronização avançada