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: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: default
importante
Use el ARN del clúster de EKS en el campo destination.server, no la URL del servidor de API de Kubernetes. La capacidad administrada requiere que los ARN identifiquen los clústeres.
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 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
Opciones de sincronización
Configuración de sincronización adicional:
Cree un espacio de nombres si no existe:
spec: syncPolicy: syncOptions: - CreateNamespace=true
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: server: arn:aws:eks:us-west-2:111122223333:cluster/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: server: arn:aws:eks:us-west-2:111122223333:cluster/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 o al actualizar targetRevision en la especificación de la aplicación a una confirmación o etiqueta de Git anterior.
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