

 **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
<a name="argocd-create-application"></a>

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
<a name="_prerequisites"></a>
+ 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](argocd-configure-repositories.md))
+ Cluster de destino registrado (consulte [Registro de clusters de destino](argocd-register-clusters.md))
+  `kubectl` configurado para o estabelecimento de comunicação com o cluster

## Criação de uma Application básica
<a name="_create_a_basic_application"></a>

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
<a name="_source_configuration"></a>

 **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](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) 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](argocd-configure-repositories.md).

 **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](argocd-configure-repositories.md).

 **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](argocd-configure-repositories.md).

 **Kustomize**:

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

## Políticas de sincronização
<a name="_sync_policies"></a>

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
<a name="_sync_options"></a>

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
<a name="_advanced_sync_features"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) e [Resource Hooks](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) na documentação do CD Argo.

## Desconsideração de diferenças
<a name="_ignore_differences"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) na documentação do Argo CD.

## Implantação em vários ambientes
<a name="_multi_environment_deployment"></a>

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
<a name="_monitor_and_manage_applications"></a>

 **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](working-with-argocd.md) 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](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/) na documentação do Argo CD.

## Recursos adicionais
<a name="_additional_resources"></a>
+  [Trabalho com o Argo CD Projects](argocd-projects.md): organize aplicações com Projects para ambientes multilocatários
+  [Uso de ApplicationSets](argocd-applicationsets.md): realize implantações em vários clusters com modelos
+  [Application Specification](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/): acesse a referência de API completa para a Application
+  [Sync Options](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/): acesse a configuração de sincronização avançada