Helm Chart Management
Comprehensive Helm v3 operations using kubectl-mcp-server's 16 Helm tools.
When to Apply
Use this skill when:
-
User mentions: "helm", "chart", "release", "values", "repository"
-
Operations: installing charts, upgrading releases, rollbacks
-
Keywords: "package", "template", "lint", "repo add"
Priority Rules
Priority Rule Impact Tools
1 Template before install (dry run) CRITICAL template_helm_chart
2 Check existing releases first CRITICAL list_helm_releases
3 Lint charts before packaging HIGH lint_helm_chart
4 Note revision before upgrade HIGH get_helm_history
5 Verify values after upgrade MEDIUM get_helm_values
6 Update repos before search LOW update_helm_repos
Quick Reference
Task Tool Example
Install chart install_helm_chart
install_helm_chart(name, chart, namespace)
Upgrade release upgrade_helm_release
upgrade_helm_release(name, chart, namespace, values)
Rollback rollback_helm_release
rollback_helm_release(name, namespace, revision)
List releases list_helm_releases
list_helm_releases(namespace)
Get values get_helm_values
get_helm_values(name, namespace)
Template (dry run) template_helm_chart
template_helm_chart(name, chart, namespace)
Install Chart
install_helm_chart( name="my-release", chart="bitnami/nginx", namespace="web", values={"replicaCount": 3, "service.type": "LoadBalancer"} )
Upgrade Release
upgrade_helm_release( name="my-release", chart="bitnami/nginx", namespace="web", values={"replicaCount": 5} )
Rollback Release
rollback_helm_release( name="my-release", namespace="web", revision=1 )
Uninstall Release
uninstall_helm_chart(name="my-release", namespace="web")
Release Management
List Releases
list_helm_releases(namespace="web")
list_helm_releases()
Get Release Details
get_helm_release(name="my-release", namespace="web")
Release History
get_helm_history(name="my-release", namespace="web")
Get Release Values
get_helm_values(name="my-release", namespace="web")
Get Release Manifest
get_helm_manifest(name="my-release", namespace="web")
Repository Management
Add Repository
add_helm_repo(name="bitnami", url="https://charts.bitnami.com/bitnami")
List Repositories
list_helm_repos()
Update Repositories
update_helm_repos()
Search Charts
search_helm_charts(keyword="nginx")
search_helm_charts(keyword="postgres", repo="bitnami")
Chart Development
Template Chart (Dry Run)
template_helm_chart( name="my-release", chart="./my-chart", namespace="test", values={"key": "value"} )
Lint Chart
lint_helm_chart(chart="./my-chart")
Package Chart
package_helm_chart(chart="./my-chart", destination="./packages")
Common Workflows
New Application Deployment
add_helm_repo(name="bitnami", url="...")
search_helm_charts(keyword="postgresql")
template_helm_chart(...)
install_helm_chart(...)
get_helm_release(...)
Upgrade with Rollback Safety
get_helm_history(name, namespace)
upgrade_helm_release(name, chart, namespace, values)
rollback_helm_release(name, namespace, revision)
Multi-Environment Deployment
install_helm_chart( name="app", chart="./charts/app", namespace="dev", values={"replicas": 1}, context="development" )
install_helm_chart( name="app", chart="./charts/app", namespace="staging", values={"replicas": 2}, context="staging" )
install_helm_chart( name="app", chart="./charts/app", namespace="prod", values={"replicas": 5}, context="production" )
Chart Structure
See references/CHART-STRUCTURE.md for best practices on organizing Helm charts.
Troubleshooting
See TROUBLESHOOTING.md for common issues.
Release Stuck in Pending
get_helm_release(name, namespace)
get_pods(namespace, label_selector="app.kubernetes.io/instance=<release>")
Failed Installation
get_helm_history(name, namespace)
get_events(namespace)
uninstall_helm_chart(name, namespace)
Values Not Applied
get_helm_values(name, namespace)
template_helm_chart(...)
upgrade_helm_release(...)
Scripts
See scripts/lint-chart.sh for automated chart validation.
Best Practices
Always Template First
template_helm_chart(name, chart, namespace, values)
Use Semantic Versioning
install_helm_chart(..., version="1.2.3")
Store Values in Git
-
values-dev.yaml
-
values-staging.yaml
-
values-prod.yaml
Namespace Isolation
-
One namespace per release
-
Easier cleanup and RBAC
Prerequisites
- Helm CLI: Required for all Helm operations curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
Related Skills
-
k8s-deploy - Deployment strategies
-
k8s-gitops - GitOps Helm releases