Helm 包管理器
1.K8S基础2.搭建 Kubernetes 集群 —— 搭建方案 kubeadm3.搭建 Kubernetes 集群 —— 命令行工具 kubectl4.搭建 Kubernetes 集群 —— API 概述5.深入Pod —— 配置文件6.深入Pod —— 探针7.深入Pod —— 生命周期 及 PreStop事件的应用8.资源调度 —— Label 和 Selector:标签和选择器9.资源调度 —— Deployment(针对部署的无状态应用)10.资源调度 —— StatefulSet(针对部署的有状态应用)11.资源调度 —— DaemonSet:守护进程应用场景(Fluent日志收集程序)12.资源调度 —— HPA:Pod基于负载指标自动水平扩容 / 缩容13.服务发现 —— Service(主要用于服务内的网络共享)14.服务发现 —— Ingress(用于外部服务的发现和统一入口)15.配置与存储 —— 配置管理16.配置与存储 —— 持久化存储17.高级调度 —— CronJob计划任务、初始化容器 InitContainer18.高级调度 —— 污点、容忍19.高级调度 —— 亲和力(Affinity)20.身份认证与权限
21.Helm 包管理器
一、什么是 Helm?
Kubernetes 包管理器
Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。
Helm 管理名为 chart 的 Kubernetes 包的工具。Helm 可以做以下的事情:
- 从头开始创建新的 chart
- 将 chart 打包成归档(tgz)文件
- 与存储 chart 的仓库进行交互
- 在现有的 Kubernetes 集群中安装和卸载 chart
- 管理与 Helm 一起安装的 chart 的发布周期
对于Helm,有三个重要的概念:
- chart:创建Kubernetes应用程序所必需的一组信息。service/deployment/job等都封装到一起了,直接执行就行
- config:包含了可以合并到打包的chart中的配置信息,用于创建一个可发布的对象。
- release:是一个与特定配置相结合的chart的运行实例。
二、Helm 架构
一)重要概念
1、chart
chart 创建 Kubernetes 应用程序所必需的一组信息。
2、config
config 包含了可以合并到打包的 chart 中的配置信息,用于创建一个可发布的对象。
3、release
release 是一个与特定配置相结合的 chart 的运行实例。
二)组件
1、Helm 客户端
Helm 客户端 是终端用户的命令行客户端。负责以下内容:
- 本地 chart 开发
- 管理仓库
- 管理发布
- 与 Helm 库建立接口
- 发送安装的 chart
- 发送升级或卸载现有发布的请求
2、Helm 库
Helm 库 提供执行所有 Helm 操作的逻辑。与 Kubernetes API 服务交互并提供以下功能:
- 结合 chart 和配置来构建版本
- 将 chart 安装到 Kubernetes 中,并提供后续发布对象
- 与 Kubernetes 交互升级和卸载 chart
独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。
三、安装 Helm
https://helm.sh/docs/intro/install
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 的常用命令
# 1、helm repo
列出、增加、更新、删除 chart 仓库
helm repo list
# 2、helm search
使用关键词搜索 chart
helm search repo redis
helm search hub redis
# 3、helm pull
拉取远程仓库中的 chart 到本地
# 4、helm create
在本地创建新的 chart
# 5、helm dependency
管理 chart 依赖
# 6、helm install
安装 chart
# 7、helm list
列出所有 release
# 8、helm lint
检查 chart 配置是否有误
# 9、helm package
打包本地 chart
# 10、helm rollback
回滚 release 到历史版本
# 11、helm uninstall
卸载 release
# 12、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 实践
1、修改 helm 源
# 查看默认仓库
helm repo list
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable https://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://apphub.aliyuncs.com/stable
helm repo add azure http://mirror.azure.cn/kubernetes/charts
2、搜索 redis chart
# 搜索 redis chart
helm search repo redis
# 查看安装说明
helm show readme bitnami/redis
3、修改配置安装
# 先将 chart 拉到本地(这里下载的是chart包哈!!!不是tar包)
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
4、查看安装情况
# 查看 helm 安装列表
helm list
# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis
5、升级与回滚
要想升级 chart 可以修改本地的 chart 配置并执行:
helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis
使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:
helm rollback <RELEASE> [REVISION] [flags]
# 查看历史
helm history redis
# 回退到上一版本
helm rollback redis
# 回退到指定版本
helm rollback redis 3
6、helm 卸载 redis
helm delete redis -n redis
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)