Configuración del acceso al repositorio - Amazon EKS

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

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

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.

codecommit:GitPull

CodeConnections

Conéctese a GitHub, GitLab o Bitbucket con autenticación administrada. Requiere la configuración de la conexión.

codeconnections:UseConnection

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.

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

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.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

AWS Secrets Manager (clave SSH)

Utilice autenticación mediante clave SSH. Habilita la rotación de credenciales sin acceso a Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

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.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

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

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

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 en la documentación de Argo CD.

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