

 **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
<a name="argocd-create-application"></a>

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
<a name="_prerequisites"></a>
+ Un clúster de EKS con la capacidad de Argo CD creada
+ Acceso al repositorio configurado (consulte [Configuración del acceso al repositorio](argocd-configure-repositories.md))
+ Clúster de destino registrado (consulte [Registro de clústeres de destino](argocd-register-clusters.md))
+  `kubectl` configurado para comunicarse con el clúster

## Creación de una aplicación básica
<a name="_create_a_basic_application"></a>

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
<a name="_source_configuration"></a>

 **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](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) 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](argocd-configure-repositories.md).

 **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](argocd-configure-repositories.md).

 **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](argocd-configure-repositories.md).

 **Kustomize**:

```
spec:
  source:
    repoURL: https://github.com/example/kustomize-app
    targetRevision: main
    path: overlays/production
    kustomize:
      namePrefix: prod-
```

## Políticas de sincronización
<a name="_sync_policies"></a>

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
<a name="_sync_options"></a>

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
<a name="_advanced_sync_features"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) y [Resource Hooks](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) en la documentación de Argo CD.

## Omisión de diferencias
<a name="_ignore_differences"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) en la documentación de Argo CD.

## Implementación en varios entornos
<a name="_multi_environment_deployment"></a>

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
<a name="_monitor_and_manage_applications"></a>

 **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](working-with-argocd.md) 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](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/) en la documentación de Argo CD.

## Recursos adicionales
<a name="_additional_resources"></a>
+  [Uso de proyectos de Argo CD](argocd-projects.md): organización de aplicaciones con proyectos para entornos multitenencia
+  [Uso de ApplicationSets](argocd-applicationsets.md): implementación en varios clústeres con plantillas
+  [Application Specification](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/): referencia completa de la API de la aplicación
+  [Sync Options](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/): configuración de sincronización avanzada