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.
Creación de aplicaciones
Las aplicaciones representan implementaciones en los clústeres de destino. Cada aplicación define un origen (repositorio de Git) y un destino (clúster y espacio de nombres). Cuando se apliquen, Argo CD creará los recursos especificados en los manifiestos del repositorio de Git en el espacio de nombres del clúster. Las aplicaciones suelen especificar las implementaciones de cargas de trabajo, pero pueden administrar cualquier recurso de Kubernetes disponible en el clúster de destino.
Requisitos previos
-
Un clúster de EKS con la capacidad de Argo CD creada
-
Acceso al repositorio configurado (consulte Configuración del acceso al repositorio)
-
Clúster de destino registrado (consulte Registro de clústeres de destino)
-
kubectlconfigurado para comunicarse con el clúster
Creación de una aplicación básica
Defina una aplicación que se implemente desde un repositorio de Git:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook destination: name: in-cluster namespace: default
nota
Utilice destination.name con el nombre del clúster que utilizó al registrar el clúster (como in-cluster para el clúster local). El campo destination.server también funciona con los ARN de clústeres de EKS, pero se recomienda utilizar los nombres de los clústeres para una mejor legibilidad.
Aplique la aplicación:
kubectl apply -f application.yaml
Consulte el estado de la aplicación:
kubectl get application guestbook -n argocd
Configuración del origen
Repositorio de Git:
spec: source: repoURL: https://github.com/example/my-app targetRevision: main path: kubernetes/manifests
Confirmación o etiqueta de Git específica:
spec: source: targetRevision: v1.2.0 # or commit SHA
Gráfico de Helm:
spec: source: repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - values.yaml parameters: - name: image.tag value: v1.2.0
Gráfico de Helm con valores de un repositorio Git externo (patrón de múltiples orígenes):
spec: sources: - repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - $values/environments/production/values.yaml - repoURL: https://github.com/example/config-repo targetRevision: main ref: values
Para obtener más información, consulte Archivos de valores de Helm desde un repositorio Git externo
Gráfico de Helm desde ECR:
spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:chart-versionchart:chart-name
Si el rol de capacidad tiene los permisos de ECR necesarios, el repositorio se utiliza directamente y no es necesario configurarlo. Para obtener más información, consulte Configuración del acceso al repositorio.
Repositorio de Git desde CodeCommit:
spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-nametargetRevision: main path: kubernetes/manifests
Si el rol de capacidad tiene los permisos de CodeCommit necesarios, el repositorio se utiliza directamente y no es necesario configurarlo. Para obtener más información, consulte Configuración del acceso al repositorio.
Repositorio de Git desde CodeConnections:
spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests
El formato de URL del repositorio se deriva del ARN de conexión de CodeConnections. Si el rol de capacidad tiene los permisos de CodeConnections necesarios y hay una conexión configurada, el repositorio se utiliza directamente y no es necesario configurarlo. Para obtener más información, consulte Configuración del acceso al repositorio.
Kustomize:
spec: source: repoURL: https://github.com/example/kustomize-app targetRevision: main path: overlays/production kustomize: namePrefix: prod-
Políticas de sincronización
Controle la forma en que Argo CD sincroniza las aplicaciones.
Sincronización manual (predeterminada):
Las aplicaciones requieren una aprobación manual para la sincronización:
spec: syncPolicy: {} # No automated sync
Active manualmente la sincronización:
kubectl patch application guestbook -n argocd \ --type merge \ --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
Sincronización automática:
Las aplicaciones se sincronizan automáticamente cuando se detectan cambios en Git:
spec: syncPolicy: automated: {}
Recuperación automática:
Se revierten automáticamente los cambios manuales en el clúster:
spec: syncPolicy: automated: selfHeal: true
Cuando se activa, Argo CD revierte cualquier cambio manual hecho directamente en el clúster, lo que garantiza que Git continúe siendo el origen de información verdadera.
Poda:
Se eliminan automáticamente los recursos eliminados de Git:
spec: syncPolicy: automated: prune: true
aviso
La poda eliminará los recursos del clúster. Úsela con precaución en entornos de producción.
Sincronización automática combinada:
spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
Configuración de reintentos:
Configure el comportamiento de reintento para sincronizaciones fallidas:
spec: syncPolicy: retry: limit: 5 # Number of failed sync attempts; unlimited if less than 0 backoff: duration: 5s # Amount to back off (default unit: seconds, also supports "2m", "1h") factor: 2 # Factor to multiply the base duration after each failed retry maxDuration: 3m # Maximum amount of time allowed for the backoff strategy
Esto resulta especialmente útil para los recursos que dependen de que las definiciones de recursos personalizados (CRD) se creen primero, o cuando se trabaja con instancias de kro en las que la CRD puede no estar disponible de inmediato.
Opciones de sincronización
Configuración de sincronización adicional:
Cree un espacio de nombres si no existe:
spec: syncPolicy: syncOptions: - CreateNamespace=true
Omitir la ejecución en seco para recursos no presentes:
Resulta útil al aplicar recursos que dependen de definiciones de recursos personalizados (CRD) que aún no existen (como las instancias de kro):
spec: syncPolicy: syncOptions: - SkipDryRunOnMissingResource=true
Esto también se puede aplicar a recursos específicos mediante el uso de una etiqueta en el propio recurso.
Valide los recursos antes de aplicar:
spec: syncPolicy: syncOptions: - Validate=true
Aplicar solo sin sincronización:
spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true
Características de sincronización avanzadas
Argo CD admite características de sincronización avanzadas para implementaciones complejas:
-
Ondas de sincronización: controlan el orden de creación de los recursos con anotaciones
argocd.argoproj.io/sync-wave -
Enlaces de sincronización: ejecutan trabajos antes o después de la sincronización con anotaciones
argocd.argoproj.io/hook(PreSync, PostSync, SyncFail) -
Evaluación del estado de los recursos: comprobaciones de estado personalizadas para los recursos específicos de la aplicación
Para obtener más información, consulte Sync Waves
Omisión de diferencias
Evite que Argo CD sincronice campos específicos administrados por otros controladores (como la administración de réplicas de HPA):
spec: ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas
Para obtener más información sobre los patrones de omisión y las exclusiones de campos, consulte Diffing Customization
Implementación en varios entornos
Implemente la misma aplicación en varios entornos:
Desarrollo de:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-dev namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: develop path: overlays/development destination: name: dev-cluster namespace: my-app
Producción:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-prod namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: main path: overlays/production destination: name: prod-cluster namespace: my-app syncPolicy: automated: prune: true selfHeal: true
Supervisión y administración de aplicaciones
Consulte el estado de la aplicación:
kubectl get application my-app -n argocd
Acceda a la interfaz de usuario de Argo CD:
Abra la interfaz de usuario de Argo CD a través de la consola de EKS para ver la topología de la aplicación, el estado de la sincronización, el estado de los recursos y el historial de implementación. Consulte Uso de Argo CD para obtener instrucciones de acceso a la interfaz de usuario.
Revierta aplicaciones:
Revierta a una revisión anterior mediante la interfaz de usuario de Argo CD, la CLI de Argo CD o mediante la actualización de targetRevision en la especificación de la aplicación a una confirmación o etiqueta anterior de Git.
Uso de la CLI de Argo CD:
argocd app rollback argocd/my-app <revision-id>
nota
Cuando utilice la CLI de Argo CD con la capacidad administrada, especifique las aplicaciones con el prefijo de espacio de nombres: namespace/appname.
Para obtener más información, consulte el comando de reversión de aplicaciones argocd app rollback
Recursos adicionales
-
Uso de proyectos de Argo CD: organización de aplicaciones con proyectos para entornos multitenencia
-
Uso de ApplicationSets: implementación en varios clústeres con plantillas
-
Application Specification
: referencia completa de la API de la aplicación -
Sync Options
: configuración de sincronización avanzada