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
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.
Requisitos previos
-
Un clúster de EKS con la capacidad de Argo CD creada
-
Repositorios de Git que contienen manifiestos de Kubernetes
-
kubectlconfigurado 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.
Métodos de autenticación
| Método | Caso de uso | Permisos de IAM necesarios |
|---|---|---|
|
Integración directa con servicios de AWS |
||
|
CodeCommit |
Integración directa con los repositorios de Git de AWS CodeCommit. No es necesario configurar el repositorio. |
|
|
CodeConnections |
Conéctese a GitHub, GitLab o Bitbucket con autenticación administrada. Requiere la configuración de la conexión. |
|
|
Artefactos OCI de ECR |
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. |
|
|
Configuración del repositorio con credenciales |
||
|
AWS Secrets Manager (nombre de usuario o token) |
Almacene tokens de acceso personal o contraseñas. Habilita la rotación de credenciales sin acceso a Kubernetes. |
|
|
AWS Secrets Manager (clave SSH) |
Utilice autenticación mediante clave SSH. Habilita la rotación de credenciales sin acceso a Kubernetes. |
|
|
AWS Secrets Manager (aplicación de GitHub) |
Autenticación de GitHub App con clave privada. Habilita la rotación de credenciales sin acceso a Kubernetes. |
|
|
Secreto de Kubernetes |
Método de Argo CD estándar con secretos en el clúster |
Ninguno (los permisos se gestionan mediante la entrada de acceso de EKS con el control de acceso basado en roles de Kubernetes) |
Acceso directo a los servicios de AWS
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
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-nametargetRevision: 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
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
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-nametargetRevision:chart-versionchart:chart-namehelm: 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-nametargetRevision:artifact-versionpath: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
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
Autenticación con nombre de usuario y token
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
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
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
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
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 para obtener información sobre la configuración de las políticas de IAM.
Uso de AWS CodeConnections
Para obtener información sobre la integración de CodeConnections, consulte Conexión a los repositorios de Git con AWS CodeConnections.
CodeConnections proporciona autenticación administrada para GitHub, GitLab y Bitbucket sin almacenar credenciales.
Uso de secretos de Kubernetes
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
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.
Comprobación de la conexión del repositorio
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
-
Registro de clústeres de destino: registro de los clústeres de destino para implementaciones
-
Creación de aplicaciones: creación de la primera aplicación
-
Consideraciones sobre Argo CD: configuración de seguridad y permisos de IAM
-
Private Repositories
: referencia de la configuración de repositorio ascendente