Skip to content

Commit 99969a0

Browse files
authored
feat(blog): add Managed Kubernetes how-to post (#565)
## Summary - Add blog post "From Zero to kubectl in 5 Minutes — Managed Kubernetes on Your Own Metal" - Page bundle with 4 screenshots (marketplace, form, nodes ready, kubeconfig) ## What New how-to post covering managed Kubernetes deployment via Dashboard and kubectl, including kubeconfig retrieval and built-in addon configuration (Cilium CNI, Cluster Autoscaler, cert-manager, ingress-nginx). ## Why Fills the content gap for the Kubernetes-as-a-Service use case — a key product differentiator with no dedicated blog coverage yet. ## Preview https://cozystack.io/blog/2026/06/from-zero-to-kubectl-managed-kubernetes-on-your-own-metal/
2 parents ddc003f + 92740c9 commit 99969a0

5 files changed

Lines changed: 125 additions & 0 deletions

File tree

97.6 KB
Loading
90.9 KB
Loading
31.4 KB
Loading
46.7 KB
Loading
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
title: "From Zero to kubectl in 5 Minutes — Managed Kubernetes on Your Own Metal"
3+
slug: from-zero-to-kubectl-managed-kubernetes-on-your-own-metal
4+
date: 2026-06-04
5+
author: "Timur Tukaev"
6+
description: "Deploy a production-grade Kubernetes cluster on your own hardware in minutes. Cozystack uses Kamaji, Cluster API, and KubeVirt to give you fully managed Kubernetes with autoscaling, Cilium CNI, and built-in addons — no cloud bill required."
7+
images:
8+
- "001.png"
9+
article_types:
10+
- how-to
11+
topics:
12+
- kubernetes
13+
- platform
14+
---
15+
16+
Every platform team has faced this: a new project needs a Kubernetes cluster. With cloud providers, that means a new billing account, region selection, networking decisions, and a baseline cost of $70–300/month before a single pod runs. Self-hosting with kubeadm? Days of setup, certificates, etcd management, and upgrade anxiety. Rancher helps, but you're still managing the lifecycle yourself.
17+
18+
What if creating a production-grade Kubernetes cluster was as simple as filling out a form?
19+
20+
## Deploy a Managed Kubernetes Cluster
21+
22+
Cozystack uses [Kamaji](https://kamaji.clastix.io/) for control planes (running as pods — no dedicated VMs for masters), [Cluster API](https://cluster-api.sigs.k8s.io/) for lifecycle management, and [KubeVirt](https://kubevirt.io/) for worker node VMs. You pick the version, the instance type, and how many nodes you want.
23+
24+
### Via Dashboard
25+
26+
1. Open the Cozystack dashboard at `https://dashboard.<your-domain>`.
27+
2. Navigate to the **Marketplace** and find **Kubernetes**.
28+
29+
{{< figure src="001.png" alt="Cozystack dashboard Marketplace showing the Kubernetes application tile" width="720" >}}
30+
31+
3. Click **Deploy** and configure:
32+
- **Name:** e.g., `dev-cluster`
33+
- **Version:** pick from v1.30 to v1.35
34+
- **Node group:** set `minReplicas: 2`, `maxReplicas: 5`
35+
- **Instance type:** e.g., `u1.large` (2 vCPU, 8 Gi RAM)
36+
- **Addons:** check `ingress`, `cert-manager`, `monitoring`
37+
38+
{{< figure src="002.png" alt="Kubernetes deployment form with version, node group, and addons configured" width="720" >}}
39+
40+
4. Click **Deploy**.
41+
42+
Worker nodes boot as VMs, join the cluster, and become Ready — typically within 3–5 minutes.
43+
44+
{{< figure src="003.png" alt="Kubernetes cluster worker nodes reporting Ready status after deployment" width="720" >}}
45+
46+
> **What's included:** Every cluster comes pre-configured with [Cilium CNI](https://cilium.io/) (eBPF-based networking), KubeVirt CSI driver (for persistent volumes), and Cluster Autoscaler (automatic node scaling based on demand).
47+
48+
### Via kubectl
49+
50+
```yaml
51+
apiVersion: helm.toolkit.fluxcd.io/v2
52+
kind: HelmRelease
53+
metadata:
54+
name: kubernetes-dev
55+
namespace: tenant-team1
56+
spec:
57+
chart:
58+
spec:
59+
chart: kubernetes
60+
reconcileStrategy: Revision
61+
sourceRef:
62+
kind: HelmRepository
63+
name: cozystack-apps
64+
namespace: cozy-public
65+
interval: 0s
66+
values:
67+
host: dev.team1.example.org
68+
version: v1.33
69+
nodeGroups:
70+
md0:
71+
minReplicas: 2
72+
maxReplicas: 5
73+
instanceType: u1.large
74+
ephemeralStorage: 20Gi
75+
controlPlane:
76+
replicas: 2
77+
addons:
78+
ingressNginx:
79+
enabled: true
80+
certManager:
81+
enabled: true
82+
monitoringAgents:
83+
enabled: true
84+
```
85+
86+
```bash
87+
kubectl apply -f kubernetes-dev.yaml
88+
```
89+
90+
### Get your kubeconfig
91+
92+
In the dashboard, open the cluster application → **Secrets** tab → download `admin.conf`.
93+
94+
{{< figure src="004.png" alt="Cluster application Secrets tab with admin.conf kubeconfig available for download" width="720" >}}
95+
96+
Or via CLI:
97+
98+
```bash
99+
kubectl get secret -n tenant-team1 kubernetes-dev-admin-kubeconfig \
100+
-o jsonpath='{.data.admin\.conf}' | base64 -d > kubeconfig-dev.yaml
101+
102+
export KUBECONFIG=kubeconfig-dev.yaml
103+
kubectl get nodes
104+
```
105+
106+
```
107+
NAME STATUS ROLES AGE VERSION
108+
kubernetes-dev-md0-vn8dh-jjbm9 Ready ingress-nginx 4m v1.33.2
109+
kubernetes-dev-md0-vn8dh-xhsvl Ready ingress-nginx 3m v1.33.2
110+
```
111+
112+
Deploy your apps with standard `kubectl` or `helm` — no vendor-specific tooling needed.
113+
114+
## Learn more
115+
116+
- [Managed Kubernetes documentation](https://cozystack.io/docs/v1/kubernetes/)
117+
- [Deploy Applications guide](https://cozystack.io/docs/v1/getting-started/deploy-app/)
118+
- [Create a Tenant](https://cozystack.io/docs/v1/getting-started/create-tenant/)
119+
120+
## Join the community
121+
122+
- [GitHub](https://github.com/cozystack/cozystack)
123+
- Telegram [group](https://t.me/cozystack)
124+
- Slack [group](https://kubernetes.slack.com/archives/C06L3CPRVN1) (get invite at [https://slack.kubernetes.io](https://slack.kubernetes.io))
125+
- [Community Meeting Calendar](https://calendar.google.com/calendar?cid=ZTQzZDIxZTVjOWI0NWE5NWYyOGM1ZDY0OWMyY2IxZTFmNDMzZTJlNjUzYjU2ZGJiZGE3NGNhMzA2ZjBkMGY2OEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t)

0 commit comments

Comments
 (0)