当前位置: 首页 > news >正文

Kubernetes包管理利器:Helm核心功能与架构解析指南

文章目录

  • 前言
  • 1、Helm用途
    • Helm具有如下功能:
    • 使用Helm可以完成以下事情:
  • 2、Helm组件及相关术语
    • 包管理工具:
    • 命令介绍
  • 3、组件架构
    • helm客户端
    • tiller服务端
  • 4、工作原理
    • Chart Install 过程:
    • Chart Update过程:
    • Chart Rollback
    • Chart处理依赖

#作者:程宏斌

前言

helm是基于kubernetes 的包管理器。它之于 kubernetes 就如 yum 之于 centos,pip 之于 python,npm 之于 javascript
那 helm 的引入对于管理集群有哪些帮助呢?
更方便地部署基础设施,如 gitlab,postgres,prometheus,grafana 等

更方便地部署自己的应用,为公司内部的项目配置 Chart,使用 helm 结合 CI,在 k8s 中部署应用一行命令般简单

1、Helm用途

Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
做为Kubernetes的一个包管理工具,用来管理charts——预先配置好的安装包资源,有点类似于Ubuntu的APT和CentOS中的yum。

Helm具有如下功能:

创建新的chart
chart打包成tgz格式
上传chart到chart仓库或从仓库中下载chart
在Kubernetes集群中安装或卸载chart
管理用Helm安装的chart的发布周期

使用Helm可以完成以下事情:

管理Kubernetes manifest files
管理Helm安装包charts
基于chart的Kubernetes应用分发

2、Helm组件及相关术语

开始接触Helm时遇到的一个常见问题就是Helm中的一些概念和术语非常让人迷惑,我开始学习Helm就遇到这个问题。
因此我们先了解一下Helm的这些相关概念和术语。

包管理工具:

  • Helm: Kubernetes的应用打包工具,也是命令行工具的名称。
  • Helm CLI:是 Helm 客户端,可以在本地执行
  • Tiller: Helm的服务端,部署在Kubernetes集群中,用于处理Helm的相关命令。
  • helm的作用:像centos7中的yum命令一样,管理软件包,只不过helm这儿管理的是在k8s上安装的各种容器。
  • tiller的作用:像centos7的软件仓库一样,简单说类似于/etc/yum.repos.d目录下的xxx.repo。
  • Repoistory: Helm的软件仓库,repository本质上是一个web服务器,该服务器保存了chart软件包以供下载,并有提供一个该repository的chart包的清单文件以供查询。在使用时,Helm可以对接多个不同的Repository。
    Charts:是一个Helm的程序包,它包含了运行一个kubernetes应用程序所需要的镜像、依赖关系和资源定义等。
  • Release:应用程序运行Charts之后,得到的一个实例。

需要特别注意的是, Helm中提到的Release和我们通常概念中的版本有所不同,这里的Release可以理解为Helm使用Chart包部署的一个应用实例。
其实Helm中的Release叫做Deployment更合适。估计因为Deployment这个概念已经被Kubernetes使用了,因此Helm才采用了Release这个术语。

命令介绍

[root@master ~]# helm search
//查看可用的Charts包
[root@master ~]# helm inspect  stable/redis
//查看stable/redis包的详细信息
[root@master mysql]# helm fetch stable/mysql
//直接下载stable/mysql的chart包
[root@master ~]# helm install stable/redis -n redis --dry-run 
//基于stable/redis包运行一个名为redis的服务(把--dry-run去掉之后相当于安装了一个服务)
[root@master ~]# helm list
//查看安装的服务
[root@master ~]# helm delete redis
//删除这个服务
[root@master mysql]# helm upgrade --set imageTag=5.7.15 xgp-mysql stable/mysql -f values.yaml 
//mysql服务的升级
[root@master mysql]#  helm history xgp-mysql
//查看历史版本
[root@master mysql]# helm rollback xgp-mysql 1  
//回滚到版本一

completion  # 为指定的shell生成自动完成脚本(bash或zsh)
create      # 创建一个具有给定名称的新 chart
delete      # 从 Kubernetes 删除指定名称的 release
dependency  # 管理 chart 的依赖关系
fetch       # 从存储库下载 chart 并(可选)将其解压缩到本地目录中
get         # 下载一个命名 release
help        # 列出所有帮助信息
history     # 获取 release 历史
home        # 显示 HELM_HOME 的位置
init        # 在客户端和服务器上初始化Helm
inspect     # 检查 chart 详细信息
install     # 安装 chart 存档
lint        # 对 chart 进行语法检查
list        # releases 列表
package     # 将 chart 目录打包成 chart 档案
plugin      # 添加列表或删除 helm 插件
repo        # 添加列表删除更新和索引 chart 存储库
reset       # 从集群中卸载 Tiller
rollback    # 将版本回滚到以前的版本
search      # 在 chart 存储库中搜索关键字
serve       # 启动本地http网络服务器
status      # 显示指定 release 的状态
template    # 本地渲染模板
test        # 测试一个 release
upgrade     # 升级一个 release
verify      # 验证给定路径上的 chart 是否已签名且有效
version     # 打印客户端/服务器版本信息
dep         # 分析 Chart 并下载依赖

