helm

Helm Chart 开发、仓库管理、版本升级等技能。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "helm" with this command: npx skills add chaterm/terminal-skills/chaterm-terminal-skills-helm

Helm 包管理

概述

Helm Chart 开发、仓库管理、版本升级等技能。

基础命令

仓库管理

添加仓库

helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add stable https://charts.helm.sh/stable

更新仓库

helm repo update

列出仓库

helm repo list

搜索 Chart

helm search repo nginx helm search hub nginx # 搜索 Artifact Hub

删除仓库

helm repo remove bitnami

安装与卸载

安装 Chart

helm install my-release bitnami/nginx helm install my-release bitnami/nginx -n namespace --create-namespace

指定 values

helm install my-release bitnami/nginx -f values.yaml helm install my-release bitnami/nginx --set replicaCount=3

模拟安装(不实际执行)

helm install my-release bitnami/nginx --dry-run

生成模板

helm template my-release bitnami/nginx

卸载

helm uninstall my-release helm uninstall my-release -n namespace

查看与管理

列出已安装的 Release

helm list helm list -A # 所有命名空间 helm list -n namespace

查看 Release 状态

helm status my-release

查看 Release 历史

helm history my-release

获取 Release 的 values

helm get values my-release helm get values my-release --all # 包含默认值

获取 Release 的 manifest

helm get manifest my-release

获取 Release 的 notes

helm get notes my-release

升级与回滚

升级 Release

helm upgrade my-release bitnami/nginx helm upgrade my-release bitnami/nginx -f values.yaml helm upgrade my-release bitnami/nginx --set replicaCount=5

安装或升级

helm upgrade --install my-release bitnami/nginx

回滚

helm rollback my-release # 回滚到上一版本 helm rollback my-release 2 # 回滚到指定版本

查看历史

helm history my-release

Chart 开发

创建 Chart

创建新 Chart

helm create mychart

Chart 目录结构

mychart/ ├── Chart.yaml # Chart 元数据 ├── values.yaml # 默认配置值 ├── charts/ # 依赖 Chart ├── templates/ # 模板文件 │ ├── deployment.yaml │ ├── service.yaml │ ├── ingress.yaml │ ├── _helpers.tpl # 模板助手 │ ├── NOTES.txt # 安装说明 │ └── tests/ └── .helmignore

Chart.yaml

apiVersion: v2 name: mychart description: A Helm chart for my application type: application version: 0.1.0 appVersion: "1.0.0" keywords:

values.yaml

replicaCount: 1

image: repository: nginx tag: "latest" pullPolicy: IfNotPresent

service: type: ClusterIP port: 80

ingress: enabled: false className: nginx hosts: - host: example.com paths: - path: / pathType: Prefix

resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128Mi

postgresql: enabled: true

模板语法

templates/deployment.yaml

apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "mychart.fullname" . }} labels: {{- include "mychart.labels" . | nindent 4 }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: {{- include "mychart.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- include "mychart.selectorLabels" . | nindent 8 }} spec: containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - containerPort: 80 {{- if .Values.resources }} resources: {{- toYaml .Values.resources | nindent 10 }} {{- end }}

模板助手

templates/_helpers.tpl

{{- define "mychart.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }}

{{- define "mychart.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} {{- $name := default .Chart.Name .Values.nameOverride }} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} {{- end }} {{- end }}

{{- define "mychart.labels" -}} helm.sh/chart: {{ include "mychart.chart" . }} app.kubernetes.io/name: {{ include "mychart.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }}

Chart 打包与发布

验证 Chart

helm lint mychart/

打包 Chart

helm package mychart/

生成索引

helm repo index . --url https://example.com/charts

推送到 OCI 仓库

helm push mychart-0.1.0.tgz oci://registry.example.com/charts

依赖管理

更新依赖

helm dependency update mychart/

构建依赖

helm dependency build mychart/

列出依赖

helm dependency list mychart/

常见场景

场景 1:多环境部署

不同环境的 values 文件

helm upgrade --install my-release ./mychart
-f values.yaml
-f values-prod.yaml
-n production

场景 2:条件渲染

templates/ingress.yaml

{{- if .Values.ingress.enabled -}} apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ include "mychart.fullname" . }} spec:

...

{{- end }}

场景 3:循环渲染

{{- range .Values.ingress.hosts }}

  • host: {{ .host | quote }} http: paths: {{- range .paths }}
    • path: {{ .path }} pathType: {{ .pathType }} backend: service: name: {{ include "mychart.fullname" $ }} port: number: {{ $.Values.service.port }} {{- end }} {{- end }}

场景 4:调试模板

渲染模板但不安装

helm template my-release ./mychart -f values.yaml

调试特定模板

helm template my-release ./mychart --show-only templates/deployment.yaml

使用 --debug 查看详细信息

helm install my-release ./mychart --dry-run --debug

故障排查

问题 排查方法

模板渲染错误 helm template --debug

安装失败 helm status , kubectl describe

升级失败 helm history , helm rollback

依赖问题 helm dependency update

查看渲染后的 manifest

helm get manifest my-release

查看安装 hooks

helm get hooks my-release

强制替换资源

helm upgrade my-release ./mychart --force

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

cron

No summary provided by upstream source.

Repository SourceNeeds Review
General

system-admin

No summary provided by upstream source.

Repository SourceNeeds Review
General

systemd

No summary provided by upstream source.

Repository SourceNeeds Review
General

vpn

No summary provided by upstream source.

Repository SourceNeeds Review