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描述的主文件 |
templates | Kubernetes 资源定义为模板的目录 |
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 的 CRDhelm 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