Conceptos de 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.

Conceptos de Argo CD

Para implementar GitOps, Argo CD trata a Git como el único origen de información para las implementaciones de aplicaciones. En este tema, se muestra un ejemplo práctico y, a continuación, se explican los conceptos básicos que debe comprender al trabajar con la capacidad de EKS para Argo CD.

Introducción a Argo CD

Después de crear la capacidad de Argo CD (consulte Creación de una capacidad de Argo CD), puede comenzar a implementar aplicaciones. En este ejemplo, se explica el registro de un clúster y la creación de una aplicación.

Paso 1: Configurar

Registro del clúster (obligatorio)

Registre el clúster en el que desea implementar las aplicaciones. En este ejemplo, registraremos el mismo clúster en el que se ejecuta Argo CD (puede usar el nombre in-cluster por motivos de compatibilidad con la mayoría de los ejemplos de Argo CD):

# Get your cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster using Argo CD CLI argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default
nota

Para obtener información sobre cómo configurar la CLI de Argo CD para que funcione con la capacidad de Argo CD en EKS, consulte Uso de la CLI de Argo CD con la capacidad administrada.

Como alternativa, registre el clúster mediante un secreto de Kubernetes (consulte Registro de clústeres de destino para obtener más información).

Configuración del acceso al repositorio (opcional)

En este ejemplo, se usa un repositorio de GitHub público, por lo que no se requiere ninguna configuración del repositorio. Para los repositorios privados, configure el acceso mediante AWS Secrets Manager, CodeConnections o secretos de Kubernetes (consulte Configuración del acceso al repositorio para obtener más información).

Para los servicios de AWS (ECR para gráficos de Helm, CodeConnections y CodeCommit), puede hacer referencia a ellos 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 del acceso al repositorio.

Paso 2: Cree una aplicación

Cree este manifiesto de aplicación en my-app.yaml:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: name: in-cluster namespace: guestbook syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Aplique la aplicación:

kubectl apply -f my-app.yaml

Después de aplicar esta aplicación, Argo CD: 1. Sincroniza la aplicación de Git con el clúster (implementación inicial). 2. Supervisa el repositorio de Git para detectar cambios. 3. Sincroniza automáticamente los cambios posteriores en el clúster. 4. Detecta y corrige cualquier desviación del estado deseado. 5. Proporciona el estado y el historial de sincronización en la interfaz de usuario.

Consulte el estado de la aplicación:

kubectl get application guestbook -n argocd

También puede ver la aplicación mediante la CLI de Argo CD o la interfaz de usuario de Argo CD (accesible desde la consola de EKS, en la pestaña Capacidades del clúster).

nota

Cuando utilice la CLI de Argo CD con la capacidad administrada, especifique las aplicaciones con el prefijo de espacio de nombres: argocd app get argocd/guestbook.

nota

Utilice el nombre del clúster en destination.name (el nombre que utilizó al registrar el clúster). La capacidad administrada no admite el valor predeterminado local en el clúster (kubernetes.default.svc).

Conceptos clave

Principios y tipos de orígenes de GitOps

Argo CD implementa GitOps, donde el origen de la aplicación es el único origen de información para las implementaciones:

  • Declarativo: el estado deseado se declara mediante manifiestos de YAML, gráficos de Helm o superposiciones de Kustomize.

  • Con control de versiones: se hace un seguimiento de cada cambio con un registro de auditoría completo.

  • Automatizado: Argo CD supervisa continuamente los orígenes y sincroniza automáticamente los cambios.

  • Recuperación automática: detecta y corrige una desviación entre el estado deseado y el real del clúster.

