Helm包管理器
什么是helm
- Kubernetes 包管理器
- Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。
- Helm 管理名为 chart 的 Kubernetes 包的工具。Helm 可以做以下的事情:
- 从头开始创建新的 chart
- 将 chart 打包成归档(tgz)文件
- 与存储 chart 的仓库进行交互在现有的 Kubernetes 集群中安装和卸载 chart
- 管理与 Helm 一起安装的 chart 的发布周期
helm架构
-
chart 创建 Kubernetes 应用程序所必需的一组信息。
-
config 包含了可以合并到打包的 chart 中的配置信息,用于创建一个可发布的对象。
-
release 是一个与特定配置相结合的 chart 的运行实例。
-
Helm 客户端 是终端用户的命令行客户端。负责以下内容:
本地 chart 开发
管理仓库
管理发布
与 Helm 库建立接口
发送安装的 chart
发送升级或卸载现有发布的请求
- Helm 库 提供执行所有 Helm 操作的逻辑。与 Kubernetes API 服务交互并提供以下功能:
结合 chart 和配置来构建版本
将 chart 安装到 Kubernetes 中,并提供后续发布对象
与 Kubernetes 交互升级和卸载 chart
- 独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。
安装helm
#下载二进制文件
https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz
# 解压(tar -zxvf helm-v3.10.2-linux-amd64.tar.gz)
# 将解压目录下的 helm 程序移动到 usr/local/bin/helm
# 添加阿里云 helm 仓库
常用命令
helm repo
列出、增加、更新、删除 chart 仓库
helm search
使用关键词搜索 chart
helm pull
拉取远程仓库中的 chart 到本地
helm create
在本地创建新的 chart
helm dependency
管理 chart 依赖
helm install
安装 chart
helm list
列出所有 release
helm lint
检查 chart 配置是否有误
helm package
打包本地 chart
helm rollback
回滚 release 到历史版本
helm uninstall
卸载 release
helm upgrade
升级 release
chart详解
- 目录结构
mychart
├── Chart.yaml
├── charts # 该目录保存其他依赖的 chart(子 chart)
├── templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
│ ├── NOTES.txt # 用户运行 helm install 时候的提示信息
│ ├── _helpers.tpl # 用于创建模板时的帮助类
│ ├── deployment.yaml # Kubernetes deployment 配置
│ ├── ingress.yaml # Kubernetes ingress 配置
│ ├── service.yaml # Kubernetes service 配置
│ ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│ └── tests
│ └── test-connection.yaml
└── values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的时候覆盖
Redis Chart 实践
# 修改 helm 源
# 查看默认仓库
helm repo list
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://apphub.aliyuncs.com/stable
helm repo add azure http://mirror.azure.cn/kubernetes/charts
# 搜索 redis chart
helm search repo redis
# 查看安装说明
helm show readme bitnami/redis
# 修改配置安装
# 先将 chart 拉到本地
helm pull bitnami/redis
# 解压后,修改 values.yaml 中的参数
tar -xvf redis-18.19.4.tgz
# 修改 storageClass 为 managed-nfs-storage
# 设置 redis 密码 password
# 修改集群架构 architecture,默认是主从(replication,3个节点),可以修改为 standalone 单机模式
# 修改实例存储大小 persistence.size 为需要的大小
# 修改 service.nodePorts.redis 向外暴露端口,范围 <30000-32767>
# 安装操作
# 创建命名空间
kubectl create namespace redis
# 安装
cd ../
helm install redis ./redis -n redis
# 查看安装情况
# 查看 helm 安装列表
helm list
# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis
# 升级与回滚
# 要想升级 chart 可以修改本地的 chart 配置(values.yaml)并执行:
helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis -n redis
# 使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:
helm rollback <RELEASE> [REVISION] [flags]
# 查看历史
helm history redis
# 回退到上一版本
helm rollback redis
# 回退到指定版本
helm rollback redis 3
# helm 卸载 redis
helm delete redis -n redis