Use when understanding and creating Helm charts for packaging and deploying Kubernetes applications.
Install
npx skillscat add thebushidocollective/han/helm-charts Install via the SkillsCat registry.
We need to produce a 2-3 sentence plain-text summary, objective, factual, no marketing, no superlatives, no calls to action. Must be at most 60 words. No quotes, no markdown, no bullet points, no headings. Just plain text. Summarize skill: Helm charts skill: understanding and creating Helm charts for packaging and deploying Kubernetes applications. Problem: simplifies deployment, configuration management of K8s apps. When to use: when packaging, versioning, deploying Kubernetes apps, managing dependencies, customizing via values. We need 2-3 sentences. Let's craft ~40 words.
Helm Charts
Understanding and creating Helm charts for Kubernetes applications.
Chart Structure
mychart/
├── Chart.yaml # Chart metadata
├── values.yaml # Default values
├── charts/ # Chart dependencies
├── templates/ # Template files
│ ├── NOTES.txt # Usage notes
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── _helpers.tpl # Template helpers
│ └── tests/ # Test files
└── .helmignore # Files to ignoreChart.yaml
apiVersion: v2
name: my-app
user-invocable: false
description: A Helm chart for my application
type: application
version: 1.0.0
appVersion: "1.0.0"
keywords:
- web
- api
maintainers:
- name: Your Name
email: you@example.com
dependencies:
- name: postgresql
version: "12.1.0"
repository: "https://charts.bitnami.com/bitnami"
condition: postgresql.enabledvalues.yaml
replicaCount: 3
image:
repository: myapp
pullPolicy: IfNotPresent
tag: "1.0.0"
service:
type: ClusterIP
port: 80
ingress:
enabled: false
className: "nginx"
hosts:
- host: myapp.local
paths:
- path: /
pathType: Prefix
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 80Common Commands
Create Chart
helm create mychartInstall Chart
# Install from directory
helm install myrelease ./mychart
# Install with custom values
helm install myrelease ./mychart -f custom-values.yaml
# Install with value overrides
helm install myrelease ./mychart --set image.tag=2.0.0Upgrade Chart
helm upgrade myrelease ./mychart
# Upgrade or install
helm upgrade --install myrelease ./mychartValidate Chart
# Lint chart
helm lint ./mychart
# Dry run
helm install myrelease ./mychart --dry-run --debug
# Template rendering
helm template myrelease ./mychartManage Releases
# List releases
helm list
# Get release status
helm status myrelease
# Get release values
helm get values myrelease
# Rollback
helm rollback myrelease 1
# Uninstall
helm uninstall myreleaseDependencies
Chart.yaml
dependencies:
- name: redis
version: "17.0.0"
repository: "https://charts.bitnami.com/bitnami"
condition: redis.enabled
tags:
- cacheUpdate Dependencies
helm dependency update ./mychart
helm dependency build ./mychart
helm dependency list ./mychartChart Repositories
# Add repository
helm repo add bitnami https://charts.bitnami.com/bitnami
# Update repositories
helm repo update
# Search charts
helm search repo nginx
# Search hub
helm search hub wordpressBest Practices
Version Conventions
- Chart version: Semantic versioning (1.2.3)
- App version: Application version (v1.0.0)
Default Values
Provide sensible defaults in values.yaml:
# Good defaults
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
# Allow customization
config: {}
env: {}Documentation
Include NOTES.txt for post-installation instructions:
Thank you for installing {{ .Chart.Name }}.
Your release is named {{ .Release.Name }}.
To learn more about the release, try:
$ helm status {{ .Release.Name }}
$ helm get all {{ .Release.Name }}