Consideraciones sobre Argo CD - 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.

Consideraciones sobre Argo CD

En este tema, se tratan aspectos importantes al usar la capacidad de EKS para Argo CD, como la planificación, los permisos, la autenticación y los patrones de implementación en varios clústeres.

Planificación

Antes de implementar Argo CD, tenga en cuenta lo siguiente:

Estrategia de repositorio: determine dónde se almacenarán los manifiestos de la aplicación (CodeCommit, GitHub, GitLab, Bitbucket). Planifique la estructura del repositorio y la estrategia de ramificación para los diferentes entornos.

Estrategia de RBAC: planifique qué equipos o usuarios deben tener acceso de administrador, editor o lector. Asígnelos a los grupos de AWS Identity Center o a los roles de Argo CD.

Arquitectura de varios clústeres: determine si administrará varios clústeres desde una única instancia de Argo CD. Considere la posibilidad de utilizar un clúster de administración dedicado para Argo CD.

Organización de las aplicaciones: planifique cómo estructurará las aplicaciones y ApplicationSets. Considere la posibilidad de utilizar proyectos para organizar las aplicaciones por equipo o entorno.

Políticas de sincronización: decida si las aplicaciones deben sincronizarse automáticamente o si deben aprobarse manualmente. La sincronización automática es habitual en el desarrollo y manual en la producción.

Permisos

Para obtener información detallada sobre los roles de capacidad de IAM, las políticas de confianza y las prácticas recomendadas de seguridad, consulte Rol de IAM de capacidad de Amazon EKS y Consideraciones sobre la seguridad para las capacidades de EKS.

Descripción general de los roles de capacidad de IAM

Al crear un recurso de capacidad de Argo CD, proporciona un rol de capacidad de IAM. A diferencia de ACK, Argo CD administra principalmente los recursos de Kubernetes, no los recursos de AWS directamente. Sin embargo, el rol de capacidad de IAM es obligatorio para:

  • Acceder a los repositorios privados de Git en CodeCommit

  • Integrar con AWS Identity Center para la autenticación

  • Acceder a los secretos en AWS Secrets Manager (si está configurado)

  • Implementaciones entre clústeres en otros clústeres de EKS

Integración de CodeCommit

Si utiliza repositorios de CodeCommit, adjunte una política con permisos de lectura:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }
importante

Para su uso en producción, restrinja el campo Resource a los ARN de repositorio específicos en lugar de usar "*".

Ejemplo:

"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"

Esto limita el acceso de la capacidad de Argo CD únicamente a los repositorios que necesita administrar.

Integración de Secrets Manager

Si almacena las credenciales del repositorio en Secrets Manager, asocie la política administrada para acceso de lectura:

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

Esta política incluye los permisos necesarios: secretsmanager:GetSecretValue, secretsmanager:DescribeSecret y permisos de descifrado de KMS.

Configuración básica

Para la funcionalidad básica de Argo CD con repositorios de Git públicos, no se requieren políticas de IAM adicionales más allá de la política de confianza.

Autenticación

Integración de AWS Identity Center

La capacidad administrada de Argo CD se integra directamente con AWS Identity Center (anteriormente AWS SSO), lo que le permite utilizar su proveedor de identidad actual para la autenticación.

Al configurar la integración de AWS Identity Center:

  1. Los usuarios acceden a la interfaz de usuario de Argo CD a través de la consola de EKS

  2. Se autentican mediante AWS Identity Center (que puede federarse con su proveedor de identidad corporativa)

  3. AWS Identity Center proporciona información sobre los usuarios y grupos a Argo CD

  4. Argo CD asigna usuarios y grupos a roles de RBAC en función de su configuración

  5. Los usuarios solo ven las aplicaciones y los recursos a los que tienen permiso de acceso

Simplificación del acceso con los conjuntos de permisos de Identity Center

AWS Identity Center proporciona dos rutas de autenticación distintas cuando se trabaja con Argo CD:

Autenticación mediante la API de Argo CD: Identity Center proporciona autenticación de inicio de sesión único a la interfaz de usuario y a la API de Argo CD. Se configura mediante las asignaciones de roles de RBAC de la capacidad de Argo CD.

Acceso a los clústeres de EKS: la capacidad de Argo CD utiliza el rol de IAM proporcionado por el cliente para autenticarse en los clústeres de EKS mediante las entradas de acceso. Estas entradas de acceso se pueden configurar manualmente para agregar o eliminar permisos.

