home / skills / nickcrew / claude-cortex / helm-chart-patterns

helm-chart-patterns skill

/skills/helm-chart-patterns

This skill helps you design, validate, and package production-grade Helm charts for multi-environment deployments and reusable templates.

npx playbooks add skill nickcrew/claude-cortex --skill helm-chart-patterns

Review the files below or copy the command above to add this skill to your agents.

Files (10)
SKILL.md
4.0 KB
---
name: helm-chart-patterns
description: Helm chart development patterns for packaging and deploying Kubernetes applications. Use when creating reusable Helm charts, managing multi-environment deployments, or building application catalogs for Kubernetes.
---

# Helm Chart Patterns

Expert guidance for developing production-grade Helm charts covering chart structure, templating patterns, multi-environment configuration, dependency management, testing strategies, and distribution workflows for Kubernetes application packaging.

## When to Use This Skill

- Creating reusable Helm charts for applications and services
- Building application catalogs and chart repositories
- Managing multi-environment deployments (dev, staging, production)
- Implementing advanced templating with conditionals and loops
- Managing chart dependencies and subcharts
- Implementing chart hooks for lifecycle management
- Testing and validating chart templates
- Packaging and distributing charts via repositories
- Using Helmfile for multi-chart orchestration

## Core Concepts

### Chart Types
- **Application charts**: Standard deployable charts for your services
- **Library charts**: Reusable template helpers (not directly installable)

### Key Files
| File | Purpose |
|------|---------|
| `Chart.yaml` | Metadata, version, dependencies |
| `values.yaml` | Default configuration |
| `values.schema.json` | Input validation |
| `templates/_helpers.tpl` | Reusable template functions |
| `templates/*.yaml` | Kubernetes manifests |

### Template Essentials
- **Quote strings**: `{{ .Values.name | quote }}`
- **Indent properly**: `{{- toYaml . | nindent 4 }}`
- **Use helpers**: `{{ include "my-app.fullname" . }}`
- **Check nil**: `{{- if .Values.optional }}`

## Quick Reference

| Task | Load reference |
| --- | --- |
| Chart structure & Chart.yaml | `skills/helm-chart-patterns/references/chart-structure.md` |
| Values file patterns | `skills/helm-chart-patterns/references/values-patterns.md` |
| Template patterns & functions | `skills/helm-chart-patterns/references/template-patterns.md` |
| Dependencies & subcharts | `skills/helm-chart-patterns/references/dependencies.md` |
| Hooks & lifecycle | `skills/helm-chart-patterns/references/hooks.md` |
| Testing patterns | `skills/helm-chart-patterns/references/testing.md` |
| Packaging & distribution | `skills/helm-chart-patterns/references/packaging.md` |
| Helmfile multi-chart | `skills/helm-chart-patterns/references/helmfile.md` |
| Best practices checklist | `skills/helm-chart-patterns/references/best-practices.md` |

## Workflow

1. **Structure** - Set up chart directory with Chart.yaml and values.yaml
2. **Template** - Create Kubernetes manifests with Go templating
3. **Helpers** - Extract common patterns into _helpers.tpl
4. **Validate** - Use values.schema.json for input validation
5. **Test** - Lint, template, and run chart tests
6. **Package** - Create .tgz and publish to repository

## Essential Commands

```bash
# Development
helm create my-app          # Scaffold new chart
helm lint ./my-app          # Validate chart
helm template my-app ./my-app  # Render templates

# Dependencies
helm dependency update      # Download dependencies
helm dependency list        # Show dependencies

# Testing
helm install my-app ./my-app --dry-run --debug
helm test my-app

# Distribution
helm package ./my-app
helm repo index . --url https://charts.example.com
helm push my-app-1.0.0.tgz oci://registry.example.com/charts
```

## Common Mistakes

- Forgetting to quote strings in templates
- Not using `nindent` for proper YAML formatting
- Committing secrets to values files
- Missing security contexts (runAsNonRoot, drop capabilities)
- Not pinning dependency versions
- Skipping values.schema.json validation
- Not testing upgrades from previous versions

## Resources

- **Helm Documentation**: https://helm.sh/docs/
- **Chart Template Guide**: https://helm.sh/docs/chart_template_guide/
- **Best Practices**: https://helm.sh/docs/chart_best_practices/
- **Helmfile**: https://github.com/helmfile/helmfile
- **Chart Testing**: https://github.com/helm/chart-testing

Overview

This skill provides expert guidance and practical patterns for building production-grade Helm charts to package and deploy Kubernetes applications. It focuses on chart structure, templating best practices, multi-environment configuration, dependency management, testing, and distribution workflows. Use it to create reusable charts and reliable deployment pipelines across environments.

How this skill works

The skill inspects chart structure, values schemas, template patterns, and lifecycle hooks to surface reusable patterns and anti-patterns. It explains how to extract helpers, validate inputs with values.schema.json, apply proper templating functions (quote, nindent, include), and manage dependencies and releases. It also outlines a workflow: scaffold, template, validate, test, package, and publish charts.

When to use it

  • Creating reusable application or library charts
  • Managing multi-environment deployments (dev, staging, prod)
  • Building an internal chart repository or application catalog
  • Implementing advanced templates with conditionals, loops, and helpers
  • Automating multi-chart orchestration with Helmfile

Best practices

  • Keep clear chart structure: Chart.yaml, values.yaml, templates, and _helpers.tpl
  • Quote strings and use nindent/toYaml for correct YAML formatting
  • Extract reusable logic into library charts or _helpers.tpl templates
  • Pin dependency versions and use values.schema.json for input validation
  • Never commit secrets to values files; use sealed secrets or external stores
  • Lint, render, and run upgrade tests to validate install and upgrade paths

Example use cases

  • Scaffold a repeatable chart for a microservice with standardized labels and probes
  • Create a library chart for common annotations, RBAC, and resource requests
  • Manage dev/staging/prod overrides via values files and Helmfile orchestration
  • Publish signed chart packages to an OCI registry or chart museum
  • Implement pre-install and post-delete hooks for migration or cleanup tasks

FAQ

How do I validate user-provided values?

Use values.schema.json to enforce types and required fields, and run helm lint and helm template during CI to catch issues early.

When should I use a library chart vs a subchart?

Use a library chart for reusable template helpers and logic; use subcharts when you need independently versioned, installable child charts.

How do I avoid committing secrets?

Keep secrets out of values.yaml. Use sealed secrets, HashiCorp Vault, or external secret controllers and reference them from your templates.