Install air-gapped
Install a KubeMQ cluster on Kubernetes with no internet access: request and apply an offline license file, then install from the KubeMQ support bundle.
This page licenses a KubeMQ cluster on Kubernetes that has no internet access. You request an offline license file, store it in the cluster, and install from a bundle that KubeMQ support provides. Time: about 60 minutes.
The work happens in two sittings: steps 1–2, then a wait for KubeMQ to send your offline license file, then step 3. Need an offline Docker server? Contact support.
These commands are for bash on macOS and Linux. On Windows, run them in WSL (Windows Subsystem for Linux), or use the kmq tab of Try KubeMQ, which runs natively on Windows.
Before you start
Do this on the administration machine inside your network.
Create a private folder, readable only by you, and work inside it:
mkdir -p -m 700 kubemq-privatecd kubemq-privatekubectlwith a context for the target cluster.- An offline license file, requested in step 2 (Plans compared).
- The software bundle. Contact support for the offline artifact bundle.
Steps
Create the namespace
kubectl --context YOUR_KUBE_CONTEXT create namespace kubemq --dry-run=client -o yaml | kubectl --context YOUR_KUBE_CONTEXT apply -f -Replace: YOUR_KUBE_CONTEXT — the target cluster's kubectl context.
You should see:
HARNESS_OUTPUT_PENDINGRequest your offline license file
kubectl --context YOUR_KUBE_CONTEXT get namespace kube-system -o jsonpath='{.metadata.uid}'You should see:
HARNESS_OUTPUT_PENDINGThis one line is your cluster ID. Send it and your server count through Plans compared. Put the kubemq.license you receive in kubemq-private.
Apply the offline license file
kubectl --context YOUR_KUBE_CONTEXT -n kubemq create secret generic messaging-license --from-file=licenseFile=kubemq.license --dry-run=client -o yaml | kubectl --context YOUR_KUBE_CONTEXT apply -f -You should see:
HARNESS_OUTPUT_PENDINGInstall the operator and the cluster from the support bundle. Its cluster values reference this Secret with licenseFileSecretRef.
Renew before it expires
The file does not renew itself: the servers stop on the license_expires_at date kmq license shows (after a port-forward and sign-in, as in Licensing troubleshooting). Monitor it as How licensing works describes. To renew, repeat step 2, replace kubemq.license, and repeat step 3. Servers restart one at a time, keeping their data.
If something goes wrong
- No servers start. If
kubectl describeon themessagingcluster showsLicenseInvalid, the operator rejected the file (Troubleshooting). - A server logs
#fingerprint-mismatch. The file is for another cluster (Troubleshooting).
Next steps
Was this page helpful?
Install on Kubernetes
Install the KubeMQ operator and a three-server cluster with kmq or Helm, add your license, check it, send a test message and connect your apps.
Production checklist
Everything that must be true before KubeMQ takes production traffic: cluster shape, license, security, network, backups, monitoring and your applications.