

 **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.

# Configuração do acesso ao repositório
<a name="argocd-configure-repositories"></a>

Antes de implantar aplicações, configure o Argo CD para acessar os repositórios do Git e os registros do chart do Helm. O Argo CD oferece suporte a diversos métodos de autenticação para GitHub, GitLab, Bitbucket, AWS CodeCommit e AWS ECR.

**nota**  
No caso de integrações diretas com serviços da AWS (como charts do Helm do ECR, repositórios do CodeCommit e CodeConnections), é possível referenciá-los diretamente nos recursos da Application sem a necessidade de criar configurações de Repository. O perfil da funcionalidade deve ter as permissões do IAM necessárias. Para mais detalhes, consulte [Configuração das permissões do Argo CD](argocd-permissions.md).

## Pré-requisitos
<a name="_prerequisites"></a>
+ Um cluster de EKS com a funcionalidade para o Argo CD criada
+ Repositórios do Git que contêm manifestos do Kubernetes
+  `kubectl` configurado para o estabelecimento de comunicação com o cluster

**nota**  
 OAWS CodeConnections pode se conectar a servidores Git localizados na nuvem AWS ou on-premises. Para obter mais informações, consulte [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Métodos de autenticação
<a name="_authentication_methods"></a>


| Método | Caso de uso | Permissões do IAM necessárias | 
| --- | --- | --- | 
|   **Integração direta com serviços da AWS**   | 
|  CodeCommit  |  Integração direta com repositórios do Git do AWS CodeCommit. Nenhuma configuração de Repository é necessária.  |   `codecommit:GitPull`   | 
|  CodeConnections  |  Estabeleça conexão com o GitHub, o GitLab ou o Bitbucket usando autenticação gerenciada. Requer configuração da conexão.  |   `codeconnections:UseConnection`   | 
|  Artefatos da OCI do ECR  |  Integração direta com o AWS ECR para charts do Helm baseados em OCI e imagens de manifestos. Nenhuma configuração de Repository é necessária.  |   `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly`   | 
|   **Configuração do repositório com credenciais**   | 
|   AWS Secrets Manager (nome do usuário/token)  |  Armazene tokens de acesso pessoal ou senhas Permite a alternância de credenciais sem acesso ao Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (chave SSH)  |  Use a autenticação por chave SSH. Permite a alternância de credenciais sem acesso ao Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (aplicativo do GitHub)  |  Autenticação pela aplicação do GitHub com chave privada Permite a alternância de credenciais sem acesso ao Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|  Kubernetes Secret  |  Método padrão do Argo CD usando segredos “in-cluster”  |  Nenhuma (permissões gerenciadas pelo EKS Access Entry com Kubernetes RBAC)  | 

## Acesso direto aos serviços da AWS
<a name="direct_access_to_shared_aws_services"></a>

No caso de serviços da AWS, é possível referenciá-los diretamente nos recursos da Application sem precisar criar configurações de Repository. O perfil da funcionalidade deve ter as permissões do IAM necessárias.

### Repositórios do CodeCommit
<a name="_codecommit_repositories"></a>

Referencie repositórios do CodeCommit diretamente nas Applications:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Permissões obrigatórias do perfil da funcionalidade:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:GitPull",
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

### CodeConnections
<a name="_codeconnections"></a>

Referencie repositórios do GitHub, do GitLab ou do Bitbucket por meio do CodeConnections. O formato do URL do repositório é derivado do ARN da conexão do CodeConnections.

O formato do URL do repositório é:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Permissões obrigatórias do perfil da funcionalidade:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codeconnections:UseConnection",
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

### Charts do Helm do ECR
<a name="_ecr_helm_charts"></a>

O ECR armazena charts do Helm como artefatos OCI. O Argo CD oferece duas maneiras de referenciá-los:

 **Formato Helm** (recomendado para charts do Helm):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-helm
  namespace: argocd
spec:
  source:
    repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
    helm:
      valueFiles:
        - values.yaml
```

Observação: não inclua o prefixo `oci://` ao usar o formato Helm. Use o campo `chart` para especificar o nome do chart.

 **Formato OCI** (para artefatos OCI que contêm manifestos do Kubernetes):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-oci
  namespace: argocd
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: artifact-version
    path: path-to-manifests
```

Observação: inclua o prefixo `oci://` ao usar o formato OCI. Utilize o campo `path` em vez de `chart`.

Permissões de perfil de funcionalidade necessárias - anexe a política gerenciada:

```
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

Essa política inclui as permissões ECR necessárias: `ecr:GetAuthorizationToken`, `ecr:BatchGetImage` e `ecr:GetDownloadUrlForLayer`.

## Uso do AWS Secrets Manager
<a name="using_shared_aws_secrets_manager"></a>

Armazene credenciais de repositório no Secrets Manager e faça referência a elas nas configurações de Repository do Argo CD. O uso do Secrets Manager permite a alternância automática de credenciais sem exigir acesso ao Kubernetes RBAC. As credenciais podem ser alternadas usando as permissões do IAM para o Secrets Manager, e o Argo CD lê automaticamente os valores atualizados.

**nota**  
Para reutilização de credenciais em vários repositórios (por exemplo, todos os repositórios em uma organização do GitHub), use modelos de credenciais de repositório com `argocd.argoproj.io/secret-type: repo-creds`. Isso fornece uma melhor experiência de usuário do que criar segredos de repositórios individuais. Para obter mais informações, consulte [Credenciais de repositórios](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) na documentação do Argo CD.

### Autenticação por nome de usuário e token
<a name="_username_and_token_authentication"></a>

Para repositórios HTTPS com tokens de acesso pessoal ou senhas:

 **Criar o segredo no Secrets Manager**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo \
  --description "GitHub credentials for Argo CD" \
  --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
```

 **Campos opcionais para certificado TLS de cliente** (para servidores do Git privados):

```
aws secretsmanager create-secret \
  --name argocd/my-private-repo \
  --secret-string '{
    "username":"your-username",
    "token":"your-token",
    "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
    "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t"
  }'
```

**nota**  
Os valores `tlsClientCertData` e `tlsClientCertKey` devem estar codificados em base64.

 **Criar um segredo de repositório referenciando o Secrets Manager**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf
  project: default
```

### Autenticação por chave SSH
<a name="_ssh_key_authentication"></a>

Para obter acesso ao Git baseado em SSH, armazene a chave privada em texto não formatado (não em JSON):

 **Criar o segredo com a chave privada SSH**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo-ssh \
  --description "SSH key for Argo CD" \
  --secret-string "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----"
```

 **Criar um segredo de repositório para SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf
  project: default
```

### Autenticação por aplicativo do GitHub
<a name="_github_app_authentication"></a>

Para a autenticação pelo aplicativo do GitHub com uma chave privada:

 **Criar o segredo com as credenciais do aplicativo do GitHub**:

```
aws secretsmanager create-secret \
  --name argocd/github-app \
  --description "GitHub App credentials for Argo CD" \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678"
  }'
