

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Configuración del acceso al repositorio
<a name="argocd-configure-repositories"></a>

Antes de implementar aplicaciones, configure Argo CD para acceder a sus repositorios de Git y registros de gráficos de Helm. Argo CD admite varios métodos de autenticación para GitHub, GitLab, Bitbucket, AWS CodeCommit y AWS ECR.

**nota**  
Para las integraciones directas de servicios de AWS (gráficos de Helm de ECR, repositorios de CodeCommit y CodeConnections), puede hacer referencia a ellas directamente en los recursos de la aplicación sin necesidad de crear un repositorio. El rol de capacidad debe tener los permisos para llamar a los permisos de IAM necesarios. Para obtener más información, consulte [Configuración de los permisos de Argo CD](argocd-permissions.md).

## Requisitos previos
<a name="_prerequisites"></a>
+ Un clúster de EKS con la capacidad de Argo CD creada
+ Repositorios de Git que contienen manifiestos de Kubernetes
+  `kubectl` configurado para comunicarse con el clúster

**nota**  
 AWS CodeConnections se puede conectar a servidores Git ubicados en la nube de AWS o en las instalaciones. Para obtener más información, consulte [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Métodos de autenticación
<a name="_authentication_methods"></a>


<table>
<thead>
  <tr><th>Método</th><th>Caso de uso</th><th>Permisos de IAM necesarios</th></tr>
</thead>
<tbody>
  <tr><td colspan="3"> **Integración directa con servicios de AWS** </td></tr>
  <tr><td>CodeCommit</td><td>Integración directa con los repositorios de Git de AWS CodeCommit. No es necesario configurar el repositorio.</td><td> `codecommit:GitPull` </td></tr>
  <tr><td>CodeConnections</td><td>Conéctese a GitHub, GitLab o Bitbucket con autenticación administrada. Requiere la configuración de la conexión.</td><td> `codeconnections:UseConnection` </td></tr>
  <tr><td>Artefactos OCI de ECR</td><td>Integración directa con AWS ECR para gráficos de Helm en formato OCI e imágenes de manifiesto. No es necesario configurar el repositorio.</td><td> `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly` </td></tr>
  <tr><td colspan="3"> **Configuración del repositorio con credenciales** </td></tr>
  <tr><td> AWS Secrets Manager (nombre de usuario o token)</td><td>Almacene tokens de acceso personal o contraseñas. Habilita la rotación de credenciales sin acceso a Kubernetes.</td><td> `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` </td></tr>
  <tr><td> AWS Secrets Manager (clave SSH)</td><td>Utilice autenticación mediante clave SSH. Habilita la rotación de credenciales sin acceso a Kubernetes.</td><td> `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` </td></tr>
  <tr><td> AWS Secrets Manager (aplicación de GitHub)</td><td>Autenticación de GitHub App con clave privada. Habilita la rotación de credenciales sin acceso a Kubernetes.</td><td> `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` </td></tr>
  <tr><td>Secreto de Kubernetes</td><td>Método de Argo CD estándar con secretos en el clúster</td><td>Ninguno (los permisos se gestionan mediante la entrada de acceso de EKS con el control de acceso basado en roles de Kubernetes)</td></tr>
</tbody>
</table>


## Acceso directo a los servicios de AWS
<a name="direct_access_to_shared_aws_services"></a>

Para los servicios de AWS, puede hacer referencia a ellos directamente en los recursos de la aplicación sin necesidad de crear configuraciones del repositorio. El rol de capacidad debe tener los permisos para llamar a los permisos de IAM necesarios.

### Repositorios de CodeCommit
<a name="_codecommit_repositories"></a>

Haga referencia a los repositorios de CodeCommit directamente en las aplicaciones:

```
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
```

Permisos de rol de capacidad necesarios:

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

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

Haga referencia a los repositorios de GitHub, GitLab o Bitbucket a través de CodeConnections. El formato de URL del repositorio se deriva del ARN de conexión de CodeConnections.

El formato de URL del repositorio es:

```
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
```

Permisos de rol de capacidad necesarios:

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

### Gráficos de Helm de ECR
<a name="_ecr_helm_charts"></a>

ECR almacena los gráficos de Helm como artefactos OCI. Argo CD admite dos formas de hacer referencia a ellos:

 **Formato Helm** (recomendado para gráficos de 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
```

Nota: No incluya el prefijo `oci://` cuando utilice el formato Helm. Utilice el campo `chart` para especificar el nombre del gráfico.

 **Formato OCI** (para artefactos OCI con manifiestos de 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}}
```

Nota: Incluya el prefijo `oci://` cuando utilice el formato OCI. Utilice el campo `path` en lugar de `chart`.

Permisos del rol de capacidad requeridos: asocie la política administrada:

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

Esta política incluye los permisos necesarios de ECR: `ecr:GetAuthorizationToken`, `ecr:BatchGetImage` y `ecr:GetDownloadUrlForLayer`.

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

Almacene las credenciales del repositorio en Secrets Manager y haga referencia a ellas en las configuraciones del repositorio de Argo CD. El uso de Secrets Manager permite la rotación automática de credenciales sin requerir acceso mediante el control de acceso basado en roles de Kubernetes; las credenciales se pueden rotar mediante permisos de IAM para Secrets Manager, y Argo CD lee automáticamente los valores actualizados.

**nota**  
Para reutilizar credenciales en varios repositorios (por ejemplo, todos los repositorios de una organización de GitHub), utilice plantillas de credenciales de repositorio con `argocd.argoproj.io/secret-type: repo-creds`. Esto ofrece una mejor experiencia de usuario que crear secretos de repositorio individuales. Para obtener más información, consulte [Credenciales de repositorio](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) en la documentación de Argo CD.

### Autenticación con nombre de usuario y token
<a name="_username_and_token_authentication"></a>

Para los repositorios HTTPS con contraseñas o tokens de acceso personales:

 **Cree un secreto en 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 de certificado de cliente TLS opcionales** (para servidores Git privados):

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

**nota**  
Los valores de `tlsClientCertData` y `tlsClientCertKey` deben estar codificados en base64.

 **Cree un secreto de repositorio que haga referencia a 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
```

### Autenticación con clave SSH
<a name="_ssh_key_authentication"></a>

Para el acceso a Git basado en SSH, almacene la clave privada como texto sin formato (no JSON):

 **Cree el secreto con la clave SSH privada**:

```
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-----"
```

 **Cree un secreto de repositorio 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
```

### Autenticación de la aplicación de GitHub
<a name="_github_app_authentication"></a>

Para la autenticación de la aplicación de GitHub con una clave privada:

 **Cree el secreto con las credenciales de la aplicación de 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**  
El valor de `githubAppPrivateKeySecret` debe estar codificado en base64.

 **Campo opcional para 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"
  }'
