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: 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-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

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 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: 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