Helm 是一个 Kubernetes 的包管理器,类似 openSUSE 的 zypper 或 CentOS 的 yum,可以方便的在 Kubernetes 中部署应用。
Helm 相关概念如下:
helm
: Kubernetes 包管理器,类似 openSUSE 中的 zypper
repository
: 存储部署包的仓库,类似 openSUSE 中的 repo
chart
: 部署包,可重复使用,类似 openSUSE 中各个应用的安装包
release
: 使用 Helm 在 Kubernetes 中部署的应用,同一个部署包(chart),可以部署多个应用副本(release),每个应用可独立管理
zypper install -y helm
yum install -y helm
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
apt-get install apt-transport-https --yes
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
apt-get update
apt-get install helm
1. 创建相关目录
mkdir -pv /opt/helm/bin
2. 下载安装包
此处示例主机为
x86_64
架构,因此使用amd64
规格二进制包。实际部署时,请使用和主机 CPU 架构相匹配的二进制包。
cd /opt/helm/bin
wget https://get.helm.sh/helm-v3.18.0-linux-amd64.tar.gz
3. 安装 Helm
cd /opt/helm/bin
tar zxvf helm-v3.18.0-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.18.0", GitCommit:"cc58e3f5a3aa615c6a86275e6f4444b5fdd3cc4e", GitTreeState:"clean", GoVersion:"go1.24.3"}
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
1. 创建 chart 模板
helm create chart名称
示例:
helm create wikijs
2. 检查 chart 结构
一般来说,新创建的 chart 结构如下:
.
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── service.yaml
│ ├── serviceaccount.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
其中:
Chart.yaml
: 定义此 Chart 的基本信息values.yaml
: 定义此 Chart 中可用的配置项charts
: 包含此 Chart 依赖的其他 Chartstemplates
: 包含此 Chart 使用到的 Kubernetes yaml 模板文件
NOTES.txt
: 包含此 Chart 简要使用说明的纯文本文件3. 自定义 Kubernetes Yaml 模板
根据需求,自定义 templates
目录中的相关 Kubernetes Yaml 模板文件。
4. 打包 Chart
helm package chart名称
示例:
helm package wikijs
5. 推送 Chart 至仓库
将自定义 Chart 包放置在仓库目录,然后重新生成 index.yaml
即可。
helm repo index chart名称
示例:
helm repo index wikijs