Offline Installation (Kubernetes)
Install Connectware on a Kubernetes cluster without Internet access using Cybus Helm charts.
Prerequisites
2
Setting Up the Local Registry
docker run -d --restart=always -p 5001:5000 --name kind-registry registry:2kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"kind create cluster --config kind-config.yaml# Connect the registry to the cluster network
docker network connect kind kind-registry
# Configure each node to route localhost:5001 to the registry
REGISTRY_DIR="/etc/containerd/certs.d/localhost:5001"
for node in $(kind get nodes); do
docker exec "${node}" mkdir -p "${REGISTRY_DIR}"
cat <<EOF | docker exec -i "${node}" cp /dev/stdin "${REGISTRY_DIR}/hosts.toml"
[host."http://kind-registry:5000"]
EOF
done3
Preparing the Artifacts
Downloading the Helm Chart
# Download the chart
helm pull oci://repo.cybus.io/charts/connectware --version ${CHART_VERSION}
# Push to your local registry
# --plain-http is required because the local registry has no TLS certificate configured
helm push connectware-${CHART_VERSION}.tgz oci://localhost:5001/helm --plain-httpDownloading Container Images
# Generate the image list from the chart
helm template connectware ./connectware-${CHART_VERSION}.tgz | awk '/image:/ {print $2}' | sed 's/"//g' | sort | uniq > images.txt
# Copy images to the local registry
while read image; do
image_name=$(basename $image)
skopeo copy --src-creds "license:${LICENSE_KEY}" \
docker://$image docker://localhost:5001/$image_name \
--dest-tls-verify=false
done < images.txt4
Configuring the Image Registry
kubectl create secret docker-registry my-local-registry-secret \
--docker-server=my.internal.registry.com \
--docker-username=${REGISTRY_USERNAME} \
--docker-password=${REGISTRY_PASSWORD} \
--namespace=${NAMESPACE}global:
image:
registry: 'localhost:5001'
# Only required if your registry uses authentication
# pullSecrets:
# - name: my-local-registry-secret5
Providing the Offline License Details
Using Direct Helm Values
global:
licenseKey: ${LICENSE_KEY}
licenseFile: ${LICENSE_FILE}Using Existing Kubernetes Secrets
# Store the license key
kubectl create secret generic connectware-offline-license-key \
--from-literal=licenseKey=${LICENSE_KEY} \
--namespace=${NAMESPACE}
# Store the offline license file saved as connectware-license.txt
# The explicit licenseFile= ensures the secret key is correctly named
kubectl create secret generic connectware-offline-license-file \
--from-file=licenseFile=connectware-license.txt \
--namespace=${NAMESPACE}global:
existingLicenseKeySecret: connectware-offline-license-key
existingLicenseFileSecret: connectware-offline-license-file6
Installing Connectware
global:
# Using the offline license via Secret references
existingLicenseKeySecret: connectware-offline-license-key
existingLicenseFileSecret: connectware-offline-license-file
image:
# Internal registry configured on the cluster nodes
registry: 'localhost:5001'
# pullSecrets are not needed if the registry does not require authentication
# pullSecrets:
# - name: my-local-registry-secrethelm upgrade --install connectware oci://localhost:5001/helm/connectware \
--version ${CHART_VERSION} \
--namespace ${NAMESPACE} \
--create-namespace \
-f values.yamlVerifying the Installation
Accessing Connectware
License Validation in Offline Environments
Last updated
Was this helpful?

