第一章 Helm 详细介绍

简介: 第一章 Helm 详细介绍

1.Helm 是什么

       Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。

       Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理, 是查找、共享和使用为Kubernetes构建的软件的最佳方式。

2.Helm 解决了哪些问题

       在 Kubernetes中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。

       比如你安装一个 WordPress 博客,用到了一些 Kubernetes (下面全部简称k8s)的一些资源对象,包括 Deployment 用于部署应用、Service 提供服务发现、Secret 配置 WordPress 的用户名和密码,可能还需要 pv 和 pvc 来提供持久化服务。

       并且 WordPress 数据是存储在mariadb里面的,所以需要 mariadb 启动就绪后才能启动 WordPress。这些 k8s 资源过于分散,不方便进行管理,直接通过 kubectl 来管理一个应用,你会发现这十分蛋疼。

总结以上,我们在 k8s 中部署一个应用,通常面临以下几个问题:

1.如何统一管理、配置和更新这些分散的 k8s 的应用资源文件

2.如何分发和复用一套应用模板

3.如何将应用的一系列资源当做一个软件包管理

3.Helm 组件介绍

Helm 包含两个组件:

       分别是 helm 客户端 Tiller 服务器

       helm 是一个命令行工具,用于本地开发及管理chart,chart仓库管理等

       Tiller 是 Helm 的服务端。Tiller 负责接收 Helm 的请求,与 k8s 的 apiserver 交互,根据chart 来生成一个 release 并管理 release

chart Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源

release 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release

Repoistory Helm chart 的仓库,Helm 客户端通过 HTTP 协议来访问存储库中 chart 的索引文件和压缩包

4.Helm 原理

下图描述了 Helm 的几个关键组件 Helm(客户端)、Tiller(服务器)、Repository(Chart 软件仓库)、Chart(软件包)之间的关系以及它们之间如何通信

5.helm 组件通信

1.创建release

helm 客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息

helm 客户端指定的 chart 结构和 values 信息通过 gRPC 传递给 Tiller

Tiller 服务端根据 chart 和 values 生成一个 release

Tiller 将install release请求直接传递给 kube-apiserver

2.删除release

helm 客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息

helm 客户端指定的 chart 结构和 values 信息通过 gRPC 传递给 Tiller

Tiller 服务端根据 chart 和 values 生成一个 release

Tiller 将delete release请求直接传递给 kube-apiserver

3.更新release

helm 客户端将需要更新的 chart 的 release 名称 chart 结构和 value 信息传给 Tiller

Tiller 将收到的信息生成新的 release,并同时更新这个 release 的 history

Tiller 将新的 release 传递给 kube-apiserver 进行更新

4.chart 的基本结构

Helm包由以下三个部分组成:

  1. Chart:一个Helm包,包含在Kubernetes集群中运行应用程序、工具或服务所需的所有资源定义,类似于一个Apt dpkg包或一个Yum RPM包。
  2. Repository:收集和共享chart的地方,类似于一个仓库,用于发布和存储chart。
  3. Release:在Kubernetes集群中运行的chart的实例,一个chart可以在一个Kubernetes集群上部署多次,即可以有多个release。
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 Kubernetes 关系型数据库
在Kubernetes中,helm是什么?如何使用?
【4月更文挑战第9天】在Kubernetes中,helm是什么?如何使用?
1349 5
|
Kubernetes 关系型数据库 MySQL
Helm入门(一篇就够了)
Helm入门(一篇就够了)
727 0
|
存储 Kubernetes Linux
helm 简介及基本使用
helm 简介及基本使用
3979 0
helm 简介及基本使用
|
Kubernetes 应用服务中间件 Linux
helm安装和使用-通过helm部署k8s应用
helm安装和使用-通过helm部署k8s应用
|
存储 开发工具 git
helm v2 源大全
helm v2 源大全
|
Kubernetes 容器 Perl
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
18308 0
|
Kubernetes 应用服务中间件 nginx
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)(上)
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)
53196 30
|
JSON NoSQL Redis
Redis Stack是什么,你知道吗?
Redis Stack 是 Redis 官方推出的一款新产品,扩展了 Redis OSS 的核心功能,提供完整的开发人员体验。它支持概率数据结构、可查询的 JSON 文档、跨哈希和 JSON 文档查询、时间序列数据处理等高级功能。Redis Stack 包含 Redis Stack Server、RedisInsight 和客户端 SDK,适用于构建实时应用程序。安装方式包括直接安装和 Docker 安装,使用方法与 Redis 类似,支持 JSON、Bloom Filter 等数据类型及操作命令。
2400 1
|
Docker 容器
docker设置国内镜像源
docker设置国内镜像源
46235 5