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 (comopublic.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
Sincronización y conciliación
Argo CD supervisa continuamente sus orígenes y clústeres para detectar y corregir las diferencias:
-
Sondea los orígenes para ver si hay cambios (de forma predeterminada, cada 6 minutos).
-
Compara el estado deseado con el estado del clúster.
-
Marca las aplicaciones como
SyncedoOutOfSync. -
Sincroniza los cambios automáticamente (si se configuró) o espera su aprobación manual.
-
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
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
-
Configuración del acceso al repositorio: configuración del acceso al repositorio de Git
-
Registro de clústeres de destino: registro de los clústeres de destino para la implementación
-
Creación de aplicaciones: creación de la primera aplicación
-
Consideraciones sobre Argo CD: patrones específicos de EKS, integración con Identity Center y configuración de varios clústeres
-
Documentación de Argo CD
: documentación completa de Argo CD que incluye enlaces de sincronización, comprobaciones de estado y patrones avanzados