Overview
This guide provides step-by-step instructions for installing the NGINX Ingress Controller in a Kubernetes environment to expose the Virtru Private Keystore.
Your organization may implement load balancing differently depending on internal standards, cloud provider, and security requirements. Please follow your organization’s policies when configuring ingress and load balancing.
For the purposes of this guide, NGINX Ingress Controller is used as the load balancing solution.
Prerequisites
Before proceeding, ensure the following:
- A running Kubernetes cluster (GKE, EKS, AKS, or on-prem)
kubectlaccess to the clusterhelminstalled and configured- Appropriate permissions to create namespaces and services
- DNS access to create or modify A records
Step 1: Add the NGINX Helm Repository
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update
Step 2: Install the NGINX Ingress Controller
Public Load Balancer (Standard Deployment)
helm install ingress-nginx ingress-nginx/ingress-nginx \ --namespace ingress-nginx \ --create-namespace
Note: This configuration provisions a public load balancer. Ensure your organization allows public ingress.
Step 3: Verify Installation
kubectl get pods -n ingress-nginx
Expected output:
ingress-nginx-controller-xxxxx Running
Step 4: Retrieve the Load Balancer IP
kubectl get svc -n ingress-nginx
Watch it live:
kubectl get svc -n ingress-nginx -w
Locate the EXTERNAL-IP for the ingress controller:
ingress-nginx-controller LoadBalancer <EXTERNAL-IP>
Example:
34.36.142.215
Step 5: Configure DNS
Create or update an A record for your CKS hostname:
csesrv.yourdomain.com → <EXTERNAL-IP>
This DNS record enables Virtru services to communicate with your Private Keystore.
Post-Installation Validation
After DNS propagation:
Validate DNS resolution
dig csesrv.yourdomain.com +short
Validate TLS endpoint
openssl s_client -connect csesrv.yourdomain.com:443 -servername csesrv.yourdomain.com
Confirm:
- The certificate matches your domain
- No TLS errors are present
Upgrading the Ingress Controller
To upgrade the deployment:
helm upgrade ingress-nginx ingress-nginx/ingress-nginx \ -n ingress-nginx
Uninstalling the Ingress Controller
To remove the deployment:
helm uninstall ingress-nginx -n ingress-nginx kubectl delete namespace ingress-nginx
Check if the namespace still exist:
kubectl get namespace ingress-nginx
Inspect the status:
kubectl get namespace ingress-nginx
If the service still exists, try deleting it explicitly:
kubectl delete svc --all -n ingress-nginx