From Helm Hub to Your Own Chart: A Step‑by‑Step Guide to Building and Sharing Helm Charts
This article introduces the Helm Hub China mirror, showcases award‑winning Helm charts from a cloud‑native app competition, and provides a detailed tutorial on creating, packaging, testing, and publishing your own Helm chart with practical code snippets and configuration examples.
The official Helm blog announced the migration from v2 to v3, marking Helm's maturity, while Alibaba Cloud launched the first domestic Helm Hub China mirror, synchronizing all Helm Hub content and popular third‑party chart repositories such as GitLab, now hosting 859 charts.
To promote Helm chart usage in China, Alibaba Cloud organized the inaugural Cloud‑Native Application Development Competition. Over 42 days, 33 charts won the "Most Popular" award and one received the "Judge's Choice" award. The winning projects, like etcd‑manage (a Go‑based etcd management tool with a UI and simple RBAC) and redis‑operator , were evaluated for technical merit and usability.
How to Create Your Own Helm Chart
Deploying applications on Kubernetes requires multiple YAML resources (Deployment, Service, ServiceAccount, Role, Namespace, Secret, PV, etc.). Helm packages these resources into a reusable chart, exposing configurable fields via templating.
Typical workflow:
Prepare an image : Build a Docker image (e.g., a simple Go service that reads the USERNAME env var and returns Hello ${USERNAME} on port 80) and push it to a registry.
Generate a chart : Run helm create my-hello-world. The generated directory contains Chart.yaml, values.yaml, and a templates/ folder with deployment.yaml, service.yaml, etc.
Configure the chart :
Set the image repository and tag in values.yaml ( image.repository: somefive/hello-world, image.pullPolicy: IfNotPresent).
Expose a custom variable Username in values.yaml and reference it in deployment.yaml via .Values.Username.
Adjust Chart.yaml version fields ( version for the chart, appVersion for the underlying app).
Validate : Run helm lint --strict my-hello-world to catch syntax errors.
Package : Use helm package my-hello-world to produce my-hello-world-0.1.0.tgz.
Install & test : helm install my-hello-world-test my-hello-world-0.1.0.tgz, then verify pods with kubectl get pods and access the service via kubectl port-forward (e.g., curl localhost:8080 returns Hello AppHub).
Override values : Users can customize parameters at install time with --set Username="Cloud Native" or supply a custom my-values.yaml file.
Update notes : Edit templates/NOTES.txt to reflect the correct label selectors and version numbers, then re‑package and upgrade with helm upgrade.
Sharing Charts
After packaging, charts can be published to a chart repository. Helm’s ChartMuseum can host private repositories, but maintaining them incurs overhead. Alibaba Cloud’s Open Cloud‑Native App Hub aggregates charts from upstream repositories, mirrors Docker images for domestic access, and accepts community contributions via pull requests, providing a centralized distribution point.
By participating in the competition and contributing to the App Hub, developers help enrich the cloud‑native ecosystem, making Helm‑based deployments as easy as installing a desktop app.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Alibaba Cloud Native
We publish cloud-native tech news, curate in-depth content, host regular events and live streams, and share Alibaba product and user case studies. Join us to explore and share the cloud-native insights you need.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
