# Despliegue en AWS

## Requisitos previos

1. En una estación de trabajo con acceso a su nube de AWS, instale las siguientes herramientas si aún no las tiene disponibles:
   * AWS CLI: <https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html>
   * Helm: <https://helm.sh/docs/intro/install/>
   * Kubectl: <https://kubernetes.io/docs/tasks/tools/>
2. Cree un nuevo clúster EKS:
   1. Seleccione Configuración personalizada y desactive el Modo automático de EKS:

      <figure><img src="/files/36ac37f90caa70ef4edd3394697e0379b0454f4f" alt=""><figcaption></figcaption></figure>

      <figure><img src="/files/1de90fc912e70a65ba59f62a1f447095869c1213" alt=""><figcaption></figcaption></figure>
   2. Cree una nueva función IAM de clúster con la configuración predeterminada y selecciónela.
   3. En la siguiente pantalla, asegúrese de seleccionar la VPC y las subredes donde desea instalar la aplicación
   4. En la pantalla de complementos (Paso 4), agregue el complemento EBS CSI Driver:\
      \
      ![](/files/9642db595cb907533f30e9a08eaecd47ecd72d6b)
   5. Cree el clúster y espere a que termine de inicializarse. Una vez que esté listo, vaya a la pestaña Compute y haga clic en Agregar un grupo de nodos.
   6. Cree una nueva función IAM para el grupo de nodos. Además de las políticas predeterminadas, adjunte la `AmazonEBSCSIDriverPolicy` \
      \ <img src="/files/162efe783d49e9dab5a2360bfa534bd3d0333e13" alt="" data-size="original">
   7. Elija Amazon Linux 2 como el tipo de AMI<br>

      <figure><img src="/files/3b27ec374669d33f0494153234c95156d112dd75" alt=""><figcaption></figcaption></figure>
   8. Seleccione un tipo de instancia con al menos 16 GB de RAM. m6i.xlarge o más grande es una buena opción.
   9. Establezca el tamaño del disco en 100 GiB
   10. Establezca el tamaño deseado y el tamaño máximo en al menos 3 nodos
3. Conecte el kubectl de su estación de trabajo al nuevo clúster EKS. Sustituya `<eks-cluster-name>` por su nuevo clúster EKS en lo siguiente:

```bash
aws eks update-kubeconfig --name <eks-cluster-name>
```

## Instalación del Helm Chart de Violet

1. Agregue un nuevo perfil que contenga las Credenciales AWS de Violet a su estación de trabajo. Estos valores son proporcionados por Violet Labs y son específicos de su instalación:

```bash
aws configure --profile violet-external

AWS Access Key ID [None]: <your-violet-access-key>
AWS Secret Access Key [None]: <your-violet-access-key-secret>
Default region name [None]: us-west-1
```

2. Cree un nuevo archivo, `violet-values.yml` que contenga sus credenciales de AWS y la configuración específica de la aplicación:

```yaml
domain: # El dominio donde se servirá Violet. El subdominio debe ser "violet": violet.mydomain.com
customerName: # El nombre del cliente de su licencia. Proporcionado por Violet
licenseKey: # Su clave de licencia. Proporcionada por Violet
adminEmail: # correo electrónico del usuario administrador para el cliente
adminName: # nombre completo del usuario administrador ("Nombre Apellido") para el cliente

aws:
  accessKeyId: # Su clave de acceso AWS de Violet, proporcionada por Violet
  accessKeySecret: # Su secreto de acceso AWS de Violet, proporcionado por Violet

neo4j:
  volúmenes:
    datos:
      dinámico:
        storageClassName: gp2
global:
  storageClass: gp2
  
# opcional: Esto es obligatorio si desea usar una base de datos externa en lugar de una postgres interna creada automáticamente por el chart de helm
postgresql:
  enabled: false # Esto desactiva la base de datos postgresql interna
  auth:
    host: # nombre de host para la base de datos externa (p. ej. '[db_name].postgres.database.azure.com')
    password: # contraseña para el usuario de la base de datos de la aplicación, usada por la app
    username: # nombre de usuario para el usuario de la base de datos de la aplicación, usado por la app
    adminPassword: # nombre de usuario para la BD, con permisos de migraciones y seed
    adminUsername: # contraseña para la BD, con permisos de migraciones y seed
```

3. Cree un nuevo namespace de Kubernetes para la instalación de Violet:

```bash
kubectl create namespace violet
```

4. Instale el chart del controlador ingress nginx que permite a EKS configurar un balanceador de carga para enrutar el tráfico desde Internet a la nueva implementación de Violet:

```bash
helm install --namespace kube-system nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx
```

5. Instale el agente de registros mezmo. Esto transmite los registros de su clúster al equipo de Violet para asistencia en solución de problemas y monitoreo.

```
kubectl apply -f https://assets.logdna.com/clients/logdna-agent/3/agent-namespace.yaml

# Obtenga <mezmo-ingestion-key> de su entrada en 1Pass
kubectl create secret generic logdna-agent-key -n logdna-agent --from-literal=logdna-agent-key=<mezmo-ingestion-key> 

kubectl apply -f https://assets.logdna.com/clients/logdna-agent/3/agent-resources.yaml
```

6. Instale el chart external-secrets. Esto se utiliza para cargar algunos secretos específicos del cliente desde AWS en la implementación de Violet:

```bash
helm repo add external-secrets https://charts.external-secrets.io
helm repo update
helm upgrade --namespace external-secrets --create-namespace --install --version 0.16.2 --wait external-secrets external-secrets/external-secrets
```

7. Cree un secreto que permita a Kubernetes acceder al repositorio de Charts de Helm de Violet:

```bash
kubectl create secret docker-registry --namespace violet ecr-creds --docker-server=911167899009.dkr.ecr.us-west-1.amazonaws.com --docker-username=AWS --docker-password=$(aws ecr --profile violet-external get-login-password)
```

8. Inicie sesión en el repositorio de Helm:

```bash
aws ecr --profile violet-external get-login-password | helm registry login --username AWS --password-stdin 911167899009.dkr.ecr.us-west-1.amazonaws.com
```

9. Instale el chart de Helm de Violet:

```bash
helm upgrade --namespace violet --create-namespace --install myviolet oci://911167899009.dkr.ecr.us-west-1.amazonaws.com/violet-helm --version 1.0.0-main -f violet-values.yml
```

Tenga en cuenta que puede tardar hasta 5 minutos en ejecutar los scripts de aprovisionamiento de la base de datos. Puede comprobar el estado de la implementación viendo los pods:

```bash
kubectl get pods -n violet
```

Después de que la instalación se complete, el chart de helm imprimirá información y comandos, incluyendo la URL para acceder a su nueva implementación, cómo obtener el nombre DNS del balanceador de carga de ingress en el que se sirve la implementación (para configurar reglas DNS) y cómo obtener la contraseña autogenerada para el `violet_admin@violetlabs.com` cuenta.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.violetlabs.com/es/recursos/administrativo/despliegue-local/despliegue-en-aws.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
