Deploy NCache with Azure Kubernetes Service
Azure Kubernetes Service (AKS) provides a managed Kubernetes environment in which NCache server containers run on Linux worker nodes. You can deploy NCache using the Helm chart or YAML files to create the servers and gateway services for cache connections and NCache Management Center.
This page explains how to connect to an existing AKS cluster, install NCache, and verify the deployment. The examples use the default two-server configuration and explain how to configure management access.
Prerequisites
Before you begin, make sure that:
- You have access to an existing AKS cluster, or permission to create one as described below.
- Azure CLI is installed and configured.
kubectlis installed.- If deploying with Helm, Helm 3.14 or later is installed and configured.
- You have permission to deploy namespace resources and cluster-wide RBAC resources.
- The NCache container image is accessible, and you have the Enterprise YAML files or access to the selected OCI chart version.
- You have the required deployment key and, for license activation, the appropriate license key and environment name.
- The cluster can provide networking for the NCache gateway services.
- The cluster must run Kubernetes version
1.25.0or later and provide at least two schedulable Linux worker nodes for the default two-server deployment. For Helm, the default setting,deployment.podAntiAffinity=true, places each server on a separate node. If shared-node placement is acceptable, this value can be set tofalseduring installation.
Create an AKS Cluster
If you do not already have an AKS cluster, create one through the Azure portal. For the complete procedure, see Create an AKS Cluster Using the Azure Portal.
- In the Azure portal, create an Azure Kubernetes Service (AKS) resource.
- Select your subscription and resource group, then specify the cluster name, region, and Kubernetes version.
- Configure a Linux node pool with sufficient resources for NCache. Provide at least two schedulable worker nodes so that the default two-server deployment can place each NCache server on a separate node.
- Configure networking and cluster access for your environment, then select Review + create and Create.
- After deployment completes, note the resource group and cluster name. Use these values in the following connection procedure.
Deployment Process
Choose the deployment method below after connecting to your cluster. The Helm examples use the ncache namespace; the Enterprise YAML examples use default. Use one method for a deployment so that the same resources are not managed by both Helm and YAML files.
Connect kubectl to AKS
- Sign in to your Azure account:
az login
- Get the credentials for your AKS cluster:
az aks get-credentials --resource-group "<resource-group>" --name "<aks-cluster-name>"
This command updates your local Kubernetes configuration so that kubectl can communicate with the selected AKS cluster.
- Verify that
kubectlis connected to the AKS cluster:
kubectl config current-context
kubectl get nodes
If the connection is successful, the command displays the AKS worker nodes.
Deploy Using Helm
After confirming cluster access, prepare the chart and install NCache using the following steps.
Step 1: Prepare the NCache Helm Chart
Open Azure Cloud Shell or a local PowerShell terminal connected to your cluster. The NCache chart is available directly from the OCI registry.
Inspect the defaults for the NCache chart you intend to install:
helm show values oci://registry-1.docker.io/alachisoft/ncache-helm --version 5.3.8
Step 2: Install Helm Chart
Run the following command to deploy two NCache servers with defaultCache enabled. Replace xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx with your deployment key:
helm install ncache oci://registry-1.docker.io/alachisoft/ncache-helm --version 5.3.8 --namespace ncache --create-namespace `
--set-string deployment.key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" `
--set-string deployment.platform="AKS"
Tip
For guidance on deploying in different scenarios, refer to Manage an Existing Deployment.
Verify the Server Pods
Check the pods and their worker-node placement after installation:
kubectl rollout status statefulset/ncache --namespace ncache
kubectl get pods,jobs --namespace ncache
kubectl get pods --namespace ncache -o wide
After Helm installs the release, NCache completes cache configuration and licensing through a configuration job. Follow Verify an Update to check the job result, then verify the caches in NCache Management Center before using the deployment.
Verify that all configured NCache server pods are ready; the default deployment contains two. If a pod fails to start, inspect its events and logs using its actual name, and check the deployment key, licensing values, and image access:
kubectl describe pod "<pod-name>" --namespace ncache
kubectl logs "<pod-name>" --namespace ncache
Step 3: Verify NCache Services
- Check the gateway services created by the installed chart:
kubectl get svc --namespace ncache
Check the client endpoint and the configured Service ports. Configure public management access in Step 4:
- Client connections:
gateway.clientPortdefaults to9800. - Management:
gateway.mgmtPortsdefaults to9801-9802, with session affinity. - Additional gateway ports:
gateway.portsdefaults to9803-9997. - Portal:
gateway.portalPortsdefaults to9998-9999, with session affinity.
Step 4: Access NCache Management Center
To access NCache Management Center, configure a public management endpoint through gateway.mgmtCenterEndpoint. This value can be supplied during helm install or added afterward using helm upgrade.
If you have already installed NCache, use the following command. Replace <management-public-ip> with an Azure public IPv4 address available to the cluster's load balancer:
helm upgrade ncache oci://registry-1.docker.io/alachisoft/ncache-helm --version 5.3.8 --namespace ncache --reuse-values --set-string gateway.mgmtCenterEndpoint="<management-public-ip>"
Check the management gateway Service and confirm that its external endpoint has been assigned:
kubectl get svc --namespace ncache
Use the configured endpoint to open NCache Management Center at http://<management-public-ip>:9801 or, when HTTPS is configured, https://<management-public-ip>:9802.
After verifying the deployed caches in NCache Management Center, follow Getting Started to begin using NCache. Applications outside Kubernetes can connect through the client gateway using ConnectionOptions, as described in Configure the External Client. Verify the client connection by adding an item to the cache and retrieving it. For subsequent licensing changes, cache configuration updates, and image upgrades, see Manage Deployment.
Deploy Using YAML Files
After confirming cluster access, prepare and apply the server and gateway manifests using the following steps.
Step 1: Prepare the Deployment Files
Obtain the Enterprise Kubernetes YAML files from the NCache GitHub repository, and work from the folder containing ncache.yaml and the platform gateway folders. Use the shared ncache.yaml for the servers and the two gateway files identified below.
- Use the
defaultnamespace for these manifests. - In the NCache container's environment variables, set
NC_KEYto your deployment key:
- name: NC_KEY
value: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
- Ensure that the StatefulSet's
spec.serviceNameisncache-cacheserver, matching the headless Service in the same file. Add the following field under the StatefulSet's existingspec; retain the other settings:
spec:
serviceName: ncache-cacheserver
- Verify that the container image is accessible. If it requires registry credentials, create the
ncache-secretimage pull Secret in thedefaultnamespace; otherwise, remove theimagePullSecretsentry. - Keep
replicas: 2for the default two-server deployment andNC_START_DEFAULT_CACHEset to"true". The supplied YAML prefers separate worker nodes but allows both pods to run on the same node. Configure required pod anti-affinity if each server must run on a separate node. - If TLS is required, prepare the Secret and environment variables before applying the files, as described in Deploy Using YAML Files.
Retain the Service selectors and pod labels so that the gateways continue to route traffic to the NCache servers.
Use AKS/client-gatewayservice.yaml and AKS/mgmt-gatewayservice.yaml. Both files request external Azure load balancers. Ensure that the cluster identity has the permissions required to allocate and use their public addresses.
To request an existing public management address, set spec.loadBalancerIP in AKS/mgmt-gatewayservice.yaml to an address available to the cluster's load balancer. Otherwise, Azure allocates an address. Follow Use a Static Public IP Address with AKS for address and permission requirements.
Step 2: Deploy NCache
Apply the server manifest and both gateway manifests from the package root:
kubectl apply --namespace default -f ncache.yaml
kubectl apply --namespace default -f AKS/client-gatewayservice.yaml
kubectl apply --namespace default -f AKS/mgmt-gatewayservice.yaml
Verify the Server Pods
Check that both server pods have started and inspect their worker-node placement:
kubectl rollout status statefulset/ncache --namespace default
kubectl get pods --namespace default -l app=ncache -o wide
The default deployment creates ncache-0 and ncache-1. If a pod fails to start, inspect its events and logs, and check the deployment key, image access, and any certificate settings:
kubectl describe pod "<pod-name>" --namespace default
kubectl logs "<pod-name>" --namespace default
Pod status does not confirm that the caches are ready. Verify cache status in NCache Management Center after opening the management endpoint in Step 4.
Step 3: Verify NCache Services
Check that the headless Service and both gateway Services exist:
kubectl get svc ncache-cacheserver ncache-client-gateway ncache-mgmt-gateway --namespace default
Wait until the gateway endpoints have been assigned, and confirm that they are reachable from the application and administrator networks. The client gateway exposes port 9800. The management gateway exposes ports 9801 and 9802 for Management Center and ports 9998 and 9999 for the portal.
The client gateway also exposes ports 9803-9997. Confirm that the load balancer and firewall configuration permit the ports required by your deployment.
Step 4: Access NCache Management Center
Use the management gateway's assigned external IP address or DNS hostname:
kubectl get svc ncache-mgmt-gateway --namespace default
Open http://<management-gateway-endpoint>:9801 or, when Management Center HTTPS is configured, https://<management-gateway-endpoint>:9802. The endpoint is the value reported in the Service's EXTERNAL-IP column.
In NCache Management Center, verify that the intended cache is running on both server nodes before using it. Follow Configure the External Client to connect an application through the client gateway using ConnectionOptions, then add an item to the cache and retrieve it to verify the connection. For licensing, cache changes, and subsequent updates, follow the YAML tabs in Manage Deployment.