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 values.yaml with files from a public example repository. Public examples contain blank secrets and can lag behind the kit assembler.

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 kubectl for 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.storageClass in values.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:

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

Cloud load balancer remains pending

Describe the Traefik service:

kubectl describe svc traefik -n gluesync-prod

Check the cloud provider’s quota, subnet, identity and annotation requirements. On AWS, also verify the subnet tags and permissions required to create a load balancer.

Local ports are already in use

Stop an existing forwarding process or choose another local port:

kubectl port-forward -n gluesync-dev svc/traefik 19443:443