随机
Enter 搜索 ↑↓ 切换 Esc 清空

helm

命令

Kubernetes 包管理器

helm

Kubernetes 包管理器

补充说明

Helm 是 Kubernetes 的包管理器,用于管理 Kubernetes 应用的安装、升级、回滚和删除。Helm 使用 Chart 来定义、安装和管理应用。

语法

helm [command] [options]

仓库管理

# 添加 Helm 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable https://charts.helm.sh/stable
helm repo add aliyan https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

# 查看仓库列表
helm repo list
helm repo ls

# 更新仓库索引
helm repo update

# 删除仓库
helm repo remove repo-name

搜索 Chart

# 搜索仓库中的 Chart
helm search repo nginx
helm search repo nginx --versions

# 从 Artifact Hub 搜索
helm search hub nginx

# 查看 Chart 详情
helm show chart bitnami/nginx
helm show readme bitnami/nginx
helm show values bitnami/nginx
helm show all bitnami/nginx

安装管理

# 安装 Chart
helm install my-nginx bitnami/nginx

# 安装时指定命名空间
helm install my-nginx bitnami/nginx -n my-namespace --create-namespace

# 安装时配置参数
helm install my-nginx bitnami/nginx --set service.type=NodePort

# 使用 values 文件安装
helm install my-nginx bitnami/nginx -f values.yaml

# 安装时设置多种参数
helm install my-nginx bitnami/nginx \
  --set replicaCount=3 \
  --set service.type=NodePort \
  --set persistence.enabled=true

升级回滚

# 升级应用
helm upgrade my-nginx bitnami/nginx

# 升级并添加新参数
helm upgrade my-nginx bitnami/nginx --set replicaCount=5

# 升级并安装(推荐)
helm upgrade --install my-nginx bitnami/nginx

# 查看历史版本
helm history my-nginx

# 回滚到上一版本
helm rollback my-nginx

# 回滚到指定版本
helm rollback my-nginx 2

# 更新 values 文件
helm upgrade my-nginx bitnami/nginx -f new-values.yaml

查看状态

# 查看已安装的 Release
helm list
helm ls
helm list -A                    # 所有命名空间
helm list --all-namespaces

# 查看 Release 状态
helm status my-nginx

# 查看 Release 历史
helm history my-nginx

# 查看 Release 的 values
helm get values my-nginx
helm get values my-nginx --all

# 查看 Release 的 manifest
helm get manifest my-nginx

# 查看 Release 的 notes
helm get notes my-nginx

删除应用

# 删除 Release
helm uninstall my-nginx

# 删除时保留历史记录
helm uninstall my-nginx --keep-history

# 强制删除卡住的 Release
kubectl delete secret -l owner=helm,name=my-nginx

创建 Chart

# 创建新 Chart
helm create mychart

# Chart 结构
mychart/
├── Chart.yaml          # Chart 元数据
├── values.yaml         # 默认配置值
├── charts/             # 依赖 Chart
├── templates/          # 模板文件
│   ├── deployment.yaml
│   ├── service.yaml
│   ├── ingress.yaml
│   ├── configmap.yaml
│   └── NOTES.txt
└── templates/tests/    # 测试文件

# 验证 Chart
helm lint mychart

# 打包 Chart
helm package mychart

# 从本地安装
helm install my-nginx ./mychart-0.1.0.tgz

Chart 开发

# Chart.yaml 示例
apiVersion: v2
name: mychart
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "1.0.0"

# 调试模板渲染
helm template my-nginx mychart
helm template my-nginx mychart --debug

# 验证模板语法
helm lint mychart --strict

# 更新依赖
helm dependency update mychart
helm dependency build mychart

常用配置

# values.yaml 常用配置示例
replicaCount: 3

image:
  repository: nginx
  tag: latest
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80

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

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

nodeSelector: {}
tolerations: []
affinity: {}

插件管理

# 安装插件
helm plugin install https://github.com/example/helm-plugin

# 查看已安装插件
helm plugin list

# 更新插件
helm plugin update plugin-name

# 卸载插件
helm plugin uninstall plugin-name

常用命令速查

# 一键安装常用应用
helm install nginx bitnami/nginx --set service.type=NodePort
helm install redis bitnami/redis
helm install mysql bitnami/mysql

# 批量查看状态
helm list -A | grep -E "NAME|nginx"

# 导出 values 文件
helm get values my-nginx -o yaml > my-values.yaml

# 强制重新部署
helm upgrade my-nginx bitnami/nginx --force