Layer 7 Ingress in vSphere with Tanzu using NSX ALB

Introduction

vSphere with Tanzu currently doesn’t provide the AKO orchestration feature out-of-the-box. What I mean by this statement is that you can’t automate the deployment of AKO pods based on the cluster labels. There is no AkoDeploymentConfig that gets created when you enable workload management on a vSphere cluster and because of this, you don’t have anything running in your supervisor cluster to keep an eye on the cluster labels and take the decision of automated AKO installation in the workload clusters. 

However, this does not preclude you from using NSX ALB to provide layer-7 ingress for your workload clusters. AKO installation in a vSphere with Tanzu environment is done via helm charts and is a completely self-managed solution. You will be in charge of maintaining the AKO life cycle.

My Lab Setup

My lab’s bill of materials is shown below.

Component Version
NSX ALB (Enterprise) 20.1.7 
AKO 1.6.2
vSphere 7.0 U3c
Helm 3.7.4

The current setup of the NSX ALB is shown in the table below.

Component Details
NSX ALB Controller alb.tanzu.lab
ALB VIP Network TKG-Cluster-VIP – 172.19.83.0/24
TKGs Workload Network TKGS-Workload – 172.19.82.0/24
Service Engine Group Default-Group (N+M buffer)
Avi IPAM Profile tkgvsphere-tkgmgmt-ipam01

Only one VIP network is currently configured in NSX ALB, and it offers L4 load balancing to the Supervisor and Tanzu Kubernetes clusters’ Control Planes.

I created/configured a few new items in my lab to achieve L7 ingress for workload clusters utilizing a dedicated network:

Object Details
VIP Network Workload-VIP – 172.19.84.0/24
Service Engine Group Workload-SEG

Network ‘TKG-Workload-VIP‘ is added to the existing IPAM profile.

Insallation Procedure

1: Connect to the Tanzu Kubernetes cluster (Workload cluster)

Connect to the workload cluster where you wish to install AKO and deploy an ‘ingress’ application.

2: Switch the context to the workload cluster

2: Create ‘avi-system’ namespace. Ako is deployed in this namespace.

4: Configure helm to use VMware’s public harbor repository.

5: Search helm charts for available Ako versions

6: Generate the values.yaml file for Ako deployment

Edit the values.yaml file and enter NSX ALB and your network details. The below fields are the ones (minimum) which you need to modify

7: Install Ako in the workload cluster

Verify Ako has been installed and is up and running

8: Verify Ako Pod status

At this point in time, an ingressclass is created in the workload cluster.

9: Deploy sample application of type Ingress

In my lab, I have deployed a sample hackazon application using the below yaml. Please refer to my previous post for instructions to deploy the application.

An ingress pool will be generated in NSX ALB once the application is deployed.

You should now be able to access the ingress (assumed you have created a DNS record for the ingress IP)

I hope you enjoyed reading this post. Feel free to share this on social media if it is worth sharing.

Leave a Reply