Tipos de orígenes compatibles:

  • Repositorios de Git: GitHub, GitLab, Bitbucket, CodeCommit (HTTPS, SSH o CodeConnections)

  • Registros de Helm: registros HTTP (como https://aws.github.io/eks-charts) y registros OCI (como public.ecr.aws)

  • Imágenes OCI: imágenes de contenedor que incluyen manifiestos o gráficos de Helm (como oci://registry-1.docker.io/user/my-app)

Esta flexibilidad permite a las organizaciones elegir orígenes que cumplan con sus requisitos de seguridad y conformidad. Por ejemplo, las organizaciones que restringen el acceso a Git desde clústeres pueden usar ECR para gráficos de Helm o imágenes OCI.

Para obtener más información, consulte Application Sources en la documentación de Argo CD.

Sincronización y conciliación

Argo CD supervisa continuamente sus orígenes y clústeres para detectar y corregir las diferencias:

  1. Sondea los orígenes para ver si hay cambios (de forma predeterminada, cada 6 minutos).

  2. Compara el estado deseado con el estado del clúster.

  3. Marca las aplicaciones como Synced o OutOfSync.

  4. Sincroniza los cambios automáticamente (si se configuró) o espera su aprobación manual.

  5. Supervisa el estado de los recursos después de la sincronización.

Las ondas de sincronización controlan el orden de creación de los recursos mediante anotaciones:

metadata: annotations: argocd.argoproj.io/sync-wave: "0" # Default if not specified

Los recursos se aplican por orden de onda (primero, los números más bajos, incluidos los negativos, como -1). La fase 0 es la predeterminada si no se especifica. Esto permite crear dependencias como espacios de nombres (fase -1), antes de las implementaciones (fase 0) y antes de los servicios (fase 1).

La recuperación automática revierte los cambios manuales:

spec: syncPolicy: automated: selfHeal: true
nota

La capacidad administrada utiliza el seguimiento de recursos basado en anotaciones (no en etiquetas) para mejorar la compatibilidad con las convenciones de Kubernetes y otras herramientas.

Para obtener información detallada sobre las fases de la sincronización, los enlaces y los patrones avanzados, consulte la documentación de sincronización de Argo CD.

Estado de la aplicación

Argo CD supervisa el estado de todos los recursos de la aplicación:

Estados: * 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: bloqueo de pods, errores de trabajos) * Suspendido (la aplicación se pausó de forma intencionada) * Falta (los recursos definidos en Git no están en el clúster)

Argo CD tiene comprobaciones de estado integradas para los recursos comunes de Kubernetes (implementaciones, StatefulSets, trabajos, etc.) y admite comprobaciones de estado personalizadas para CRD.

El estado de la aplicación viene determinado por todos sus recursos: si hay algún recurso Degraded, el estado de la aplicación será Degraded.

Para obtener más información, consulte Resource Health en la documentación de Argo CD.

Patrones de varios clústeres

Argo CD admite dos patrones de implementación principales:

Radial: ejecute Argo CD en un clúster de administración dedicado que se implemente en varios clústeres de cargas de trabajo. * Control y visibilidad centralizados * Políticas coherentes en todos los clústeres * Una instancia de Argo CD que administrar * Separación clara entre el plano de control y las cargas de trabajo

Por clúster: ejecute Argo CD en cada clúster y administre solo las aplicaciones de ese clúster. * Separación de clústeres (un error no afecta a los demás) * Redes más sencillas (sin comunicación entre clústeres) * Configuración inicial más sencilla (sin registro de clústeres)

Elija la opción radial para los equipos de plataformas que administran varios clústeres, o la opción por clúster para equipos independientes o cuando los clústeres deban estar completamente aislados.

Para obtener información detallada sobre la configuración de varios clústeres, consulte Consideraciones sobre Argo CD.

Proyectos

Los proyectos proporcionan agrupamiento lógico y control de acceso para las aplicaciones:

  • Restricciones de origen: limite los repositorios de Git que se pueden usar.

  • Restricciones de destino: limite los clústeres y espacios de nombres que se pueden usar como destino.

  • Restricciones de recursos: limite los tipos de recursos de Kubernetes que se pueden implementar.

  • Integración con RBAC: asigne proyectos a ID de usuarios y grupos de AWS Identity Center.

Las aplicaciones pertenecen a un único proyecto. Si no se especifica, utilizan el proyecto default, que no tiene restricciones de forma predeterminada. Para uso en producción, edite el proyecto default para restringir el acceso y cree nuevos proyectos con las restricciones adecuadas.

Para obtener información sobre la configuración de proyectos y los patrones RBAC, consulte Configuración de los permisos de Argo CD.

Opciones de sincronización

Refine el comportamiento de la sincronización con opciones comunes:

  • CreateNamespace=true: se crea automáticamente el espacio de nombres de destino.

  • ServerSideApply=true: se utiliza la aplicación del servidor para una mejor resolución de conflictos.

  • SkipDryRunOnMissingResource=true: se omite la ejecución de prueba cuando las CRD aún no existan (útil para instancias de kro).

spec: syncPolicy: syncOptions: - CreateNamespace=true - ServerSideApply=true - SkipDryRunOnMissingResource=true

Para obtener una lista completa de las opciones de sincronización, consulte la documentación sobre las opciones de sincronización de Argo CD.

Siguientes pasos