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 架构 

2.1 重要概念

chart:chart 创建 Kubernetes 应用程序所必需的一组信息。

config:config 包含了可以合并到打包的 chart 中的配置信息,用于创建一个可发布的对象。

release:release 是一个与特定配置相结合的 chart 的运行实例。

2.2 组件

Helm 客户端:

Helm 客户端 是终端用户的命令行客户端。负责以下内容:
本地 chart 开发
管理仓库
管理发布
与 Helm 库建立接口
发送安装的 chart
发送升级或卸载现有发布的请求




Helm 库:

Helm 库 提供执行所有 Helm 操作的逻辑。与 Kubernetes API 服务交互并提供以下功能:
结合 chart 和配置来构建版本
将 chart 安装到 Kubernetes 中,并提供后续发布对象
与 Kubernetes 交互升级和卸载 chart
独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。

三、安装 Helm

1.下载二进制文件:https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz

2.解压(tar -zxvf helm-v3.10.2-linux-amd64.tar.gz)

3.将解压目录下的 helm 程序移动到 usr/local/bin/helm

4.添加阿里云 helm 仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add azure http://mirror.azure.cn/kubernetes/charts

四、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 详解

5.1 目录结构

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 的时候覆盖

5.2 Redis chart 实践

5.2.1 搜索 redis chart

# 搜索 redis chart
helm search repo redis

# 查看安装说明
helm show readme bitnami/redis

5.2.2  修改配置安装

# 先将 chart 拉到本地
helm pull bitnami/redis

# 解压后,修改 values.yaml 中的参数
tar -xvf redis-17.4.3.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

5.2.3 查看安装情况

# 查看 helm 安装列表
helm list

# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis

5.2.4 升级与回滚

要想升级 chart 可以修改本地的 chart 配置并执行:
helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis
使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:

helm rollback  [REVISION] [flags]

# 查看历史
helm history redis
# 回退到上一版本
helm rollback redis
# 回退到指定版本
helm rollback redis 3

5.2.5 helm 卸载 redis

helm delete redis -n redis

你可能感兴趣的:(云原生)