Welcome to the DND-IT Helm Charts repository! This repository contains a collection of Helm charts for deploying applications on Kubernetes.
These charts are thin wrappers around the common library chart. They provide opinionated defaults for specific workload types so teams can deploy with minimal configuration — just set your image and go.
Each chart includes sensible defaults for security contexts, health probes, scheduling, and Datadog integration, while still allowing full customization via values overrides.
| Chart | Description | Documentation |
|---|---|---|
| web | External-facing web applications. Ingress enabled by default with ALB. | README |
| api | Internal API services. Service enabled, ingress disabled by default. | README |
| worker | Background worker processes. No service or ingress. | README |
| task | Scheduled CronJob workloads. No service, ingress, or HPA. | README |
Why thin wrappers? The generic chart is powerful but requires teams to configure everything from scratch. The thin wrappers solve this by:
/livez, /readyz), and scheduling across all deploymentsimage.repository and image.tag to get a production-ready deployment| Chart | Description | Documentation |
|---|---|---|
| generic | A highly flexible and unopinionated Helm chart for deploying any Kubernetes workload. | README |
| common | Shared library chart with common templates and helpers. Used as a dependency by the thin wrapper charts. | README |
| custom-resources | Deploy arbitrary Kubernetes resources | README |
| karpenter-resources | Karpenter provisioner and node pool configurations | README |
| Chart | Description | Documentation |
|---|---|---|
| webapp | [DEPRECATED] Use web instead |
README |
| cronjob | [DEPRECATED] Use task instead |
README |
Our charts support Kubernetes versions that are currently maintained by major cloud providers:
helm repo add dnd-it https://dnd-it.github.io/helm-charts
helm repo update
helm search repo dnd-it
Install using default values:
helm install my-release dnd-it/<chart-name>
Install with custom values file:
helm install my-release dnd-it/<chart-name> -f values.yaml
Install specific version:
helm install my-release dnd-it/<chart-name> --version <version>
# Deploy a web application
helm install my-app dnd-it/generic \
--set image.repository=nginx \
--set image.tag=latest \
--set ingress.enabled=true \
--set ingress.hosts[0].host=myapp.example.com
# Deploy a CronJob
helm install my-job dnd-it/generic \
--set workload.type=cronjob \
--set cronjob.schedule="0 2 * * *" \
--set image.repository=myorg/backup-job
Each chart includes a values.schema.json file that provides JSON Schema validation for values.yaml. These schemas are generated using the helm-schema Helm plugin.
helm plugin install https://github.com/losisin/helm-values-schema-json
Use the Makefile targets to generate schemas:
# Generate schema for a specific chart
make schema CHART=generic
# Generate schemas for all charts
make schema-all
Or run helm schema directly from the chart directory:
cd charts/generic
helm schema
This reads values.yaml and produces values.schema.json using the JSON Schema Draft 2020-12 specification.
You can also generate from multiple values files (e.g. to capture CI test values):
helm schema -f values.yaml -f ci/test-values.yaml
You can control schema generation by adding @schema annotations as comments in values.yaml. Each annotation must have @schema followed by the property on the same line:
# @schema type: string
# @schema required: true
image:
repository: nginx
# @schema minimum: 1
replicaCount: 1
# @schema type: [string, integer]
minAvailable: 50%
Important: Multi-line annotations require @schema on each line:
# Correct
# @schema type: [string, integer]
# @schema minimum: 0
minAvailable: 50%
# Wrong - will not work
# @schema
# type: [string, integer]
minAvailable: 50%
See the helm-schema documentation for the full list of supported annotations.
We welcome contributions! When working with this repository locally:
Some charts may have dependencies that need to be built:
cd charts/<chart-name>
helm dependency build
Test template rendering:
helm template test-release ./charts/<chart-name> -f values.yaml
Run built-in tests:
helm test test-release
helm lint ./charts/<chart-name>
helm-charts/
├── charts/
│ ├── common/ # Shared library chart (templates & helpers)
│ ├── web/ # Opinionated: external web applications
│ ├── api/ # Opinionated: internal API services
│ ├── worker/ # Opinionated: background worker processes
│ ├── task/ # Opinionated: scheduled CronJob workloads
│ ├── generic/ # Flexible multi-purpose chart
│ ├── custom-resources/ # Custom resources chart
│ ├── karpenter-resources/ # Karpenter configurations
│ ├── webapp/ # [DEPRECATED] Use web instead
│ └── cronjob/ # [DEPRECATED] Use task instead
└── README.md # This file
This repository is maintained by DND-IT.