Sitemap
ITNEXT

ITNEXT is a platform for IT developers & software engineers to share knowledge, connect, collaborate, learn and experience next-gen technologies.

Follow publication

Build Your Own Kubernetes based SaaS Cloud Platform with Kamaji and GitOps

15 min readMay 19, 2025

--

Zoom image will be displayed
Fig. 0: Behind the Scenes: What Actually Happens When You Click “Create”?

What is Civo?

Zoom image will be displayed
Fig. 1: Civo is more than 50% cheaper than the competitors… how is that possible?

Why is Civo More Affordable?

1. Lightweight Kubernetes with K3s

2. Custom Infrastructure: CivoStack

3. Standardization and Automation

4. Community-first and Open Source

Launching a Kubernetes Cluster on Civo

Zoom image will be displayed
Fig. 2: Launch Kubernetes Cluster on Civo — Part 1
Zoom image will be displayed
Fig. 3: Launch Kubernetes Cluster on Civo — Part 2

What Happens Behind the Scenes?

Zoom image will be displayed
Fig. 4: Hypothetical workflow after clicking “Launch Kubernetes Cluster” on Civo

Could It Be Even Cheaper?

Zoom image will be displayed
Fig. 5: Hetzner pricing for VMs
Zoom image will be displayed
Fig. 6: Civo pricing for VMs

Understanding the Different Approaches on the Market

STACKIT, Ænix, and Others

Cluster API: Lifecycle Management for Kubernetes Clusters

Zoom image will be displayed
Fig. 7: Provision Infrastructure and Control Planes with Cluster API
Zoom image will be displayed
Fig. 8: Cluster API — Infrastructure Layer

Cluster API Meets Kamaji

Zoom image will be displayed
Fig. 9: Cluster API with Kamaji Control Planes
Fig. 10: It’s Cool Because It Scales!

Gardener, Kamaji, k0smotron, and Kubermatic Kubernetes Platform (KKP)

Zoom image will be displayed
Fig. 11: Kamaji TenantControlPlane Architecture

What About Dedicated Control Planes?

Kamaji: The Control Plane Mastermind

Zoom image will be displayed
Fig. 12: Kamaji to rule them all — from edge to private datacenters

Real-World Use Case: Control Plane in the Cloud, Workloads on Prem

Zoom image will be displayed
Fig. 13: Control planes in the US — but worker nodes in Austria

Requirement for SaaS: Kamaji on Hetzner

Zoom image will be displayed
Fig. 14: Spin up Kamaji Control Planes on Hetzner — just on demand!
Zoom image will be displayed
Fig. 15: User launches a new cluster — what happens behind the scenes

Why This Matters

Inspired by Anime, Driven by Engineering

Zoom image will be displayed
Fig. 16: Kamaji from Spirited Away
Fig. 17: Kamaji logo — spot the resemblance?

How Kamaji Works

Why Kamaji Is Powerful for SaaS

Zoom image will be displayed
Fig. 18: Kamaji Adopters — OVHCloud, Ænix, NVIDIA, and more

How Does GitOps Fit In? Let’s Bring the Puzzle Together

Zoom image will be displayed
Fig. 19: GitOps in action — Argo CD and Kamaji working together
managed-kubernetes-service-catalog
├── argo-cd
├── cert-manager
├── external-dns
├── external-secrets
├── ingress-nginx
├── kamaji
└── vcluster

apps
└── kamaji-1.yaml
apiVersion: v2
name: kamaji
version: 1.0.0
description: This Chart deploys kamaji-system.
dependencies:
- name: kamaji
version: 1.0.0
repository: https://clastix.github.io/charts
apiVersion: kamaji.clastix.io/v1alpha1
kind: TenantControlPlane
metadata:
name: k8s-130-1
namespace: kamaji-1
labels:
tenant.clastix.io: k8s-130-1
spec:
addons:
konnectivity:
server:
port: 8132
agent:
extraArgs:
- --proxy-server-host=kamaji-1-k8s-130-1.konnectivity.xyxy.stackit.run
- --proxy-server-port=443
controlPlane:
service:
serviceType: ClusterIP
ingress:
hostname: kamaji-1-k8s-130-1.k8s.xyxy.stackit.run:443
ingressClassName: nginx
additionalMetadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: letsencrypt-prod
deployment:
replicas: 1
extraArgs:
apiServer:
- --endpoint-reconciler-type=none
kubernetes:
version: "v1.30.2"
kubelet:
cgroupfs: systemd
networkProfile:
certSANs:
- kamaji-1-k8s-130-1.k8s.xyxy.stackit.run
- kamaji-1-k8s-130-1.konnectivity.xyxy.stackit.run
dnsServiceIPs:
- 10.96.0.10
podCidr: 10.244.0.0/16
port: 6443
serviceCidr: 10.96.0.0/16
Zoom image will be displayed
Fig. 20: Argo CD did the heavy lifting for us
kubectl get secret k8s-130-1-admin-kubeconfig -ojsonpath='{.data.admin\.conf}' | base64 -d > tcp-1.yaml


kubectl get ns --kubeconfig tcp-1.yaml

NAME STATUS AGE
default Active 7m35s
kube-node-lease Active 7m35s
kube-public Active 7m35s
kube-system Active 7m35s
Zoom image will be displayed
Fig. 21: The big picture — from “Launch K8s” to nodes joining
Fig. 22: Don’t believe it? Just check it out
Zoom image will be displayed
Fig. 23: Create databases on-demand with Sveltos
Fig. 24: Now it’s your turn — build it, share it, and inspire others

Wrap-Up: Build Your Own Kubernetes based SaaS Platform

Video 0: Understanding Kubernetes Multi-Tenancy: Models, Challenges, and Solutions

Contact Information

--

--

ITNEXT
ITNEXT

Published in ITNEXT

ITNEXT is a platform for IT developers & software engineers to share knowledge, connect, collaborate, learn and experience next-gen technologies.

Artem Lajko
Artem Lajko

Written by Artem Lajko

Do something with cloud, kubernetes, gitops and all the fancy stuff https://www.linkedin.com/in/lajko

Responses (4)

Write a response