Skip to main content

Azure Core Infrastructure

The core infrastructure is the foundation for all other Ensono Stacks Workloads. As, in most cases, this will be the first part of Ensono Stacks that you deploy we will also cover bootstrapping your Azure tenant.

Resources Provisioned

Both the diagram and resource list below are for a single environment. By default, the pipeline template will create two environments (nonprod and prod).

Diagram

Azure Core Infrastructure

Resource List

ResourceDescription
Resource GroupUsed to logically group infrastructure
Virtual NetworkFundamental building block for the private network
Subnet - AGWDedicated subnet required for Application Gateway
Application GatewayWeb traffic load balancer
Public IPIP address associated with the Application Gateway
Subnet - k8sSubnet used by the AKS cluster
AKSAzure Kubernetes Service
Resource Group: Node PoolAKS created resource group for nodes, load balancers, etc.
Internal Load BalancerLoad balancer used with NGINX ingress
VM Scale Set: NodesVirtual Machine scaling for AKS
NGINX IngressNginx ingress Kubernetes namespace, deployment and service
Internal DNS ZoneCustom DNS domain
Public DNS ZoneHosted service for DNS domain
Application InsightsApplication performance management, monitoring and analytics service
Log Analytics WorkspaceLog analytics with container insights
Managed IdentityManaged Identity with aadpodidentity binding
ACRAzure Container Registry
Key VaultCryptographic keys and secrets management service

Deploying

Bootstrap the Azure tenant

The first step is to create the Azure tenant and subscription. This process only needs to be run once on an administrators workstation.

The administrator will need the following permissions:

  • Azure AD "Global Administrator" role for the Azure AD Tenant
  • IAM subscription owner

With owner privileges:

  1. Create an Azure Service Principal for use with Terraform.
    • Make note of the TenantID, SubscriptionID, ClientID and ClientSecret
  2. Create a Blob Storage instance and container for storing Terraform state.
    • Take note of the storage account and container name.

Pipelines

The following pipelines are currently supported for automating the deployment: