Deploying New OneList Instance to AKS

Prerequisites

 

Recommended Configuration

Enviroment

AKS

SQL

Enviroment

AKS

SQL

Production

Cluster nodes:3;

Cluster node size: 2 vCPU, 16GB RAM

Minimum subnet size: /24

Elastic pool: Standard,

eDTU: 100,

Data size: 100GB

Firewall settings: Allow Azure services and resources to access this server = ON

Database collation: SQL_Latin1_General_CP1_CI_AS

Databases: 

  • OneList_p

  • RoleManager_p

  • Comms_p

Non-production

Cluster nodes:3;

Cluster node size: 2 vCPU, 16GB RAM

Minimum subnet size: /24

Elastic pool: Standard,

eDTU: 50,

Data size: 50GB

Firewall settings: Allow Azure services and resources to access this server = ON

Database collation: SQL_Latin1_General_CP1_CI_AS

Databases: the "x" represents the environment tag, e.g. d for Development, q for QA.

  • OneList_x

  • RoleManager_x

  • Comms_x

Log on to Azure Kubernetes Service (AKS)

  1. Log on to Azure by executing this command: az login
    Tip: Specify the tenant if there are multiple tenants. E.g. az login --tenant <tenant>

  2. Setup the Azure log in with kubectl by executing this command: az aks get-credentials --resource-group <Azure_Resource_Group> --name <AKS_Cluster_Name>

Deployment steps

Open a command prompt from the folder that contains the YAML deployment files. Flow steps below to deploy OneList.

1. Create Kubernetes cluster and Application gateway

Follow this documentation to create a new AKS cluster with the AGIC add-on enabled.

https://docs.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-new#deploy-an-aks-cluster-with-the-add-on-enabled

2. Create the Kubernetes namespace

Run the command below to create the Kubernetes namespace for the OneList environment, e.g. onelist-dev.

kubectl create namespace <ONELIST_NAMESPACE>

For example: 

kubectl create namespace onelist-dev

3. Edit values.yaml file

The values.yaml file configures the required environment variables that are used by OneList services.

Open the "values.yaml" in notepad and update the following fields with the actual value. 

Save the "values.yaml" file.

4. Deploy OneList Helm chart

Enter the folder that contains the values.yaml and onelist.tgz files. Run the command below.

helm install <ONELIST_NAMESPACE> -n <ONELIST_NAMESPACE> -f .\values.yaml onelist.tgz

For example:

helm install onelist-dev -n onelist-dev -f .\values.yaml onelist.tgz

5. Configure SSL connection

Follow step 1 to 4 in this document. Migrate to use Azure Key Vault to host SSL certificate

6. Get the OneList public IP address

Run the following command to discover the public IP address for the environment so that DNS can be created and bound to this IP address.

kubectl get ingress -n <ONELIST_NAMESPACE>

7. Create the administrator user account

  • Navigate to the OneList URL in the browser, you will be presented to the following page to create the first user account. The System Administrator access is automatically granted to this user account.

  • Log on using the email and password of the newly created user account to complete the application configuration steps.