Skip to content

Commit 8c14077

Browse files
authored
πŸ§™β€β™‚οΈ [blog] helm to idp in five minutes (#800)
1 parent 1b170c9 commit 8c14077

File tree

7 files changed

+126
-12
lines changed

7 files changed

+126
-12
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: "From Helm Chart to Developer UI in 5 Minutes"
3+
authors: [jurajk]
4+
---
5+
6+
![Helm and Cyclops](../../static/img/2025-04-03-helm-to-idp-in-five/cover.png)
7+
8+
> *Helm is great…*
9+
>
10+
> *…until you give it to a developer.*
11+
12+
The fact is, Helm was made for people who understand Kubernetes. As a DevOps engineer, you can define complex deployments, manage environment-specific configs, and reuse logic with templating. Beautiful.
13+
14+
But for most developers, Helm charts are just confusing. Helm assumes a certain level of Kubernetes fluency that many developers simply don’t have. And that’s okay. They should be focused on building and shipping products, not worry about the underlying infrastructure.
15+
16+
This, however, causes friction since developers become overly reliant on DevOps engineers for every small change and deployment.
17+
18+
Helm **is** great, just not as a user interface.
19+
20+
But let’s fix that! In this post, I’ll show you how to turn *any* Helm chart into a simple UI that your devs (or even non-tech folks) can actually use. It won’t take longer than 5 minutes.
21+
22+
Ready, set, go ⏳
23+
24+
## #1 Cyclops πŸ‘οΈ
25+
26+
[**Cyclops**](https://github.com/cyclops-ui/cyclops) is an **open-source tool** that allows you to build internal developer platforms from your Helm charts. Basically, **you import a Helm chart**, and **Cyclops spits out a UI** based on it.
27+
28+
From there, developers can use this UI to configure, deploy and manage their applications running in a Kubernetes cluster.
29+
30+
The setup is straightforward and just consists of two commands to get you started. You can find it on our webpage or the repository, but I’m also putting it here for easy access:
31+
32+
```bash
33+
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.18.2/install/cyclops-install.yaml &&
34+
kubectl apply -f https://raw.githubusercontent.com/cyclops-ui/cyclops/v0.18.2/install/demo-templates.yaml
35+
```
36+
37+
To access the cyclops-ui you can just port-forward its service, but for production usage you can expose it via an ingress or a load balancer.
38+
39+
```bash
40+
kubectl port-forward svc/cyclops-ui -n cyclops 3000:3000
41+
```
42+
43+
You can now access Cyclops at http://localhost:3000/.
44+
45+
> *While you are at our repo, consider supporting us with a star!*
46+
>
47+
> ⭐  [***Star Cyclops on GitHub***](https://github.com/cyclops-ui/cyclops) ⭐
48+
49+
## #2 Grab your Helm chart πŸ—ƒοΈ
50+
51+
You probably have some Helm charts lying around; they will do just fine. If not, [**you can use mine**](https://github.com/KaradzaJuraj/helm-to-idp)! I created a chart using the `helm create` command and haven’t made any changes to it **yet**.
52+
53+
Let’s take a moment and get a closer look at the chart. It consists of 5 resources: a deployment, a service, a service account, an ingress, and a horizontal pod autoscaler. The HPA and ingress are disabled by default, but you can turn them on in the `values.yaml`.
54+
55+
The values file is pretty small here, but, even though this is just the β€œdefault” Helm chart, it is enough to turn away most developers.
56+
57+
```bash
58+
my-chart/
59+
β”œβ”€β”€ Chart.yaml # Metadata about the chart (name, version, etc.)
60+
β”œβ”€β”€ values.yaml # Default configuration values
61+
β”œβ”€β”€ **values.schema.json** # Generated from the values.yaml
62+
β”œβ”€β”€ templates/
63+
β”‚ β”œβ”€β”€ deployment.yaml
64+
β”‚ β”œβ”€β”€ hpa.yaml # Off in default values
65+
β”‚ β”œβ”€β”€ serviceaccount.yaml.
66+
β”‚ β”œβ”€β”€ service.yaml
67+
β”‚ β”œβ”€β”€ ingress.yaml # Off in default values
68+
└── .helmignore
69+
```
70+
71+
I will be using and playing around with this chart, but you can do the same with any of your existing charts.
72+
73+
I’m going to **add one more thing to the chart** - [**a schema file**](https://helm.sh/docs/topics/charts/#schema-files). While my Helm chart did not come with a schema file, your chart may already have it (you can see it in the structure above as the `values.schema.json`). I [**autogenerated mine**](https://cyclops-ui.com/docs/templates/#generating-helm-chart-schema) and removed the excess lines I didn’t need. You can see the final version [here](https://github.com/KaradzaJuraj/helm-to-idp/blob/add-schema/my-chart/values.schema.json).
74+
75+
## #3 Magic 🧚
76+
77+
Now comes the fun part.
78+
79+
If you have Cyclops set up, open it up in your browser. You will be greeted by the empty Modules screen, but we should first go to the **Templates tab.**
80+
81+
Out of the box, Cyclops comes with a bunch of templates to help you get started, but let’s add our own so that we can play around with it.
82+
83+
Click the `Add template reference` button and input the fields so it points to your Helm chart.
84+
85+
> ⚠️ *If you are using a Helm chart that is stored in a private repository, you can find here* [*how to enable access*](https://cyclops-ui.com/docs/templates/private_templates) ⚠️
86+
>
87+
88+
![add-template](../../static/img/2025-04-03-helm-to-idp-in-five/new-template.png)
89+
90+
After you have added your chart, go back to the **modules tab**. It is still an empty screen, but let’s use our new template to deploy a module!
91+
92+
The first step of deploying a module is choosing a template. In the dropdown, find the template that you imported and click on it. Remember the **`value.schema.json` from before**? That’s precisely what Cyclops uses to render the UIs.
93+
94+
![template-1](../../static/img/2025-04-03-helm-to-idp-in-five/schema.png)
95+
96+
As you can see, the fields here correlate with the fields defined in the `value.schema.json`. Changing the schema in the Helm chart, for example [removing a couple of fields like here](https://github.com/KaradzaJuraj/helm-to-idp/blob/edited-schema/my-chart/values.schema.json), will result in a different UI as well.
97+
98+
![template-2](../../static/img/2025-04-03-helm-to-idp-in-five/edit-schema.png)
99+
100+
Cyclops is not just a pretty UI for your Helm charts, though. Once you fill in the form your template renders, you can deploy it as a module! Cyclops can either deploy it directly to your cluster or, if you are more of a GitOps enjoyer, [push the configuration to git](https://cyclops-ui.com/docs/installation/git-write). The end goal is the same: you will have deployed your Helm chart to the cluster using the values provided in the UI.
101+
102+
![module](../../static/img/2025-04-03-helm-to-idp-in-five/module.png)
103+
104+
From here, a developer can easily access everything they might need: restarting their applications, accessing their logs, checking their status, editing the configuration, and much more…
105+
106+
## You’re a Platform Engineer, Harry πŸ§™β€β™‚οΈ
107+
108+
While the Helm chart might have been a turn-off for most developers, a simple UI will be far better received. By abstracting away the complexity of Kubernetes and surfacing only the relevant configuration options through a UI, you’ve enabled a safer, faster, and more autonomous workflow for developers.
109+
110+
No more back-and-forth with DevOps for routine changes. No more context-switching to learn Helm. Instead, developers get a streamlined, focused experience that lets them ship their code with confidence. This is the core idea behind **Platform Engineering**: providing a standardized, self-service infrastructure that empowers development teams.
111+
112+
If you want to learn more about platform engineering and building internal developer platforms, join our [Discord community](https://discord.com/invite/8ErnK3qDb3) and come talk to us!
113+
114+
> ⭐ [***Star Cyclops on GitHub***](https://github.com/cyclops-ui/cyclops) ⭐

β€Žweb/src/components/Blogs/index.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -23,41 +23,41 @@ const Blogs = () => {
2323
<Row gutter={[16, 16]}>
2424
<Col xs={{ span: 20, offset: 2 }} md={{ span: 6, offset: 3 }}>
2525
<Blog
26-
title={"How Platform Engineering Helps You Move Like a Startup Again"}
26+
title={"From Helm Chart to Developer UI in 5 Minutes"}
2727
description={
28-
"There's been a quiet shift happening in engineering teams over the last few years. DevOps isn't going away, but it *is* evolving..."
28+
"Helm is great… …until you give it to a developer."
2929
}
3030
blogLink={
31-
"https://cyclops-ui.com/blog/2025/03/27/move-like-a-startup"
31+
"https://cyclops-ui.com/blog/2025/04/03/helm-to-idp-in-five"
3232
}
3333
avatar={"https://github.com/KaradzaJuraj.png"}
34-
banner={"/img/2025-03-27-move-like-a-startup/cover.jpeg"}
34+
banner={"/img/2025-04-03-helm-to-idp-in-five/cover.png"}
3535
/>
3636
</Col>
3737
<Col xs={{ span: 20, offset: 2 }} md={{ span: 6, offset: 0 }}>
3838
<Blog
39-
title={"Internal Developer Portals vs Platforms"}
39+
title={"How Platform Engineering Helps You Move Like a Startup Again"}
4040
description={
41-
"TL;DR: The Internal Developer Portal is the interface to the Internal Developer Platform. That's it. You can go now."
41+
"There's been a quiet shift happening in engineering teams over the last few years. DevOps isn't going away, but it *is* evolving..."
4242
}
4343
blogLink={
44-
"https://cyclops-ui.com/blog/2025/03/13/portal-vs-platform"
44+
"https://cyclops-ui.com/blog/2025/03/27/move-like-a-startup"
4545
}
4646
avatar={"https://github.com/KaradzaJuraj.png"}
47-
banner={"/img/2025-03-13-portal-vs-platform/cover.jpeg"}
47+
banner={"/img/2025-03-27-move-like-a-startup/cover.jpeg"}
4848
/>
4949
</Col>
5050
<Col xs={{ span: 20, offset: 2 }} md={{ span: 6, offset: 0 }}>
5151
<Blog
52-
title={"How We Took GitOps a Step Further"}
52+
title={"Internal Developer Portals vs Platforms"}
5353
description={
54-
"GitOps has changed how teams manage infrastructure and deployments, making..."
54+
"TL;DR: The Internal Developer Portal is the interface to the Internal Developer Platform. That's it. You can go now."
5555
}
5656
blogLink={
57-
"https://cyclops-ui.com/blog/2025/03/06/how-we-took-gitops-further"
57+
"https://cyclops-ui.com/blog/2025/03/13/portal-vs-platform"
5858
}
5959
avatar={"https://github.com/KaradzaJuraj.png"}
60-
banner={"/img/2025-03-06-how-we-took-gitops-further/cover.jpeg"}
60+
banner={"/img/2025-03-13-portal-vs-platform/cover.jpeg"}
6161
/>
6262
</Col>
6363
</Row>
Loading
Loading
Loading
Loading
Loading

0 commit comments

Comments
Β (0)