User-defined Playground

GitLab CE on Kubernetes Playground

A multi-node kubeadm cluster that installs GitLab CE with the official Helm chart at startup, with in-cluster PostgreSQL, Redis, RustFS object storage, Container Registry, and an Envoy HTTPS Gateway.

GitLab CE on Kubernetes playground: A multi-node kubeadm cluster that installs GitLab CE with the official Helm chart at startup, with in-cluster PostgreSQL, Redis, RustFS object storage, Container Registry, and an Envoy HTTPS Gateway.
Machines & network
4 VMs · 10 vCPU · 14.9GiB RAM
Playground host Internet NAT MASQUERADE local (bridge) 172.16.0.0/24 gw 172.16.0.1/24eth0eth0eth0eth0
VM
vCPU ·
eth0
/
k8s-omni-dev-machine
VM
vCPU ·
eth0
/
k8s-omni-cplane
VM
vCPU ·
eth0
/
k8s-omni-node
VM
vCPU ·
eth0
/
k8s-omni-node
About

A fresh kubeadm cluster (one control plane, two workers, and a dev machine) that installs GitLab CE with the official Helm chart when it starts. Nothing to run by hand: when the playground opens, GitLab is up.

Startup

Startup takes about 10 minutes. The init tasks build the cluster, then deploy GitLab in the same stages as make deploy-lab:

  1. In-cluster PostgreSQL and Redis, with freshly generated credentials, plus the Gateway API CRDs.
  2. RustFS object storage and its buckets.
  3. The full GitLab release: object storage, Container Registry, Prometheus, and the HTTPS Gateway.
  4. A standalone GitLab Runner in the runner namespace, with one job at a time.

Sign in

  1. Click the GitLab tab. It opens GitLab in a new browser tab.
  2. Sign in as root. The generated password is in the dev-machine terminal:
    cat ~/gitlab-root-password
    

The lab files are in /opt/gitlab-k8s on the dev machine, with kubectl and helm set up. Run make -C /opt/gitlab-k8s status to see the release and pods.

How the GitLab tab connects

The chart serves GitLab over HTTPS at gitlab.gitlab.local through Envoy Gateway, with a self-signed certificate. That hostname cannot match the playground's own address, so the tab goes to a small nginx proxy on NodePort 30080 that forwards to GitLab Workhorse and keeps redirects on the tab's address. GitLab still uses https://gitlab.gitlab.local in clone URLs and emails.

To use the Gateway itself, run labctl kube-proxy on your machine, then port-forward the envoy-gitlab-gitlab-gw-* service in the gitlab namespace to local port 8080 (kubectl -n gitlab port-forward svc/<name> 8080:443). Map gitlab.gitlab.local to 127.0.0.1 in /etc/hosts, and visit https://gitlab.gitlab.local:8080.

Limits

Starting this playground needs a paid iximiuz plan. On the free tier, its machines are scaled down to 5 vCPU and 8 GiB in total, which is too small for GitLab.

This is a disposable evaluation lab. PostgreSQL, Redis, RustFS, and Gitaly use emptyDir volumes, so their data is lost when their pods are recreated. The cluster has about 11 GiB of allocatable memory, well below GitLab's sizing guidance. The runner executes one untagged job at a time in its own namespace.

Every playground includes
Learn more about playgrounds
Start
Settings