Azure Deployment

Prerequisites

  1. On a workstation with access to your Azure cloud, install the following tools if you don’t already have them available:

  2. Create a new AKS cluster, or choose an existing cluster to install Violet into. The cluster must have at least 2 nodes with at least 8GB of RAM. Standard DS2_V3 or bigger is a good choice. No other settings beyond the defaults are necessary.

  3. Connect your workstation kubectl to the new AKS cluster. Substitute <resource-group-name> and <aks-cluster-name> with your new AKS cluster in the following:

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

Violet Helm Chart Installation

  1. Add the Violet AWS Credentials to your current terminal environment. These values are provided by Violet Labs and are specific to your installation:

export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-access-key-secret>
export AWS_DEFAULT_REGION=us-west-1 
  1. Create a new file violet-values.yml containing your AWS credentials and specific application configuration:

domain: # The domain where Violet will be served. Subdomain must be "violet": violet.mydomain.com
customerName: # The customer name of your license. Provided by Violet
licenseKey: # Your license key. Provided by Violet & is a uuid
adminEmail: #admin user email for the customer
adminName: #admin user full name ("Firstname Lastname") for the customer

aws:
  accessKeyId: # Your AWS Access key, provided by Violet
  accessKeySecret: # Your AWS secret, provided by Violet

# optional: This is required if you wish to use an external database instead of an internal postgres db automatically spun up by the helm chart
postgresql:
  enabled: false # This disables the internal postgresql db
  auth:
    host: # hostname for external db (e.g. '[db_name].postgres.database.azure.com')
    password: # password for application db user, used by app
    username: # username for application db user, used by app
    adminPassword: # username for db, with migrations & seed permissions
    adminUsername: # password for db, with migrations & seed permissions
  1. Create a new kubernetes namespace for the Violet installation:

kubectl create namespace violet
  1. Install the nginx ingress controller chart which allows AKS to set up a load balancer to route traffic from the internet to the new Violet deployment:

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
  1. Install the external-secrets chart. This is used to load some customer-specific secrets from AWS into the Violet deployment:

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
  1. Create a secret that allows Kubernetes to access the Violet Helm Chart repository:

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)
  1. Login to the Helm repository:

aws ecr get-login-password | helm registry login --username AWS --password-stdin 911167899009.dkr.ecr.us-west-1.amazonaws.com
  1. Install the Violet Helm Chart:

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

Note that it may take up to 5 minutes to run the database provisioning scripts. You can check the status of the deployment by looking at the pods:

kubectl get pods -n violet

After installation is complete the helm chart will print our some information and commands including the URL to access your new deployment, how to get the IP Address that the deployment is served at (for setting up DNS rules) and how to obtain the auto-generated password for the violet_admin@violetlabs.com account.

Last updated