Skip to content

1. Helm命令

官方

helm --help 通过help获取更多解释

1.1 添加仓库

helm repo add

bash
[root@kube-master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
[root@kube-master ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

helm repo list

bash
[root@kube-master ~]# helm repo list
NAME   	URL
bitnami	https://charts.bitnami.com/bitnami
[root@kube-master ~]# helm repo list
NAME   	URL
bitnami	https://charts.bitnami.com/bitnami

helm repo update

bash
helm repo update repo_name
helm repo update repo_name

helm repo remove

bash
 helm repo remove repo_name
 helm repo remove repo_name

1.2 创建

helm create

bash
[root@kube-master ~]# helm create demo

[root@kube-master ~]# tree demo
demo
├── charts                 # 依赖其他包的charts文件
├── Chart.yaml			   # chart的描述文件,包括ico地址,版本信息等
├── templates              # 存放k8s模板文件目录
│   ├── deployment.yaml    # Kubernetes deployment 配置
│   ├── _helpers.tpl       # 下划线开头的文件为公共文件,可以被其他模板引用
│   ├── hpa.yaml           # #水平 pod 自动扩缩容 go 模板文件
│   ├── ingress.yaml		# Kubernetes ingress 配置
│   ├── NOTES.txt           # 用户运行 helm install 时候的提示信息
│   ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│   ├── service.yaml        # Kubernetes service 配置
│   └── tests				# test
│       └── test-connection.yaml
└── values.yaml             #模板的值文件,这些值会在安装时应用到 GO 模板生成部署文件
[root@kube-master ~]# helm create demo

[root@kube-master ~]# tree demo
demo
├── charts                 # 依赖其他包的charts文件
├── Chart.yaml			   # chart的描述文件,包括ico地址,版本信息等
├── templates              # 存放k8s模板文件目录
│   ├── deployment.yaml    # Kubernetes deployment 配置
│   ├── _helpers.tpl       # 下划线开头的文件为公共文件,可以被其他模板引用
│   ├── hpa.yaml           # #水平 pod 自动扩缩容 go 模板文件
│   ├── ingress.yaml		# Kubernetes ingress 配置
│   ├── NOTES.txt           # 用户运行 helm install 时候的提示信息
│   ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│   ├── service.yaml        # Kubernetes service 配置
│   └── tests				# test
│       └── test-connection.yaml
└── values.yaml             #模板的值文件,这些值会在安装时应用到 GO 模板生成部署文件

目录结构介绍

目录说明
charts可选目录,可能包含子chart
Chart.yaml包含chart描述的主文件
templatesKubernetes 资源定义为模板的目录
values.yaml定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的时候覆盖
.helmignore定义打包时要忽略的模式的地方(概念上与 .gitignore 类似)

helm lint

检查语法是否正确

bash
[root@kube-master ~]# helm lint ./demo
==> Linting ./demo
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed
[root@kube-master ~]# helm lint ./demo
==> Linting ./demo
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed

1.3 下载

helm pull

bash
helm pull bitnami/nginx
helm pull bitnami/nginx

1.4 查询

helm ls

bash
[root@kube-master ~]# helm ls --all
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION
[root@kube-master ~]# helm ls --all
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

helm list

bash
#显示某个命名空间下的所有 Release
[root@kube-master ~]# helm  list
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION
#显示某个命名空间下的所有 Release
[root@kube-master ~]# helm  list
NAME	NAMESPACE	REVISION	UPDATED	STATUS	CHART	APP VERSION

helm status

bash
#查询某个 Release 的状态信息
helm status my-nginx
#查询某个 Release 的状态信息
helm status my-nginx

helm get

获取某个 Release 的扩展信息,包括:

  • helm get hooks - 获取 Release 关联的钩子信息
  • helm get manifest - 获取 Release 的清单信息
  • helm get notes - 获取 Release 的注释
  • helm get values - 获取 Release 的 values 文件
  • helm get all - 获取 Release 的所有信息

helm history

bash
helm history my-nginx
helm history my-nginx

helm search hub

ArtifactHub 中搜索 Chart

bash
#从公共仓库
helm search hub nginx
#从公共仓库
helm search hub nginx

helm search repo

bash
#从添加仓库中搜索
helm search repo nginx

#查看对应repo的url
helm search hub nginx --list-repo-url

#以设置每一列的宽度,这样可以显示所有的描述信息
helm search hub nginx --max-col-width 100
#从添加仓库中搜索
helm search repo nginx

#查看对应repo的url
helm search hub nginx --list-repo-url

#以设置每一列的宽度,这样可以显示所有的描述信息
helm search hub nginx --max-col-width 100

helm show

该命令用于显示 Chart 的基本信息,包括:

  • helm show chart - 显示 Chart 定义,实际上就是 Chart.yaml 文件的内容
  • helm show crds - 显示 Chart 的 CRD
  • helm show readme - 显示 Chart 的 README.md 文件中的内容
  • helm show values - 显示 Chart 的 values.yaml 文件中的内容
  • helm show all - 显示 Chart 的所有信息

1.5 安装

Helm的执行安装顺序

Helm按照以下顺序安装资源:

  • Namespace
  • NetworkPolicy
  • ResourceQuota
  • LimitRange
  • PodSecurityPolicy
  • PodDisruptionBudget
  • ServiceAccount
  • Secret
  • SecretList
  • ConfigMap
  • StorageClass
  • PersistentVolume
  • PersistentVolumeClaim
  • CustomResourceDefinition
  • ClusterRole
  • ClusterRoleList
  • ClusterRoleBinding
  • ClusterRoleBindingList
  • Role
  • RoleList
  • RoleBinding
  • RoleBindingList
  • Service
  • DaemonSet
  • Pod
  • ReplicationController
  • ReplicaSet
  • Deployment
  • HorizontalPodAutoscaler
  • StatefulSet
  • Job
  • CronJob
  • Ingress
  • APIService

1.6 更新

helm upgrade

格式:

bash
helm upgrade [RELEASE] [CHART] [flags]
helm upgrade [RELEASE] [CHART] [flags]

指定'--values'/'-f'参数

可以多次指定'--values'/'-f'参数,最后(最右边)指定的文件优先级最高。比如如果myvalues.yaml和override.yaml同时包含了名为 'Test'的key,override.yaml中的设置会优先使用:

helm upgrade -f myvalues.yaml -f override.yaml redis ./redis
helm upgrade -f myvalues.yaml -f override.yaml redis ./redis

指定'--set'参数

可以多次指定'--set'参数,最后(最右边)指定的优先级最高。比如'bar' 和 'newbar'都设置了一个名为'foo'的可以, 'newbar'的值会优先使用:

helm upgrade --set foo=bar --set foo=newbar redis ./redis
helm upgrade --set foo=bar --set foo=newbar redis ./redis

案例

修改nginx镜像版本为1.27.0

helm upgrade my-nginx nginx-helm-1.0.0.tgz --set image.tag=1.27.0
helm upgrade my-nginx nginx-helm-1.0.0.tgz --set image.tag=1.27.0

1.7 回滚

helm rollback

查看发布历史

bash
#查看
[root@kube-master ~]# helm list
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART     	APP VERSION
demo	default  	3       	2024-07-16 18:06:26.685169771 +0800 CST	deployed	demo-1.0.0	v1

#查看历史发布
[root@kube-master ~]# helm history demo
REVISION	UPDATED                 	STATUS    	CHART     	APP VERSION	DESCRIPTION
1       	Tue Jul 16 18:03:50 2024	superseded	demo-1.0.0	v1         	Install complete
2       	Tue Jul 16 18:04:14 2024	superseded	demo-2.0.0	v2         	Upgrade complete
3       	Tue Jul 16 18:06:26 2024	deployed  	demo-1.0.0	v1         	Rollback to 1
#查看
[root@kube-master ~]# helm list
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART     	APP VERSION
demo	default  	3       	2024-07-16 18:06:26.685169771 +0800 CST	deployed	demo-1.0.0	v1

#查看历史发布
[root@kube-master ~]# helm history demo
REVISION	UPDATED                 	STATUS    	CHART     	APP VERSION	DESCRIPTION
1       	Tue Jul 16 18:03:50 2024	superseded	demo-1.0.0	v1         	Install complete
2       	Tue Jul 16 18:04:14 2024	superseded	demo-2.0.0	v2         	Upgrade complete
3       	Tue Jul 16 18:06:26 2024	deployed  	demo-1.0.0	v1         	Rollback to 1

回滚到第一个版本

bash
helm rollback <name> <REVISION>
helm rollback <name> <REVISION>

1.8 模版渲染

本质就是以yaml文件查看内容

yaml
[root@kube-master ~]# helm template ./demo
---
# Source: demo/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: release-name-demo
  labels:
    helm.sh/chart: demo-0.1.0
    app.kubernetes.io/name: demo
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true
[root@kube-master ~]# helm template ./demo
---
# Source: demo/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: release-name-demo
  labels:
    helm.sh/chart: demo-0.1.0
    app.kubernetes.io/name: demo
    app.kubernetes.io/instance: release-name
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
automountServiceAccountToken: true

1.9 卸载 Release

bash
#删除
helm uninstall my-nginx
#删除
helm uninstall my-nginx