Helm 是一个 Kubernetes 的包管理器,类似 openSUSE 的 zypper 或 CentOS 的 yum,可以方便的在 Kubernetes 中部署应用。
Helm 相关概念如下:
helm
: Kubernetes 包管理器,类似 openSUSE 中的 zypper
repository
: 存储部署包的仓库,类似 openSUSE 中的 repo
chart
: 部署包,可重复使用,类似 openSUSE 中各个应用的安装包
release
: 使用 Helm 在 Kubernetes 中部署的应用,同一个部署包(chart),可以部署多个应用副本(release),每个应用可独立管理
1. 创建相关目录
mkdir -pv /opt/helm/bin
2. 下载安装包
此处示例主机为
x86_64
架构,因此使用amd64
规格二进制包。实际部署时,请使用和主机 CPU 架构相匹配的二进制包。
cd /opt/helm/bin
wget https://get.helm.sh/helm-v3.17.3-linux-amd64.tar.gz
3. 安装 Helm
cd /opt/helm/bin
tar zxvf helm-v3.17.3-linux-amd64.tar.gz -C /opt/helm/bin --strip-components 1
4. 配置环境变量
此处示例 Helm 的部署目录为
/opt/helm/bin
,实际请按需修改。
~/.bashrc
文件vim ~/.bashrc
# Helm Env Begin
export HELM_HOME=/opt/helm/bin
export PATH=$PATH:$HELM_HOME
# Helm Env End
source ~/.bashrc
/etc/profile
文件vim /etc/profile
# Helm Env Begin
export HELM_HOME=/opt/helm/bin
export PATH=$PATH:$HELM_HOME
# Helm Env End
source /etc/profile
5. 验证是否安装成功
helm version
正常时的返回示例如下:
version.BuildInfo{Version:"v3.17.2", GitCommit:"cc0bbbd6d6276b83880042c1ecb34087e84d41eb", GitTreeState:"clean", GoVersion:"go1.23.7"}
helm --help
默认情况下, Helm 安装完毕之后,默认配置了官方仓库(即 https://artifacthub.io),若需使用其他仓库中的 chart,则需要手动配置仓库,命令如下:
helm repo add 仓库名称 仓库地址
示例如下:
helm repo add stable https://charts.helm.sh/stable
常用的 Helm 仓库有:
helm repo list
或:
helm repo ls
helm repo add 仓库名称 仓库地址
示例:
helm repo add stable https://charts.helm.sh/stable
helm repo update [仓库名称(可选)]
示例:
helm repo update
helm repo update stable
helm repo remove 仓库名称(多个仓库时用空格隔开)
示例:
helm repo remove stable
helm repo remove stable incubator
helm search hub 包名称
示例:
helm search hub mysql
helm search repo 包名称
示例:
helm search repo mysql
helm pull 包名称
示例:
helm pull stable/mysql
helm install 应用名称 包名称
可选选项:
--generate-name
: 生成随机应用名称示例:
helm install mysql1 stable/mysql
1. 获取配置文件
helm show values 包名称 > 自定义配置文件名称
示例:
helm show values stable/mysql > mysql_values.yaml
2. 按需修改相关配置
vim mysql_values.yaml
## mysql image version
## ref: https://hub.docker.com/r/library/mysql/tags/
##
image: "mysql"
imageTag: "5.7.30"
strategy:
type: Recreate
busybox:
image: "busybox"
tag: "1.32"
testFramework:
enabled: true
image: "bats/bats"
tag: "1.2.1"
imagePullPolicy: IfNotPresent
securityContext: {}
......
3. 使用自定义配置文件安装
helm install -f 配置文件 应用名称 包名称
示例:
helm install -f mysql_values.yaml mysql1 stable/mysql
或
helm install -f mysql_values.yaml stable/mysql --generate-name
上面使用配置文件的方式自定义配置,若需修改的配置项较少,可直接使用
--set
传值
helm install --set 配置项名称=配置项值 应用名称 包名称
示例:
helm install --set imageTag=5.7.44 mysql2 stable/mysql
helm list
helm status 应用名称
示例:
helm status mysql1
helm get values 应用名称
示例:
helm get values mysql1
helm history 应用名称
示例:
helm history mysql1
helm upgrade -f 配置文件 应用名称 包名称
示例:
helm upgrade -f mysql_values.yaml mysql1 stable/mysql
helm rollback 应用名称 需要回滚到的版本号
示例:
helm rollback mysql1 1
helm uninstall 应用名称
示例:
helm uninstall mysql1