A Kubernetes cluster
production-ready in 5 minutes
Control plane fully managed by Hikube, worker nodes in your tenant. Replicated storage across 3 datacenters. You keep control of your workloads, we take care of the rest.
3 DC
(Geneva, Gland, Lucerne)
5 mins
0 Masters
API K8's
Turnkey managed Kubernetes
The control plane, etcd, scheduling and updates - that's Hikube. Your workers stay with you, under your total control. Access via the standard Kubernetes API.
-
Maintenance-free, managed control plane
kube-apiserver, etcd, scheduler and controller-manager are hosted and operated by Hikube. Replicated on multiple sites. -
Worker nodes in your tenant
Your workers are VMs in your space. You configure them via declarative node groups - instance type, scaling, roles, GPU. -
Replicated storage across 3 datacenters
Your persistent volumes are automatically replicated to Geneva, Gland and Lucerne. Native high availability at storage level. -
Standard Kubernetes API
Access via kubectl, SDK client, Terraform or any compatible tool. No proprietary tools required. -
Cilium as default NIC
Pod-to-pod network, NetworkPolicies and Hubble observability included. Default-allow policy modifiable at any time.
CONTROL PLANE - MANAGED BY HIKUBE
NODE GROUPS
Workers (your tenant)
VMs with min/max autoscaling. Separated by role and load type...
NETWORK
Cilium CNI
NetworkPolicy, Hubble observability, LoadBalancer, Ingress NGINX.
STORAGE
Replicated PVCs
Dynamic provisioning. 3 backends: Geneva - Gland - Lucerne.
Fully declarative configuration
A cluster in a few lines of YAML
Declare your cluster, apply it, get your kubeconfig. The control plane is ready in just a few clicks.
apiVersion: apps.cozystack.io/v1alpha1
kind: Kubernetes
metadata:
name: my-first-cluster
spec:
controlPlane:
replicas: 2
storageClass: "replicated"
nodeGroups:
general:
minReplicas: 1
maxReplicas: 5
instanceType: "s1.large" # 4 vCPU, 8 GB RAM
ephemeralstorage: 50G1
resources:{}
roles:
- ingress-nginx
addons:
certManager:
enabled: true
ingressNginx:
enabled: true
# Deploy the cluster
kubectl apply -f my-first-cluster. yaml
# Retrieve kubeconfig
kubectl get tenantsecret my-first-cluster admin-
kubeconfig
-o jsonpath='{.data.super-admin}' \
| base64 -d > kubeconfig.yaml
# Check nodes
export KUBECONFIG-kubeconfig.yaml
kubectl get nodes
A few points to remember to get started:
-
replicas: 3 for production
An odd number of replicas is recommended to guarantee the etcd quorum and high availability of the control plane. -
resources: {} is mandatory
Each node group must declare this field, even if empty. Without it, CPU/RAM values are not inherited from instanceType. -
Separate your node groups by role
Web, compute, monitoring, GPU - separate groups enable independent autoscaling and better cost control. -
Scale to zero for GPU workloads
minReplicas: 0 on a GPU node group allows resources to be consumed only when GPU pods are actually scheduled.
Three ranges for every type of workload
Each range is available from small to 8xlarge. Choose the right CPU/RAM ratio for your workload.
Best practice is to adapt the range to the role of the node group:
- s1 for general workers and Ingress
Balanced CPU:RAM ratio for web applications and microservices with no particular memory requirements. - u1 for compute and GPU workloads
More RAM per core, recommended for ML pipelines and databases. Ratio adapted to 8-16 vCPUs per GPU. - m1 for power-hungry workloads
Ideal for monitoring, caching and indexing engines that prefer RAM to CPU.
Examples:
PVCs replicated across three datacenters
Each PVC is dynamically provisioned and can be replicated in Geneva, Gland and Lucerne, depending on the StorageClass chosen.
Activate what you need
Each add-on is activated by a single line in the cluster manifest. They are automatically deployed and maintained in your tenant cluster.
Cert-Manager
Gateway API
Monitoring
GPU Operator
FluxCD
Common Hikube architectures
Production-tested configurations for the most common patterns.
WEB APPLICATION
Application stack with Ingress and TLS
GITOPS
Continuous deployment from Git with FluxCD
ML / AI
Hybrid CPU + GPU cluster with zero scaling
OBSERVABILITY
Node group dedicated to monitoring
Less ops, more time for your workloads
Maintaining a Kubernetes control plane in production means managing version upgrades, monitoring the health of etcd, managing internal certificates, and ensuring that quorum is preserved at all times. It's not complicated, but it does take time and attention.
With Hikube, this operational burden disappears. You declare what you want: cluster size, node groups, add-ons and the platform takes care of the rest. You retain full access via the standard Kubernetes API: kubectl, Helm, Terraform and FluxCD work exactly as on a self-managed cluster.
Multi-datacenter replication across three Swiss sites is transparent to your workloads. Your PVCs are available even if one datacenter is inaccessible, without any additional configuration on your part.
No control plane maintenance
Kubernetes upgrades, internal certificate rotation, etcd supervision - everything is managed by Hikube. You consume the API, not the infrastructure.
GPU and CPU on the same cluster
Specialized node groups let you run your APIs and ML pipelines on the same infrastructure, orchestrated by the same control plane.
Declarative and automatic scaling
Change maxReplicas in your YAML and apply. The autoscaler adds or removes nodes according to the actual CPU/memory pressure of your pods.
Swiss data, sovereign architecture
Three independent Swiss data centers. Native RGPD and nLPD compliance.
FAQ
Question about Kubernetes as a Service
Which instance should I choose for my workers?
It depends on what's running on the nodes. For web applications and classic microservices, s1 (ratio 1:2) is the right starting point. For databases, data pipelines or GPU workers, u1 (ratio 1:4) gives more RAM per core. Reserve m1 (ratio 1:8) for really memory-hungry loads - monitoring, caches, analytics.
How does autoscaling work?
Autoscaling is controlled by minReplicas and maxReplicas on each node group. When pods remain in the Pending state for lack of resources, new nodes are provisioned automatically. When load decreases, under-utilized nodes are removed - without going below minReplicas.
You can adjust the bounds at any time by modifying the manifest and re-running kubectl apply. For GPU or development workloads, minReplicas: 0 allows you to go down to zero nodes when there's nothing to do - allow a few minutes of cold start at the first scheduled pod.
Which storageClass to use in production?
replicated is the default recommendation for production. It replicates your persistent volumes synchronously across the three Swiss datacenters - your data remains accessible even in the event of a site failure.
local is faster (a single copy, less latency) but without high storage availability - reserve it for development or truly temporary data.
How do I add GPU nodes to an existing cluster?
Add a new node group with the gpus[] field in your manifest, activate the gpuOperator addon, and apply. The GPU Operator will automatically install NVIDIA drivers on the new nodes.
Please note: each node in the GPU node group consumes one physical GPU. A node group with minReplicas: 4 uses 4 GPUs at all times - consider using minReplicas: 0 if your GPU workloads are intermittent.
How do I get my kubeconfig back?
Can I use FluxCD to deploy my applications?
Yes - enable the fluxcd addon in the cluster manifest with the URL of your Git repository. FluxCD automatically synchronizes all repository YAML manifests in your cluster. A push on your main branch triggers deployment without any manual action.
For private repositories, configure SSH or token authentication in the cluster after initial Flux deployment.