Puede usar los conjuntos de permisos de Identity Center para simplificar la administración de identidades al permitir que una sola identidad acceda a los clústeres de Argo CD y EKS. De este modo, se reduce la sobrecarga, ya que se le requiere que administre solo una identidad en ambos sistemas, en lugar de mantener credenciales separadas para el acceso a Argo CD y al clúster.

Asignaciones de roles de RBAC

Argo CD cuenta con roles integrados que puede asignar a los usuarios y grupos de AWS Identity Center:

ADMIN: acceso completo a todas las aplicaciones y configuraciones. Puede crear, implementar y eliminar aplicaciones. Puede administrar la configuración de Argo CD.

EDITOR: puede crear y modificar aplicaciones. No puede cambiar la configuración de Argo CD ni eliminar aplicaciones.

VIEWER: acceso de solo lectura a las aplicaciones. Puede ver el estado y el historial de la aplicación. No puede hacer cambios.

nota

Los nombres de los roles distinguen entre mayúsculas y minúsculas y deben estar en mayúsculas (ADMIN, EDITOR, VIEWER).

importante

La integración de capacidades de EKS con AWS Identity Center admite hasta 1000 identidades por capacidad de Argo CD. Una identidad puede ser un usuario o un grupo.

Implementaciones de varios clústeres

La capacidad administrada de Argo CD admite implementaciones de varios clústeres, lo que le permite administrar las aplicaciones en los clústeres de desarrollo, prueba y producción desde una única instancia de Argo CD.

Cómo funcionan varios clústeres

Al registrar clústeres adicionales con Argo CD:

  1. Crea secretos de clúster que hacen referencia a los clústeres de EKS de destino por ARN

  2. Se crean aplicaciones o ApplicationSets que tienen distintos clústeres como destino

  3. Argo CD se conecta a cada clúster para implementar y supervisar recursos

  4. Puede ver y administrar todos los clústeres desde una única interfaz de usuario de Argo CD

Requisitos previos para varios clústeres

Antes de registrar clústeres adicionales:

  • Cree una entrada de acceso en el clúster de destino para el rol de capacidad de Argo CD

  • Garantice la conectividad de red entre la capacidad de Argo CD y los clústeres de destino

  • Compruebe los permisos de IAM para acceder a los clústeres de destino

Registro de un clúster

Registre los clústeres mediante Kubernetes Secrets en el espacio de nombres argocd.

Obtenga el ARN del clúster de destino. Reemplace region-code por la región de AWS en la que está el clúster de destino y sustituya target-cluster por el nombre del clúster de destino.

aws eks describe-cluster \ --region region-code \ --name target-cluster \ --query 'cluster.arn' \ --output text

Cree un secreto de clúster mediante el ARN del clúster:

apiVersion: v1 kind: Secret metadata: name: target-cluster namespace: argocd labels: argocd.argoproj.io/secret-type: cluster type: Opaque stringData: name: target-cluster server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster project: default
importante

Use el ARN del clúster de EKS en el campo server, no la URL del servidor de API de Kubernetes. La capacidad administrada requiere que los ARN identifiquen los clústeres de destino.

Aplique el secreto:

kubectl apply -f cluster-secret.yaml

Configuración de la entrada de acceso en el clúster de destino

El clúster de destino debe tener una entrada de acceso que conceda al rol de capacidad de Argo CD permiso para implementar aplicaciones. Reemplace region-code por la región de AWS en la que está el clúster de destino, sustituya target-cluster por el nombre del clúster de destino y el ARN por el ARN del rol de capacidad de Argo CD.

aws eks create-access-entry \ --region region-code \ --cluster-name target-cluster \ --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \ --type STANDARD \ --kubernetes-groups system:masters
nota

Para su uso en producción, considere la posibilidad de utilizar grupos de Kubernetes más restrictivos en lugar de system:masters.

Acceso a clústeres privados

La capacidad administrada de Argo CD se puede implementar en clústeres de EKS totalmente privados sin necesidad de emparejamiento de VPC ni una configuración de red especializada. AWS administra automáticamente la conectividad entre la capacidad de Argo CD y los clústeres remotos privados. Asegúrese de que los controles de acceso al repositorio y las políticas de control de acceso basado en roles de Argo CD estén configurados correctamente.

Implementaciones entre cuentas

Para implementaciones entre cuentas, agregue el rol de capacidad de IAM de Argo CD desde la cuenta de origen a la entrada de acceso de EKS del clúster de destino:

  1. En la cuenta de destino, cree una entrada de acceso en el clúster de EKS de destino

  2. Utilice el ARN del rol de capacidad de IAM de Argo CD de la cuenta de origen como entidad principal

  3. Configure los permisos de RBAC de Kubernetes adecuados para la entrada de acceso

  4. Registre el clúster de destino en Argo CD con su ARN de clúster de EKS

