k8s-helm
SKILL.md
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.yamlvalues-staging.yamlvalues-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