```

**nota**  
O valor `githubAppPrivateKeySecret` deve estar codificado em base64.

 **Campo opcional para o GitHub Enterprise**:

```
aws secretsmanager create-secret \
  --name argocd/github-enterprise-app \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678",
    "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3"
  }'
```

 **Criar um segredo de repositório para o aplicativo do GitHub**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-github-app
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf
  project: default
```

### Modelos de credencial de repositório
<a name="_repository_credential_templates"></a>

Para reutilização de credenciais em vários repositórios (por exemplo, todos os repositórios em uma organização ou usuário do GitHub), use modelos de credenciais de repositório com `argocd.argoproj.io/secret-type: repo-creds`. Isso fornece uma melhor experiência de usuário do que criar segredos de repositórios individuais para cada respositório.

 **Crie um modelo de credencial de repositório**:

```
apiVersion: v1
kind: Secret
metadata:
  name: github-org-creds
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repo-creds
stringData:
  type: git
  url: https://github.com/your-org
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
```

Esse modelo de credencial se aplica a todos os repositórios que correspondam ao prefixo `https://github.com/your-org` da URL. Em seguida, é possível referenciar qualquer repositório dessa organização em Applications sem criar segredos adicionais.

Para obter mais informações, consulte [Credenciais de repositórios](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) na documentação do Argo CD.

**Importante**  
Certifique-se de que seu perfil de funcionalidade do IAM tenha a política gerenciada `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` anexada ou permissões equivalentes, incluindo `secretsmanager:GetSecretValue` e permissões de descriptografia do KMS. Consulte [Considerações sobre o Argo CD](argocd-considerations.md) para obter a configuração da política do IAM.

## Uso do AWS CodeConnections
<a name="using_shared_aws_codeconnections"></a>

Para a integração com o CodeConnections, consulte [Estabelecimento de conexão com repositórios do Git usando o AWS CodeConnections](integration-codeconnections.md).

O CodeConnections fornece autenticação gerenciada para GitHub, GitLab e Bitbucket sem armazenar credenciais.

## Uso do Kubernetes Secrets
<a name="_using_kubernetes_secrets"></a>

Armazene credenciais diretamente no Kubernetes usando o método padrão do Argo CD.

 **Para HTTPS com token de acesso pessoal**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  username: your-username
  password: your-personal-access-token
```

 **Para o SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ... your private key ...
    -----END OPENSSH PRIVATE KEY-----
```

## Repositórios do CodeCommit
<a name="_codecommit_repositories_2"></a>

Para o AWS CodeCommit, conceda ao perfil da funcionalidade do IAM permissões do CodeCommit (`codecommit:GitPull`).

Configurar o repositório:

```
apiVersion: v1
kind: Secret
metadata:
  name: codecommit-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo
  project: default
```

Para obter a configuração detalhada da política do IAM, consulte [Considerações sobre o Argo CD](argocd-considerations.md).

## Verificação da conexão do repositório
<a name="_verify_repository_connection"></a>

Verifique o status da conexão pela interface do usuário do Argo CD em “Settings → Repositories”. A interface do usuário apresenta o status da conexão e quaisquer erros de autenticação.

Os segredos do repositório não incluem informações de status.

## Recursos adicionais
<a name="_additional_resources"></a>
+  [Registro de clusters de destino](argocd-register-clusters.md): registre os clusters de destino para implantações
+  [Criação de Applications](argocd-create-application.md): crie sua primeira Application
+  [Considerações sobre o Argo CD](argocd-considerations.md): acesse as permissões do IAM e as configuração de segurança
+  [Private Repositories](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/): acesse a referência de configuração de repositórios da versão original