Manage Helm releases: install, upgrade, uninstall, list, and inspect releases. Covers helm install, helm upgrade, helm list, helm status, release history. Use when user mentions deploying Helm charts, upgrading releases, helm install, helm upgrade, or managing Kubernetes deployments with Helm.
/plugin marketplace add laurigates/claude-plugins/plugin install kubernetes-plugin@lgates-claude-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Comprehensive guidance for day-to-day Helm release operations including installation, upgrades, uninstallation, and release tracking.
Use this skill automatically when:
# Basic install
helm install <release-name> <chart> --namespace <namespace> --create-namespace
# Install with custom values
helm install myapp bitnami/nginx \
--namespace production \
--create-namespace \
--values values.yaml \
--set replicaCount=3
# Install with atomic rollback on failure
helm install myapp ./mychart \
--namespace staging \
--atomic \
--timeout 5m \
--wait
# Install from repository with specific version
helm install mydb bitnami/postgresql \
--namespace database \
--version 12.1.9 \
--values db-values.yaml
# Dry-run before actual install
helm install myapp ./chart \
--namespace prod \
--dry-run \
--debug
Key Flags:
--namespace - Target namespace (ALWAYS specify explicitly)--create-namespace - Create namespace if it doesn't exist--values / -f - Specify values file(s)--set - Override individual values--atomic - Rollback automatically on failure (RECOMMENDED)--wait - Wait for resources to be ready--timeout - Maximum time to wait (default 5m)--dry-run --debug - Preview without installing# Basic upgrade with new values
helm upgrade myapp ./mychart \
--namespace production \
--values values.yaml
# Upgrade with value overrides
helm upgrade myapp bitnami/nginx \
--namespace prod \
--reuse-values \
--set image.tag=1.21.0
# Upgrade with new chart version
helm upgrade mydb bitnami/postgresql \
--namespace database \
--version 12.2.0 \
--atomic \
--wait
# Install if not exists, upgrade if exists
helm upgrade --install myapp ./chart \
--namespace staging \
--create-namespace \
--values values.yaml
# Force upgrade (recreate resources)
helm upgrade myapp ./chart \
--namespace prod \
--force \
--recreate-pods
Key Flags:
--reuse-values - Reuse existing values, merge with new--reset-values - Reset to chart defaults, ignore existing--install - Install if release doesn't exist--force - Force resource updates (use cautiously)--recreate-pods - Recreate pods even if no changes--cleanup-on-fail - Delete new resources on failed upgradeValue Override Precedence (lowest to highest):
values.yaml in chart)--reuse-values)-f values.yaml)--set key=value)# Basic uninstall
helm uninstall myapp --namespace production
# Uninstall but keep history (allows rollback)
helm uninstall myapp \
--namespace staging \
--keep-history
# Uninstall with timeout
helm uninstall myapp \
--namespace prod \
--timeout 10m \
--wait
Key Flags:
--keep-history - Preserve release history--wait - Wait for resource deletion--timeout - Maximum time to wait for deletion# List releases in namespace
helm list --namespace production
# List all releases across all namespaces
helm list --all-namespaces
# List with additional details
helm list \
--all-namespaces \
--output yaml \
--max 50
# List including uninstalled releases
helm list \
--namespace staging \
--uninstalled
# Filter releases by name pattern
helm list --filter '^my.*' --namespace prod
Key Flags:
--all-namespaces / -A - List releases across all namespaces--all - Show all releases including failed--uninstalled - Show uninstalled releases--deployed - Show only deployed releases (default)--failed - Show only failed releases--pending - Show pending releases--filter - Filter by release name (regex)--max - Maximum number of releases (default 256)# Get release status
helm status myapp --namespace production
# Show deployed resources
helm status myapp \
--namespace prod \
--show-resources
# Show release notes
helm status myapp \
--namespace prod \
--show-desc
# View revision history
helm history myapp --namespace production
# View detailed history
helm history myapp \
--namespace prod \
--output yaml \
--max 10
# Get deployed manifest
helm get manifest myapp --namespace production
# Get deployed values
helm get values myapp --namespace production
# Get all values (including defaults)
helm get values myapp \
--namespace prod \
--all
# Get release metadata
helm get metadata myapp --namespace production
# Get release notes
helm get notes myapp --namespace production
# Get release hooks
helm get hooks myapp --namespace production
# Get everything
helm get all myapp --namespace production
# 1. Add chart repository (if needed)
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 2. Search for chart
helm search repo nginx
# 3. View default values
helm show values bitnami/nginx > default-values.yaml
# 4. Create custom values file
cat > my-values.yaml <<EOF
replicaCount: 3
service:
type: LoadBalancer
ingress:
enabled: true
hostname: myapp.example.com
EOF
# 5. Dry-run to validate
helm install myapp bitnami/nginx \
--namespace production \
--create-namespace \
--values my-values.yaml \
--dry-run --debug
# 6. Install with atomic rollback
helm install myapp bitnami/nginx \
--namespace production \
--create-namespace \
--values my-values.yaml \
--atomic \
--wait \
--timeout 5m
# 7. Verify deployment
helm status myapp --namespace production
kubectl get pods -n production -l app.kubernetes.io/instance=myapp
# 1. Check current values
helm get values myapp --namespace production > current-values.yaml
# 2. Edit values
vim current-values.yaml
# (change replicaCount: 3 → 5)
# 3. Upgrade with new values
helm upgrade myapp bitnami/nginx \
--namespace production \
--values current-values.yaml \
--atomic \
--wait
# 4. Verify upgrade
helm history myapp --namespace production
helm status myapp --namespace production
# 1. Check available versions
helm search repo bitnami/nginx --versions | head -10
# 2. Review changelog for breaking changes
helm show readme bitnami/nginx --version 15.0.0
# 3. Compare values schemas
helm show values bitnami/nginx --version 15.0.0 > new-values.yaml
diff <(helm get values myapp -n prod --all) new-values.yaml
# 4. Upgrade to new version
helm upgrade myapp bitnami/nginx \
--namespace production \
--version 15.0.0 \
--reuse-values \
--atomic \
--wait
# 5. Monitor upgrade
watch kubectl get pods -n production
# 6. Verify new version
helm list --namespace production
# Directory structure:
# charts/myapp/
# values/
# ├── common.yaml # Shared values
# ├── dev.yaml # Dev overrides
# ├── staging.yaml # Staging overrides
# └── production.yaml # Production overrides
# Deploy to dev
helm upgrade --install myapp ./charts/myapp \
--namespace dev \
--create-namespace \
-f values/common.yaml \
-f values/dev.yaml
# Deploy to staging
helm upgrade --install myapp ./charts/myapp \
--namespace staging \
--create-namespace \
-f values/common.yaml \
-f values/staging.yaml
# Deploy to production (with approval gate)
helm upgrade --install myapp ./charts/myapp \
--namespace production \
--create-namespace \
-f values/common.yaml \
-f values/production.yaml \
--atomic \
--wait \
--timeout 10m
✅ DO: Always specify --namespace explicitly
helm install myapp ./chart --namespace production
❌ DON'T: Rely on current kubectl context
helm install myapp ./chart # Namespace may be unexpected
✅ DO: Use --atomic for production deployments
helm upgrade myapp ./chart --namespace prod --atomic --wait
Why: Automatically rolls back on failure, prevents partial deployments
✅ DO: Use multiple values files for layering
helm install myapp ./chart \
-f values/base.yaml \
-f values/production.yaml \
-f values/secrets.yaml
✅ DO: Prefer --values over many --set flags
# Good: values.yaml
helm install myapp ./chart -f values.yaml
# Prefer: values.yaml over many --set flags
helm install myapp ./chart --set a=1 --set b=2 --set c=3
✅ DO: Pin chart versions in production
helm install myapp bitnami/nginx --version 15.0.2 --namespace prod
❌ DON'T: Use floating versions in production
helm install myapp bitnami/nginx --namespace prod # Uses latest
✅ DO: Always dry-run before installing/upgrading
# 1. Lint (if local chart)
helm lint ./mychart
# 2. Template to see rendered manifests
helm template myapp ./mychart -f values.yaml
# 3. Dry-run with debug
helm install myapp ./mychart \
--namespace prod \
-f values.yaml \
--dry-run --debug
# 4. Actual install
helm install myapp ./mychart \
--namespace prod \
-f values.yaml \
--atomic --wait
✅ DO: Limit revision history
helm upgrade myapp ./chart \
--namespace prod \
--history-max 10 # Keep only last 10 revisions
✅ DO: Use --wait for critical deployments
helm upgrade myapp ./chart \
--namespace prod \
--wait \
--timeout 5m # Fail if not ready in 5 minutes
✅ DO: Use consistent, descriptive release names
# Good: environment-specific
helm install myapp-prod ./chart --namespace production
helm install myapp-staging ./chart --namespace staging
# Or: same name, different namespaces
helm install myapp ./chart --namespace production
helm install myapp ./chart --namespace staging
# Check if release exists
helm list --all-namespaces | grep myapp
# If in different namespace, specify correct namespace
helm upgrade myapp ./chart --namespace <correct-namespace>
# If stuck in failed state, uninstall and reinstall
helm uninstall myapp --namespace <namespace>
helm install myapp ./chart --namespace <namespace>
# Increase timeout
helm upgrade myapp ./chart \
--namespace prod \
--wait \
--timeout 15m
# Check pod status manually
kubectl get pods -n prod -l app.kubernetes.io/instance=myapp
kubectl describe pod <pod-name> -n prod
# If stuck, consider force upgrade
helm upgrade myapp ./chart \
--namespace prod \
--force \
--cleanup-on-fail
# Search all namespaces
helm list --all-namespaces | grep myapp
# Check uninstalled releases
helm list --namespace <namespace> --uninstalled
# Check failed releases
helm list --namespace <namespace> --failed
# Check what values were used
helm get values myapp --namespace prod --all
# Compare with expected values
diff <(helm get values myapp -n prod --all) values.yaml
# Upgrade with correct values
helm upgrade myapp ./chart \
--namespace prod \
--reset-values \ # Reset to chart defaults first
-f correct-values.yaml
When using ArgoCD for GitOps:
helm upgradehelm template locally for testinghelm get values/manifest to inspect deployed resources# GitHub Actions example
- name: Deploy with Helm
run: |
helm upgrade --install myapp ./charts/myapp \
--namespace ${{ env.NAMESPACE }} \
--create-namespace \
-f values/common.yaml \
-f values/${{ env.ENVIRONMENT }}.yaml \
--atomic \
--wait \
--timeout 10m
Always ensure correct context:
# Check current context
kubectl config current-context
# Switch context if needed
kubectl config use-context <context-name>
# Or specify kubeconfig
helm install myapp ./chart \
--kubeconfig=/path/to/kubeconfig \
--namespace prod
This skill should be used when the user asks about libraries, frameworks, API references, or needs code examples. Activates for setup questions, code generation involving libraries, or mentions of specific frameworks like React, Vue, Next.js, Prisma, Supabase, etc.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.