helm-chart-development

Helm Chart Development

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "helm-chart-development" with this command: npx skills add laurigates/claude-plugins/laurigates-claude-plugins-helm-chart-development

Helm Chart Development

Comprehensive guidance for creating, testing, and packaging custom Helm charts with best practices for maintainability and reusability.

When to Use

Use this skill automatically when:

  • User wants to create a new Helm chart

  • User needs to validate chart structure or templates

  • User mentions testing charts locally

  • User wants to package or publish charts

  • User needs to manage chart dependencies

  • User asks about chart best practices

Chart Creation & Structure

Create New Chart

Scaffold new chart with standard structure

helm create mychart

Creates:

mychart/

├── Chart.yaml # Chart metadata

├── values.yaml # Default values

├── charts/ # Chart dependencies

├── templates/ # Kubernetes manifests

│ ├── NOTES.txt # Post-install instructions

│ ├── _helpers.tpl # Template helpers

│ ├── deployment.yaml

│ ├── service.yaml

│ ├── ingress.yaml

│ └── tests/

│ └── test-connection.yaml

└── .helmignore # Files to ignore

Chart.yaml Structure

Chart.yaml - Chart metadata

apiVersion: v2 # Helm 3 uses v2 name: mychart # Chart name version: 0.1.0 # Chart version (SemVer) appVersion: "1.0.0" # Application version description: A Helm chart for Kubernetes type: application # application or library keywords:

Chart Validation & Testing

Lint Chart

Basic linting

helm lint ./mychart

Strict linting (warnings as errors)

helm lint ./mychart --strict

Lint with specific values

helm lint ./mychart --values values.yaml --strict

Lint with multiple value files

helm lint ./mychart
--values values/common.yaml
--values values/production.yaml
--strict

Render Templates Locally

Render all templates

helm template mychart ./mychart

Render with custom release name and namespace

helm template myrelease ./mychart --namespace production

Render with values

helm template myrelease ./mychart --values values.yaml

Render specific template

helm template myrelease ./mychart
--show-only templates/deployment.yaml

Validate against Kubernetes API

helm template myrelease ./mychart --validate

Dry-Run Installation

Dry-run with server-side validation

helm install myrelease ./mychart
--namespace production
--dry-run
--debug

Run Chart Tests

Install chart, run tests, cleanup

helm install myrelease ./mychart --namespace test helm test myrelease --namespace test --logs helm uninstall myrelease --namespace test

Chart Test Structure:

templates/tests/test-connection.yaml

apiVersion: v1 kind: Pod metadata: name: "{{ include "mychart.fullname" . }}-test-connection" annotations: "helm.sh/hook": test "helm.sh/hook-delete-policy": hook-succeeded,hook-failed spec: containers:

  • name: wget image: busybox command: ['wget'] args: ['{{ include "mychart.fullname" . }}:{{ .Values.service.port }}'] restartPolicy: Never

Template Development

Template Helpers (_helpers.tpl)

{{/* Expand the name of the chart. */}} {{- define "mychart.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }}

{{/* Create a fully qualified app name. */}} {{- define "mychart.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} {{- $name := default .Chart.Name .Values.nameOverride }} {{- if contains $name .Release.Name }} {{- .Release.Name | trunc 63 | trimSuffix "-" }} {{- else }} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} {{- end }} {{- end }} {{- end }}

{{/* Common labels */}} {{- define "mychart.labels" -}} helm.sh/chart: {{ include "mychart.chart" . }} {{ include "mychart.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end }}

{{/* Selector labels */}} {{- define "mychart.selectorLabels" -}} app.kubernetes.io/name: {{ include "mychart.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }}

Chart Dependencies

Define Dependencies (Chart.yaml)

Chart.yaml

dependencies:

Manage Dependencies

Download/update dependencies

helm dependency update ./mychart

Build from existing Chart.lock

helm dependency build ./mychart

List dependencies

helm dependency list ./mychart

Configure Subchart Values

values.yaml - Parent chart

postgresql: enabled: true auth: username: myapp database: myapp existingSecret: myapp-db-secret primary: persistence: size: 10Gi

redis: enabled: true auth: enabled: false master: persistence: size: 5Gi

Chart Packaging & Distribution

Package Chart

Package chart into .tgz

helm package ./mychart

Package with specific destination

helm package ./mychart --destination ./dist/

Package and update dependencies

helm package ./mychart --dependency-update

Sign package (requires GPG key)

helm package ./mychart --sign --key mykey --keyring ~/.gnupg/secring.gpg

Chart Repository

Create repository index

helm repo index ./repo/

Push to OCI registry (Helm 3.8+)

helm push mychart-0.1.0.tgz oci://registry.example.com/charts

For detailed examples of values.yaml design, schema validation, chart documentation templates, testing workflows, common chart patterns, and best practices, see REFERENCE.md.

Agentic Optimizations

Context Command

Lint (strict) helm lint ./mychart --strict

Render specific template helm template myapp ./mychart --show-only templates/deployment.yaml

Dry-run validation helm install myapp ./mychart --dry-run --debug 2>&1 | head -100

Package chart helm package ./mychart --dependency-update

Related Skills

  • Helm Release Management - Using charts to deploy

  • Helm Debugging - Troubleshooting chart issues

  • Helm Values Management - Configuring charts

References

  • Helm Chart Development Guide

  • Helm Best Practices

  • Helm Template Guide

  • Chart Testing

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

python-code-quality

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python-testing

No summary provided by upstream source.

Repository SourceNeeds Review