推荐阅读

Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506
Helm3(K8S 资源对象管理工具)博客专栏:https://blog.csdn.net/xzk9381/category_10895812.html

一、什么是 Helm

Kubernetes 是一个分布式的容器集群管理系统,它将集群中的所有资源都抽象成 API 对象,并且使用声明的方式来创建、修改、删除这些对象。这样带来的一个问题就是这些 API 对象的声明文件非常多。每当需要创建一个应用时,都需要去编写一堆声明创建资源的文件。尤其是当前很多业务都向微服务转变,通过分解巨大的单体应用为多个服务的方式,分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加,对于 Kubernetest 编排来说,每个组件有自己的资源文件,并且可以独立的部署与伸缩,这就带来了如下一些问题:

  • 需要管理、更新和维护大量的 yaml 文件
  • 不能根据一套 yaml 文件创建多个环境,需要手动进行修改

Helm 就是用来管理这些 API 对象的工具。它类似于 CentOS 的 YUM 包管理,Ubuntu 的 APT 包管理,你可以把它理解成 Kubernetes 的包管理工具。它能够把创建一个应用所需的所有 Kubernetes API 对象声明文件组合并打包在一起。并提供了仓库的机制便于分发共享,还支持模版变量替换,同时还有版本的概念,使之能够对一个应用的版本进行管理。

二、Helm 组件

Helm 有如下组件(概念):

  • Chart: 就是 Helm 的一个包(package),包含一个应用所有的 Kubernetes manifest 模版,类似于 YUM 的 RPM 或者 APT 的 dpkg 文件。
  • Helm CLI: Helm 的客户端组件,负责和 Kubernetes API 通信
  • Repository: 用于发布和存储 Chart 的仓库。
  • Release: 可以理解成 Chart 部署的一个实例。通过 Chart 在 Kubernetes 中部署的应用都会产生一个唯一的 Release,即使是同一个 Chart,部署多次就会产生多个 Release。

三、Helm 3 和 Helm 2 的不同

以下只列出部分重要的改动,完整的信息请参考官网:https://v3.helm.sh/zh/docs/faq/

1、移除 Tiller

Helm 2 是 C/S 架构,主要分为客户端 helm 和服务端 Tiller。而由于 RBAC 等权限控制体系的组件完善,多租户和安全的需求日益兴起,Tiller变得越来越不安全,社区在权限控制领域遇到了极大的阻碍。所以在 Helm 3 版本中,直接将 Tiller 这一核心组件移除,helm 直接和 Kubernetes API 进行通信。这样做带来的好处有如下几点:

  • Helm 的架构变的更为简单和灵活

  • 不再需要创建 ServiceAccount,直接使用当前环境中的 kubeconfig 配置

  • 可以直接和 Kubernetes API 交互,更为安全

  • 不再需要使用 helm init 来进行初始化(以前的版本需要使用该命令来向 K8S 集群中安装 Tiller)

2. 删除 release 命令变更

以前的版本中完全删除一个 release 需要使用如下命令:

helm delete release-name --purge

现在只需要使用 uninstall 命令即可,–purge 会作为一个默认的行为:

helm uninstall release-name

3. 查看 charts 信息命令变更

以前的版本使用 helm inspect 命令查看具体的 charts 信息,现在改为了 helm show 命令。

4. 拉取 charts 包命令变更

将以前版本中的 helm fetch 命令修改为 helm pull 命令。这更像是与 docker pull 看齐。

5. 必须指定 release 名称

在 helm 2 中,如果在 helm install 时没有指定 release 名称,那么会自动生成一个随机名称。但是在 helm 3 中,则必须要指定 release 名称,或者使用 --generate-name 选项。

Error: must either provide a name or specify --generate-name

6. 关于 release 信息存储

helm 2 中,release 的信息全部存储在 Tiller 所在的命名空间中,所以 release 的名称不能重复。在 helm 3 中,release 的信息只会存储在 release 安装的命名空间中,这样不同的 namepsace 就可以出现相同名字的 release。

所以如果考虑将 helm 2 升级至 helm 3,需要使用官方提供的 2To3 插件来完成,具体的操作流程可以参考官网:https://helm.sh/zh/docs/topics/v2_v3_migration/

本专栏原文链接:https://blog.csdn.net/xzk9381/category_10895812.html,转载请注明出处

Helm 3 完整教程(一):Helm 3 简介相关推荐

  1. Helm 3 完整教程(二):Helm 3 安装教程

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  2. Helm 3 完整教程(三):chart 的文件结构和字段详解

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  3. Helm 3 完整教程(二十四):创建和使用子 chart

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  4. Helm 3 完整教程(二十三):使用 Files 方法在模板中读取文件内容

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  5. Helm 3 完整教程(二十二):如何设置 Chart 安装完成后提示 NOTE 信息

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  6. Helm 3 完整教程(二十一):Helm 创建和引用子模板

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  7. Helm 3 完整教程(二十):在 Helm 模板中定义和使用变量

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  8. Helm 3 完整教程(十九):Helm 流控制结构(3)range 语句

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

  9. Helm 3 完整教程(十八):Helm 流控制结构(2)with 语句

    推荐阅读 Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506 Helm3(K8S 资源对象管理工具)博客专栏:https: ...

最新文章

  1. HDU-1459.非常可乐(BFS )
  2. 鸿蒙os系统的iphonexr,iPhoneXS/XR终极防水测试:iPhoneXR不幸阵亡
  3. python 离线翻译软件_AI赋能翻译,讯飞这个设备轻松搞定国际交流
  4. iOS开发之如何跳到系统设置里的各种设置界面
  5. oracle 启动监听提示 :The listener supports no services
  6. 超详细的2440中断机制分析
  7. 洛谷 P 3379 【模板】最近公共祖先(LCA)
  8. 单元测试 python_Python单元测试简介
  9. Oracle不能加载OCI.DLL的解决方案
  10. 姆巴佩独造三球一战成名 阿里云打破世界杯流量纪录 1
  11. MySQL存储引擎InnoDB、MyISAM 、其它存储引擎介绍
  12. Android面试心得,已拿到字节跳动,京东,android应用开发基础学堂在线答案
  13. excel转换linux时间戳,在Excel中转换时间戳(timeStamp)
  14. 使用 TiDB 构建实时应用
  15. [转载]全国高校IPv6地址分配情况
  16. 为何数据库也云原生了?
  17. sap 双ALV联动显示示例(备份)
  18. 与 Hadoop 对比,如何看待 Spark 技术
  19. 基于Android的校园二手闲置物品交易系统设计与实现
  20. 【VRP问题】基于遗传算法求解容量和距离约束的车辆路径规划问题CDVRP附matlab代码

热门文章

  1. CCF NOI1028 判断互质
  2. LaTeX indicator function(指示函数)(\mathbb {1} 不起作用)
  3. C++11 —— 基于区间(range)的 for 循环
  4. 导体、良导体、超导体与半导体
  5. Hadoop 基本数据类型
  6. 取模运算与hash function
  7. 泊松分布的理解与Python仿真
  8. 隐藏网络计算机,如何在网络中隐藏自己的计算机名称
  9. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...
  10. 专科python应届生工资多少-大四应届毕业生,学了两个月Python,找工作感觉好难啊?...