Deploy NCache with OpenShift
NCache can be deployed on an existing OpenShift cluster using the Helm chart or YAML files. Both methods create NCache server containers on Linux worker nodes and gateway services for client connections and management access.
This page describes the permissions and networking required for the deployment, followed by the steps to install and verify NCache. The examples use the default two-server configuration.
Prerequisites
Before you begin, make sure that:
- You have access to an existing OpenShift cluster, or permission to create one as described below.
- Your Kubernetes client is configured for the intended cluster. If deploying with Helm, Helm 3.14 or later is installed and configured.
- You have permission to install namespace resources and cluster-wide RBAC resources, and to grant the chart’s service account the
anyuidsecurity context constraint. - The NCache container image and deployment settings are permitted by the cluster's security policies.
- You have the Enterprise YAML files or access to the selected NCache chart version.
- You have the required deployment key and any applicable licensing information.
- The cluster provides gateway connectivity and the resources needed by the deployment.
- 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 OpenShift Cluster
If you do not already have an OpenShift cluster, install OpenShift Container Platform using the installation method appropriate for your infrastructure. For physical servers or virtual machines, the Red Hat Assisted Installer provides a guided installation process.
- Create a cluster in the Assisted Installer and specify its name, base domain, and OpenShift version.
- Generate the discovery image and use it to boot the machines that will join the cluster.
- Assign the control-plane and worker roles according to the selected cluster topology. Provide at least two schedulable Linux worker nodes for the default two-server NCache deployment, in addition to the required control-plane capacity.
- Complete the network configuration, resolve any host validation issues, and start the installation.
- After installation completes, download the cluster's Kubernetes configuration file for use in the following connection procedure. Ensure that the cluster provides a load balancer for the NCache gateway services before deploying NCache.
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 OpenShift
- Use the cluster access configuration supplied by your OpenShift administrator and verify that it targets the intended cluster:
kubectl config current-context
kubectl get 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
- Inspect the selected NCache chart's defaults:
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="OpenShift"
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 server pods and gateway services:
kubectl get pods --namespace ncache -o wide
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.
Confirm that the client gateway is reachable from the application network before proceeding.
Step 4: Access NCache Management Center
To access NCache Management Center through a public endpoint, configure 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 a public IPv4 address available through your cluster's load balancer infrastructure:
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.
Prepare copies of Kubernetes/client-gatewayservice.yaml and Kubernetes/mgmt-gatewayservice.yaml for the load balancer used by your OpenShift cluster. On bare-metal clusters using MetalLB, retain the shared-IP annotations and configure a suitable address pool. For another load balancer, remove the MetalLB annotations and configure the provider's Service settings.
Retain type: LoadBalancer, the Service names, selectors, ports, and management session affinity. Set spec.loadBalancerIP in the management file only when requesting an address supported by that load balancer; otherwise, remove the empty field and allow address allocation. The examples below use the edited files in the Kubernetes folder.
Have your cluster administrator permit the NCache service account to run the container under an appropriate security context constraint. Where anyuid is required and approved by your administrator, grant it to the service account used by the manifest:
oc adm policy add-scc-to-user anyuid -z ncache-sa -n default
Follow Managing Security Context Constraints for the cluster's security policy.
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 Kubernetes/client-gatewayservice.yaml
kubectl apply --namespace default -f Kubernetes/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.
See Also
Kubernetes Self-Deployment
Deploy TLS With NCache Kubernetes