```

 **Cree un secreto de repositorio para la aplicación de 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
```

### Plantillas de credenciales de repositorio
<a name="_repository_credential_templates"></a>

Para reutilizar credenciales en varios repositorios (por ejemplo, todos los repositorios de una organización o usuario de GitHub), utilice plantillas de credenciales de repositorio con `argocd.argoproj.io/secret-type: repo-creds`. Esto ofrece una mejor experiencia de usuario que crear secretos de repositorio individuales para cada repositorio.

 **Cree una plantilla de credenciales de repositorio**:

```
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
```

Esta plantilla de credenciales se aplica a todos los repositorios que coincidan con el prefijo de URL `https://github.com/your-org`. A continuación, puede hacer referencia a cualquier repositorio de esta organización en Aplicaciones sin crear secretos adicionales.

Para obtener más información, consulte [Credenciales de repositorio](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) en la documentación de Argo CD.

**importante**  
Asegúrese de que el rol de capacidad de IAM tenga asociada la política administrada `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`, o permisos equivalentes que incluyan `secretsmanager:GetSecretValue` y permisos de descifrado de KMS. Consulte [Consideraciones sobre Argo CD](argocd-considerations.md) para obtener información sobre la configuración de las políticas de IAM.

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

Para obtener información sobre la integración de CodeConnections, consulte [Conexión a los repositorios de Git con AWS CodeConnections](integration-codeconnections.md).

CodeConnections proporciona autenticación administrada para GitHub, GitLab y Bitbucket sin almacenar credenciales.

## Uso de secretos de Kubernetes
<a name="_using_kubernetes_secrets"></a>

Almacene las credenciales directamente en Kubernetes mediante el método de Argo CD estándar.

 **Para HTTPS con token de acceso personal**:

```
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 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-----
```

## Repositorios de CodeCommit
<a name="_codecommit_repositories_2"></a>

Para AWS CodeCommit, conceda permisos de CodeCommit a su rol de capacidad de IAM (`codecommit:GitPull`).

Configure el repositorio:

```
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 obtener información detallada sobre la configuración de la política de IAM, consulte [Consideraciones sobre Argo CD](argocd-considerations.md).

## Comprobación de la conexión del repositorio
<a name="_verify_repository_connection"></a>

Compruebe el estado de la conexión a través de la interfaz de usuario de Argo CD, en Configuración → Repositorios. La interfaz de usuario muestra el estado de la conexión y cualquier error de autenticación.

Los secretos de repositorio no incluyen información sobre el estado.

## Recursos adicionales
<a name="_additional_resources"></a>
+  [Registro de clústeres de destino](argocd-register-clusters.md): registro de los clústeres de destino para implementaciones
+  [Creación de aplicaciones](argocd-create-application.md): creación de la primera aplicación
+  [Consideraciones sobre Argo CD](argocd-considerations.md): configuración de seguridad y permisos de IAM
+  [Private Repositories](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/): referencia de la configuración de repositorio ascendente