Helm Chart Management

Manage Helm charts, releases, and repositories. Use for Helm installations, upgrades, rollbacks, chart development, and release management.

Rohit Ghumare

@rohitg00

Install

$ openclaw skills install @rohitg00/k8s-helm

Helm Chart Management

Comprehensive Helm v3 operations using kubectl-mcp-server's 16 Helm tools.

Requires the helm_dev toolset: start kubectl-mcp-server with --toolsets default,helm_dev (or MCP_TOOLSETS=default,helm_dev).

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

PriorityRuleImpactTools
1Template before install (dry run)CRITICALhelm_template
2Check existing releases firstCRITICALhelm_list
3Lint charts before packagingHIGHhelm_lint
4Note revision before upgradeHIGHhelm_history
5Verify values after upgradeMEDIUMhelm_get
6Update repos before searchLOWhelm_repo_update

Quick Reference

TaskToolExample
Install chartinstall_helm_chartinstall_helm_chart(name, chart, namespace)
Upgrade releaseupgrade_helm_chartupgrade_helm_chart(name, chart, namespace, values)
Rollbackhelm_rollbackhelm_rollback(name, namespace, revision)
List releaseshelm_listhelm_list(namespace)
Get valueshelm_gethelm_get(name, namespace)
Template (dry run)helm_templatehelm_template(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_chart(
    name="my-release",
    chart="bitnami/nginx",
    namespace="web",
    values={"replicaCount": 5}
)

Rollback Release

helm_rollback(
    release_name="my-release",
    namespace="web",
    revision=1
)

Uninstall Release

uninstall_helm_chart(name="my-release", namespace="web")

Release Management

List Releases

helm_list(namespace="web")

helm_list()

Get Release Details

helm_status(release_name="my-release", namespace="web")

Release History

helm_history(release_name="my-release", namespace="web")

Get Release Values

helm_get(release_name="my-release", namespace="web")

Get Release Manifest

helm_get(what="manifest", release_name="my-release", namespace="web")

Repository Management

Add Repository

helm_repo_add(name="bitnami", url="https://charts.bitnami.com/bitnami")

List Repositories

helm_repo_list()

Update Repositories

helm_repo_update()

Search Charts

helm_search_repo(keyword="nginx")

helm_search_repo(keyword="bitnami/postgres")

Chart Development

Template Chart (Dry Run)

helm_template(
    name="my-release",
    chart="./my-chart",
    namespace="test",
    values={"key": "value"}
)

Lint Chart

helm_lint(chart_path="./my-chart")

Package Chart

helm_package(chart_path="./my-chart", destination="./packages")

Common Workflows

New Application Deployment

helm_repo_add(name="bitnami", url="...")

helm_search_repo(keyword="postgresql")

helm_template(...)

install_helm_chart(...)

helm_status(...)

Upgrade with Rollback Safety

helm_history(name, namespace)

upgrade_helm_chart(name, chart, namespace, values)

helm_rollback(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

helm_status(name, namespace)

kubectl_get(resource_type="pods", namespace, label_selector="app.kubernetes.io/instance=<release>")

Failed Installation

helm_history(name, namespace)

kubectl_get(resource_type="events", namespace)

uninstall_helm_chart(name, namespace)

Values Not Applied

helm_get(name, namespace)

helm_template(...)

upgrade_helm_chart(...)

Scripts

See scripts/lint-chart.sh for automated chart validation.

Best Practices

  1. Always Template First

    helm_template(name, chart, namespace, values)
    
  2. Use Semantic Versioning

    helm_show(chart="bitnami/nginx", what="chart", version="1.2.3")
    
  3. Store Values in Git

    • values-dev.yaml
    • values-staging.yaml
    • values-prod.yaml
  4. 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

Top skills in this category