Kubernetes
The Kubernetes deployment is generated as part of your Gluesync installation kit.
Always install from the gluesync-kubernetes directory in that kit: its values.yaml contains the licence, security material, and current image versions selected by the kit assembler.
|
The generated kit is the source of truth.
Do not replace its chart or |
What the chart deploys
The current chart deploys:
-
Gluesync Core Hub
-
Chronos
-
Grafana
-
Prometheus
-
Traefik ingress routes, middleware, TLS options, and transport configuration
The supplied deployment scripts also install Traefik and Portainer when they are not already present in the selected namespace.
The chart does not define source or target agent workloads. Add and manage agents through Core Hub after the platform is running.
Prerequisites
Before installing:
-
Request and download the current kit from Get Gluesync.
-
Configure
kubectlfor the cluster where you want to deploy. -
Install Helm.
-
Ensure the cluster can pull the MOLO17 container images included in the chart.
-
Ensure a default Kubernetes storage class exists, or set
persistence.storageClassinvalues.yaml. -
Allow the cluster to reach the source and target systems that your agents will use.
Use kubectl config current-context to verify the active cluster before running a deployment script.
Inspect the generated values
Extract the kit and enter its Kubernetes chart directory:
cd gluesync-kubernetes
The assembler writes current Core Hub, Chronos, Grafana, and Prometheus image versions to values.yaml.
It also embeds the trial licence and security files in the secrets section.
Treat this file as sensitive and do not commit it to source control.
Review these settings before installation:
-
service.type -
persistence.storageClass -
Persistent-volume sizes
-
CPU and memory requests and limits
Persistence is enabled by default. The supplied values request 100 GiB for Core Hub data, 10 GiB for Core Hub logs, 1 GiB for Chronos data, 2 GiB for Chronos logs, 10 GiB for Prometheus, and 5 GiB for Grafana.
Deploy
The scripts use helm upgrade --install, so the same command installs a new release or updates an existing one.
Local cluster
For Docker Desktop, kind, minikube, or another local cluster:
./deploy-local.sh
The default namespace is gluesync-dev and the default release name is gluesync.
The script installs Traefik as a NodePort service, installs Portainer, and deploys the Gluesync chart.
Start local port forwarding in another terminal:
./port-forward.sh
The main endpoints are then available at:
-
Core Hub:
https://localhost:9443/ -
Core Hub UI:
https://localhost:9443/ui -
Chronos:
https://localhost:9443/chronos -
Grafana:
https://localhost:9443/grafana -
Prometheus:
https://localhost:9443/prometheus -
Portainer:
http://localhost:9000
The development certificates are self-signed, so browsers display a certificate warning.
Amazon EKS
./deploy-eks.sh
The default namespace is gluesync-prod.
The script installs Traefik and Portainer with AWS LoadBalancer services and deploys the Gluesync chart.
Set LB_SCHEME=internal for an internal load balancer:
LB_SCHEME=internal ./deploy-eks.sh
Google GKE
./deploy-gcp.sh
Set LB_SCHEME=internal to apply the Google Cloud internal load-balancer annotation.
Azure AKS
./deploy-azure.sh
Set LB_SCHEME=internal to apply the Azure internal load-balancer annotation.
Customize the namespace or release name
All deployment scripts accept NAMESPACE and RELEASE_NAME:
NAMESPACE=my-namespace RELEASE_NAME=my-gluesync ./deploy-local.sh
For cloud deployments, allow inbound TCP ports 80 and 443 from the networks that should reach Traefik.
The deployment script prints the external IP address or DNS name.
Use it with the same paths shown for local deployment, without port 9443; for example, https://<load-balancer>/ui.
Manual Helm deployment
The scripts are the supported quick-start path because they install the required Traefik custom resource definitions. For manual installation, install Traefik first:
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm upgrade --install traefik traefik/traefik \
--namespace gluesync-dev \
--create-namespace \
--set service.type=NodePort \
--set providers.kubernetesCRD.enabled=true \
--set providers.kubernetesIngress.enabled=true
Then install the generated chart from its directory:
helm upgrade --install gluesync . \
--namespace gluesync-dev \
--set service.type=NodePort
Adapt the namespace, Traefik service type, and cloud-provider annotations for a production cluster.
Upgrade
Download or generate a current kit, carry forward only your intentional configuration overrides, and upgrade from its gluesync-kubernetes directory:
helm upgrade gluesync . --namespace gluesync-prod
Do not copy a new blank example values.yaml over the generated file.
For the other update paths, see Keep Gluesync current.
Verify the deployment
kubectl get pods,svc,pvc -n gluesync-dev
kubectl get ingressroute,middleware,serverstransport -n gluesync-dev
For a custom namespace, replace gluesync-dev.
All Pods should become Running, and all enabled persistent-volume claims should become Bound.
View logs with the release name used during installation:
kubectl logs -n gluesync-dev statefulset/gluesync-gluesync-core-hub -f
kubectl logs -n gluesync-dev statefulset/gluesync-gluesync-chronos -f
kubectl logs -n gluesync-dev deployment/gluesync-gluesync-grafana -f
kubectl logs -n gluesync-dev deployment/gluesync-gluesync-prometheus -f
Troubleshooting
Persistent-volume claims remain pending
List the available storage classes and inspect the claim:
kubectl get storageclass
kubectl describe pvc -n gluesync-dev
Set persistence.storageClass to a valid class and run helm upgrade again.
Traefik returns 404
Confirm that the Traefik custom resources exist and inspect its logs:
kubectl get ingressroute,middleware,serverstransport -n gluesync-dev
kubectl logs -n gluesync-dev deployment/traefik -f