Creación de aplicaciones - 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.

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

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 en la documentación de Argo CD.

Gráfico de Helm desde ECR:

spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: 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-name targetRevision: 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 y Resource Hooks en la documentación de Argo CD.

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 en la documentación de Argo CD.

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 en la documentación de Argo CD.

Recursos adicionales