3、组件架构

在这里插入图片描述

Helm Client 是用户命令行工具,其主要负责如下:

  • 本地 chart 开发
  • 仓库管理
  • 与 Tiller sever 交互
  • 发送预安装的 chart
  • 查询 release 信息
  • 要求升级或卸载已存在的 release

Tiller Server是一个部署在Kubernetes集群内部的 server,其与 Helm client、Kubernetes API server 进行交互。Tiller server 主要负责如下:

  • 监听来自 Helm client 的请求
  • 通过 chart 及其配置构建一次发布
  • 安装 chart 到Kubernetes集群,并跟踪随后的发布
  • 通过与Kubernetes交互升级或卸载 chart

简单的说,client 管理 charts,而 server 管理发布 release

helm客户端

helm客户端是一个命令行工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求,并由tiller来管理对应的Kubernetes资源。

tiller服务端

tiller接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。 tiller对外暴露gRPC API,供helm客户端调用。

4、工作原理

Chart Install 过程:

Helm从指定的目录或者tgz文件中解析出Chart结构信息
Helm将指定的Chart结构和Values信息通过gRPC传递给Tiller
Tiller根据Chart和Values生成一个Release
Tiller将Release发送给Kubernetes运行。

Chart Update过程:

Helm从指定的目录或者tgz文件中解析出Chart结构信息
Helm将要更新的Release的名称和Chart结构,Values信息传递给Tiller
Tiller生成Release并更新指定名称的Release的History
Tiller将Release发送给Kubernetes运行

Chart Rollback

helm将会滚的release名称传递给tiller
tiller根据release名称查找history
tiller从history中获取到上一个release
tiller将上一个release发送给kubernetes用于替换当前release

Chart处理依赖

Tiller 在处理 Chart 时,直接将 Chart 以及其依赖的所有 Charts 合并为一个 Release,同时传递给 Kubernetes。因此 Tiller 并不负责管理依赖之间的启动顺序。Chart 中的应用需要能够自行处理依赖关系。

http://www.dtcms.com/a/569161.html

相关文章:

  • 17、docker-macvlan-1-理论
  • Mac M系列芯片制作Oracle19镜像使用docker-compose运行
  • Linux source命令详解与应用场景
  • Verilog学习 有限状态机
  • 企业网站备案审核需要多长时间沧州大型企业网站建设
  • Figma高效开发工具链:从设计到测试的完整解决方案
  • React(二):构建一个简单的聊天助手学到的React知识
  • seo优化网站的注意事项北京网络职业学院
  • JWT的说明和使用
  • MFC - 使用 Base64 对图片进行加密解密
  • Git+SSH 实现控制分支的提交权限
  • 网站建设选择题网站的内容建设
  • 怎么用自己电脑做网站服务器刚做淘客没有网站
  • CUDA C++编程指南(3.1)——使用NVCC编译
  • Numpy学习总结
  • 可梦AI获首批企业好评,蜜糖网络入驻共启AI短剧工业化
  • 笔记跨设备无缝切换?Joplin+cpolar让多设备同步更自由
  • Swift 6.2 列传(第四篇):enumerated () 的 “集合神功”
  • PDF 全文翻译开发实现思路:挑战、细节与工程化解决方案
  • 算法解析:从杨辉三角到几何查询的编程实践
  • 数学基础---刚体变换(旋转矩阵与平移矩阵)
  • 找别人建网站去哪里设计网址合集
  • 宁波网站建设费用wordpress启用注册
  • 我的第一个开源项目IOT-Tree Server-实际项目使用介绍
  • 蓝牙钥匙 第41次 紧急情况处理场景下的汽车数字钥匙系统:全方位应急方案设计与实现
  • Nestjs框架: gRPC微服务通信及安全实践全解析
  • 朴朴超市小程序分析
  • 济南物流公司网站建设金华建设工程网站
  • visual basic 从入门到精通 IT9网络学院VB编程系列培训教程
  • 厦门汽车充电站建设报备网站免费ppt模板下载中国风