🌐 Website: https://helm.networkcat89.com
📖 Documentation: https://helm.networkcat89.com/docs
🎮 Playground: https://helm.networkcat89.com/playground
⭐ Examples: https://helm.networkcat89.com/examples
A reusable, production-ready universal Helm chart for deploying applications to Kubernetes.
Universal Helm Chart is a generic Helm chart and reusable application Helm chart for Kubernetes. Deploy different containerized applications with one configurable chart instead of maintaining a separate chart for every service.
It supports Deployments with configurable rollout strategies, Services, Ingress, Gateway API HTTPRoutes, Prometheus Operator ServiceMonitors, Jobs, CronJobs, autoscaling, ConfigMaps, Secrets, persistent volumes, init containers, sidecars, custom Kubernetes manifests, and more.
helm repo add universal https://chaser100.github.io/u-helm-chart
helm repo update
helm upgrade --install my-app universal/application \
--namespace my-app \
--create-namespace \
--set image=nginx \
--set imageTag=1.27Instead of maintaining one Helm chart per application, maintain one reusable chart and configure deployments entirely through values.yaml.
- Use one Helm chart across multiple applications
- Reduce duplicated Kubernetes templates between services
- Keep application-specific configuration in
values.yaml - Support both simple workloads and advanced Kubernetes configurations
- Integrate with Helm, Argo CD, Flux, and other GitOps workflows
- Deploy applications without creating a new application chart each time
See Why This Chart? for design goals, trade-offs, and cases where a dedicated chart is a better fit.
The tests/ directory contains tested, ready-to-use values.yaml examples and is the source of truth for supported configurations. Every example is linted and rendered in CI.
- Basic application
- Deployment strategy
- Ingress and plain Ingress
- Gateway API HTTPRoute and advanced HTTPRoute
- Prometheus Operator ServiceMonitor
- Jobs and CronJobs
- Storage and full configuration
- Sidecars
See all tested configurations in helm-charts/application/tests/.
- Why this chart?
- Configuration reference
- Deployment strategy
- Ingress
- Gateway API
- Jobs
- CronJobs
- Persistent storage
- Sidecars
- Init containers
- Extra deployments
- Flexible deployments - Configure replicas, rollout strategies, commands, probes, resources, lifecycle hooks, and scheduling
- Ingress and Gateway API - Support standard Ingress, extra Ingress, plain Ingress, and simple or fully configurable Gateway API HTTPRoutes
- Prometheus monitoring - Optionally create a Prometheus Operator ServiceMonitor for the chart-managed Service
- Jobs and CronJobs - Run one-time and scheduled workloads with dedicated configuration
- Autoscaling - Scale Deployments with
autoscaling/v2HorizontalPodAutoscaler resources - Security configuration - Configure security contexts, service accounts, and Pod Security Standards-compatible settings
- Storage - Mount ConfigMaps, Secrets, arbitrary volumes, and PersistentVolumeClaims
- Init and sidecar containers - Run supporting containers alongside the main application
- Custom resources - Add raw Kubernetes manifests and extra Deployments when needed
- GitOps workflows - Use the same chart with Helm, Argo CD, Flux, and other deployment tools
- Helm 3
- Kubernetes 1.23+ for the complete built-in API set used by the chart, including
autoscaling/v2 - Gateway API CRDs and a compatible Gateway controller when
route.enabled=true - Prometheus Operator ServiceMonitor CRD when
serviceMonitor.enabled=true
Gateway API and Prometheus Operator CRDs are not installed by this chart. Install and manage the required CRDs separately before enabling HTTPRoute or ServiceMonitor resources.
This chart is published through GitHub Pages as a Helm repository.
helm repo add universal https://chaser100.github.io/u-helm-chart
helm repo update# values.yaml
image: ghcr.io/example/my-app
imageTag: "1.0.0"
service:
port: 8080
ingress:
enabled: true
className: nginx
hosts:
- host: app.example.com
paths:
- path: /
pathType: PrefixUse the same idempotent command for the initial installation and later upgrades:
helm upgrade --install my-app universal/application \
--namespace my-app \
--create-namespace \
-f values.yamlTo pin a chart version in CI/CD, list available versions and pass the selected version explicitly:
helm search repo universal/application --versions
helm upgrade --install my-app universal/application \
--version <VERSION> \
--namespace my-app \
--create-namespace \
-f values.yamlhelm uninstall my-app --namespace my-appThe complete parameter reference and examples live in Configuration. Prefer the tested files in helm-charts/application/tests/ when starting a new deployment.
The commands below assume the release name and namespace are both my-app.
kubectl get pods \
--namespace my-app \
--selector app.kubernetes.io/instance=my-appkubectl describe pods \
--namespace my-app \
--selector app.kubernetes.io/instance=my-appkubectl logs \
--namespace my-app \
--selector app.kubernetes.io/instance=my-app \
--all-containers=truekubectl get services,endpoints,ingresses,httproutes \
--namespace my-app \
--selector app.kubernetes.io/instance=my-appkubectl get ingress --namespace my-app
curl -H "Host: app.example.com" http://<INGRESS_IP>/Contributions are welcome. Please open an issue or submit a pull request with a tested values.yaml example for user-visible chart behavior.
See CHANGELOG.md for release history.
This project is licensed under the MIT License. See LICENSE.