# Despliegue en Azure

## Requisitos previos

1. En una estación de trabajo con acceso a su nube de Azure, instale las siguientes herramientas si aún no las tiene disponibles:
   * Azure CLI: <https://learn.microsoft.com/en-us/cli/azure/install-azure-cli>
   * 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 AKS, o elija un clúster existente para instalar Violet. El clúster debe tener al menos 2 nodos con al menos 8 GB de RAM. **Standard DS2\_V3** o más grande es una buena elección. No son necesarias otras configuraciones más allá de los valores predeterminados. El nodo recomendado tiene las siguientes propiedades mínimas:
   1. arquitectura: **amd64**
   2. osImage: **Ubuntu 22.04.5 LTS o superior**
3. Conecte su kubectl de la estación de trabajo al nuevo clúster AKS. Sustituya `<resource-group-name>` y `<aks-cluster-name>` por su nuevo clúster AKS en lo siguiente:

```bash
az login --scope https://management.core.windows.net//.default
az aks get-credentials --resource-group <resource-group-name> --name <aks-cluster-name>
```

## Instalación del Helm Chart de Violet

1. Agregue las credenciales de AWS de Violet al entorno de su terminal actual. Estos valores son proporcionados por Violet Labs y son específicos para su instalación:

```bash
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-access-key-secret>
export AWS_DEFAULT_REGION=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 y es un uuid
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 de AWS, proporcionada por Violet
  accessKeySecret: # Su secreto de AWS, proporcionado por Violet

neo4j:
  volúmenes:
    datos:
      dinámico:
        storageClassName: 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 AKS 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 --set controller.service.annotations."service.beta.kubernetes.io/azure-load-balancer-health-probe-request-path"=/healthz --set controller.service.externalTrafficPolicy=Local
```

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 --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 get-login-password)
```

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

```bash
aws ecr 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:

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

Después de completar la instalación, el chart de helm mostrará alguna información y comandos que incluyen la URL para acceder a su nueva implementación, cómo obtener la dirección IP en la 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-azure.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.