No es necesario crear roles de IAM adicionales ni configurar ninguna política de confianza: las entradas de acceso de EKS gestionan el acceso entre cuentas.

Prácticas recomendadas

Utilice fuentes declarativas como fuente de verdad: almacene todos los manifiestos de las aplicaciones en fuentes declarativas (repositorios Git, registros de Helm o imágenes OCI), lo que permite el control de versiones, los registros de auditoría y la colaboración.

Implemente un RBAC adecuado: utilice la integración de AWS Identity Center para controlar quién puede acceder a las aplicaciones de Argo CD y administrarlas. Argo CD admite un control de acceso detallado a los recursos dentro de las aplicaciones (implementaciones, pods, ConfigMaps, secretos).

Utilice ApplicationSets para implementaciones en varios entornos: utilice ApplicationSets para implementar aplicaciones en varios clústeres o espacios de nombres con diferentes configuraciones.

Administración del ciclo de vida

Políticas de sincronización de aplicaciones

Controle la forma en que Argo CD sincroniza las aplicaciones:

Sincronización manual: las aplicaciones requieren una aprobación manual para sincronizar los cambios. Recomendada para entornos de producción.

Sincronización automática: las aplicaciones se sincronizan automáticamente cuando se detectan cambios en Git. Común en entornos de desarrollo y prueba.

Recuperación automática: se revierten automáticamente los cambios manuales hechos en el clúster. Garantiza que el estado del clúster coincida con Git.

Poda: se eliminan automáticamente los recursos eliminados de Git. Úselo con precaución, ya que puede eliminar recursos.

Estado de la aplicación

Argo CD supervisa continuamente el estado de las aplicaciones:

  • En buen estado: todos los recursos se ejecutan según lo esperado

  • En curso: los recursos se están creando o actualizando

  • Degradado: algunos recursos no están en buen estado

  • Suspendido: la aplicación está en pausa

  • Falta: faltan recursos en el clúster

Plazos de sincronización

Configure los plazos de sincronización para controlar cuándo se pueden sincronizar las aplicaciones:

  • Permita las sincronizaciones solo durante los periodos de mantenimiento

  • Bloquee las sincronizaciones durante el horario laboral

  • Programe sincronizaciones automáticas para horarios específicos

  • Utilice periodos de sincronización en situaciones en las que necesite realizar cambios y detener cualquier sincronización (escenarios de emergencia)

Configuración de webhooks para una sincronización más rápida

De forma predeterminada, Argo CD sondea los repositorios de Git cada 6 minutos para detectar cambios. Para implementaciones con mayor capacidad de respuesta, configure los webhooks de Git para que activen sincronizaciones inmediatas cuando se inserten cambios.

Los webhooks proporcionan varios beneficios:

  • Respuesta de sincronización inmediata cuando se inserta el código (segundos en lugar de minutos)

  • Reducción de la sobrecarga de sondeo y mejora del rendimiento del sistema

  • Uso más eficiente de los límites de velocidad de la API

  • Mejor experiencia de usuario con comentarios más rápidos

Punto de conexión de webhook

La URL del webhook sigue el patrón ${serverUrl}/api/webhook, donde serverUrl es la URL del servidor de Argo CD.

Por ejemplo, si la URL del servidor de Argo CD es https://abc123.eks-capabilities.us-west-2.amazonaws.com, la URL del webhook es:

https://abc123.eks-capabilities.us-west-2.amazonaws.com/api/webhook

Configuración de webhooks por proveedor de Git

GitHub: en la configuración del repositorio, agregue un webhook con la URL del webhook de Argo CD. Establezca el tipo de contenido en application/json y seleccione “Solo el evento de inserción”.

GitLab: en la configuración del proyecto, agregue un webhook con la URL del webhook de Argo CD. Active “Eventos de inserción” y, opcionalmente, “Etiquetar eventos de inserción”.

Bitbucket: en la configuración del repositorio, agregue un webhook con la URL del webhook de Argo CD. Seleccione “Inserción del repositorio” como activador.

CodeCommit: cree una regla de Amazon EventBridge que active los cambios de estado del repositorio de CodeCommit y envíe notificaciones al punto de conexión del webhook de Argo CD.

Para obtener instrucciones detalladas sobre la configuración de webhooks, consulte Argo CD Webhook Configuration.

nota

Los webhooks complementan los sondeos, no las sustituyen. Argo CD sigue sondeando los repositorios como mecanismo alternativo en caso de que se pierdan las notificaciones de los webhooks.

Siguientes pasos