| name | helm |
| description | Helm chart policies, bitnami legacy repo, and release management. Use on 'helm-skill' or 'load helm skill'. |
Helm Skill
Helm chart management with safety and minimal footprint.
Chart Repo Policy
Critical: Bitnami Retired
DO NOT use bitnami/* - the public repo was retired. Use bitnamilegacy/* instead.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add bitnamilegacy https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
Bitnami Image Registry Override
Bitnami charts still work, but their Docker images moved registries.
Always override the image registry in values:
global:
imageRegistry: docker.io/bitnami
image:
registry: docker.io
repository: bitnami/mysql
Common patterns:
image:
registry: docker.io
repository: bitnami/mysql
image:
registry: docker.io
repository: bitnami/redis
image:
registry: docker.io
repository: bitnamilegacy/mysql
Note: Test with current bitnami/* images first; only fall back to bitnamilegacy/* if the image is unavailable.
Preferred Chart Sources
| Application | Source |
|---|
| Airflow | apache-airflow/airflow |
| MinIO | minio/operator or official MinIO chart |
| MySQL | Official mysql chart or bitnamilegacy/mysql |
| Redis | bitnamilegacy/redis |
| PostgreSQL | bitnamilegacy/postgresql |
| Ingress | ingress-nginx/ingress-nginx |
Command Safety
Safe (Read-only)
helm template <chart>
helm lint <chart>
helm show values <chart>
helm list -A
helm status <release>
helm get values <rel>
helm get manifest <rel>
helm history <release>
Destructive (Require Approval)
helm install ...
helm upgrade ...
helm uninstall ...
helm rollback ...
Workflow
1. Validate Before Install
helm lint ./chart
helm template ./chart -f values.yaml
helm template ./chart -f values.yaml | kubectl apply --dry-run=client -f -
2. Install/Upgrade
helm upgrade --install <release> <chart> \
-n <namespace> --create-namespace \
-f values.yaml \
--wait --timeout 5m
3. Verify
helm list -n <namespace>
helm status <release> -n <namespace>
kubectl get pods -n <namespace>
Values Management
Override Hierarchy
- Chart defaults (
helm show values)
- Base values file (
values.yaml)
- Environment overlay (
values-dev.yaml, values-prod.yaml)
- CLI
--set flags (avoid for secrets)
Values Pattern
replicaCount: 1
resources:
requests:
memory: 256Mi
cpu: 100m
replicaCount: 3
resources:
requests:
memory: 1Gi
cpu: 500m
Secrets Pattern
- Use External Secrets Operator or Sealed Secrets
- Never commit plaintext secrets in values files
- Reference K8s secrets, don't inline values
Debugging
Release Issues
helm history <release>
helm get values <release>
helm get manifest <release>
helm rollback <release> <rev>
Pod Issues
kubectl get pods -l app.kubernetes.io/instance=<release>
kubectl describe pod <pod>
kubectl logs <pod>
Helm vs Kustomize
| Use Helm When | Use Kustomize When |
|---|
| Complex app with many options | < 5 manifests |
| Upstream chart exists | Custom resources |
| Need templating/conditionals | Simple overlays |
| Want release management | GitOps with ArgoCD |
ArgoCD Integration
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
source:
repoURL: https://charts.example.com
chart: myapp
targetRevision: 1.2.3
helm:
valueFiles:
- values.yaml
- values-prod.yaml
Quick Reference
helm repo add apache-airflow https://airflow.apache.org
helm repo add minio https://operator.min.io
helm repo add bitnamilegacy https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
helm repo update
helm search repo <keyword>
helm search hub <keyword>
helm upgrade --install myapp repo/chart -f values.yaml -n ns --create-namespace
helm upgrade --install myapp ./chart -f values.yaml -n ns