前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Helm 背景介绍

Helm 背景介绍

作者头像
五分钟学SRE
发布2024-03-22 15:07:56
910
发布2024-03-22 15:07:56
举报
文章被收录于专栏:五分钟学SRE五分钟学SRE

Helm 的背景

Helm 是一个由 Deis(现为 Microsoft Azure 的一部分)和 Google 共同开发的开源项目,旨在成为 Kubernetes 的“包管理器”。它的设计灵感来自于 Homebrew(MacOS 的包管理器)和 apt(Ubuntu 的包管理器),旨在简化和自动化在 Kubernetes 上部署和管理应用程序的流程。

Helm 解决了什么问题

Kubernetes 生态系统中的一个主要挑战是应用的部署和管理的复杂性。部署应用程序到 Kubernetes 通常需要创建和管理一系列相关的 Kubernetes 资源,如 Pods、Services、Deployments 等,这既耗时又容易出错。

Helm 通过将一组相关的 Kubernetes 资源打包到一个 Chart 中,使得部署和管理变得更为简便。这种方法不仅简化了部署过程,还使开发人员和运维人员能够更有效地组织和管理应用程序。

Helm 的发展

Helm 最初由 Deis(现为 Microsoft Azure 的一部分)和 Google 共同开发,于 2015 年 11 月首次发布。随着时间的推移,Helm 逐渐发展成为一个独立的项目,并在 2016 年加入了 Cloud Native Computing Foundation(CNCF)作为孵化项目。通过不断的迭代和改进,Helm 已经成为 Kubernetes 社区中最受欢迎和广泛使用的工具之一。

作用和重要性

Helm 的作用和重要性体现在以下几个方面:

  • 简化部署流程:Helm 通过打包和管理 Kubernetes 资源,简化了应用程序的部署过程,减少了手动操作和配置的复杂性。
  • 自动化管理:Helm 提供了一组命令和操作,可以自动化地管理 Chart 的安装、升级、回滚等过程,提高了部署效率和可靠性。
  • 组织和共享:Helm 允许开发人员和运维人员将应用程序打包成 Chart,并通过 Chart Repository 进行共享和组织,方便了应用程序的管理和分发。

Helm 在 Kubernetes 生态系统中扮演着重要的角色,为用户提供了一种简单、高效的方式来部署和管理应用程序,推动了 Kubernetes 的广泛应用和发展

Helm 的安装

  • macOS: 在 macOS 上安装 Helm 可以通过 Homebrew 进行简单安装。首先,确保已经安装了 Homebrew,然后执行以下命令:
代码语言:javascript
复制


brew install helm
  • Linux: 在 Linux 上安装 Helm 可以通过官方脚本进行安装。执行以下命令:
代码语言:javascript
复制
代码语言:javascript
复制
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
代码语言:javascript
复制
Windows: 在 Windows 上安装 Helm 可以从 Helm 的 GitHub 仓库下载最新版本的 Helm 安装程序并手动安装。

配置 Helm

安装完成后,需要配置 Helm 以连接到 Kubernetes 集群。通常需要配置 kubeconfig 文件,以指定 Kubernetes API 的访问方式。可以通过以下命令配置 Helm:

代码语言:javascript
复制
kubectl config use-context <context-name>

其中,<context-name> 是 Kubernetes 集群的上下文名称。使用该命令将当前的 kubeconfig 文件与指定的集群上下文关联起来,从而使 Helm 能够正确连接到 Kubernetes 集群。

Helm 工作流程

上面架构图使用的是Helm的v3版本,该版本没有了tiller并并使用更加简单和灵活的架构,直接通过kubeconfig连接apiserver,简化安全模块,降低了用户的使用壁垒

Helm 的工作流程总结如下:

  • 开发者首先创建并编辑 chart 配置
代码语言:javascript
复制


需要创建一个Helm chart 。该chart 是一个软件包,其中包含应用程序所需的一组资源的模板。
该模板使用创建清单时应用于Values.yaml文件的变量,并描述如何配置资源。
  • 接着打包并发布到 Helm 的仓库
  • 当管理员使用 helm 命令安装时, 相关的依赖会从仓库中下载
  • 接着 Helm 会根据下载的配置部署资源到 kubernetes 中

Helm 概念

Helm 主要有三个基本概念:

  1. Chart:一个 Helm 包。它包含了运行 Kubernetes 应用所需的所有资源定义。
  2. Config:与 chart 相关的配置信息。
  3. Release:在 Kubernetes 集群中运行的 chart 的一个实例。

Chart 结构

一个标准的 Chart 结构如下:

代码语言:javascript
复制



.
├── Chart.yaml
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   ├── ingress.yaml
│   └── service.yaml
├── values.yaml
└── charts

4个目录,10个文件

Helm Chart 中的每个文件和目录并了解其重要性。

  1. .helmignore:这是一个隐藏文件,因此我们无法在图表结构中看到它。从目录内运行 ls -a 命令来检查它。它用于定义我们不想包含在 Helm Chart 中的所有文件。
  2. Chart.yaml:包含图表的基本信息。
  3. Charts:这是一个空目录。我们可以在此处添加主图表所依赖的任何图表结构。
  4. templates:这是一个包含构建应用程序的所有 Kubernetes 清单文件的目录。默认情况下,helm 创建了deployment.yamlservice.yaml、hpa.yaml、ingress.yaml、serviceaccount.yaml清单文件。我们可以根据需要修改和覆盖这些文件。我们甚至可以添加其他 Kubernetes 对象的清单文件。这些清单文件可以被模板化以访问values.yaml文件中的值。
  5. templates/NOTES.txt:这是一个纯文本文件,在成功部署图表后打印出来。
  6. templates/_helpers.tpl:该文件包含多个方法和子模板。它有助于保持我们的图表井井有条,并避免在多个地方重复相同的代码。
  7. templates/tests/:我们可以在图表中定义测试,以验证图表在安装后是否按预期工作。
  8. value.yaml:此文件包含模板目录中清单文件的值。例如镜像名称、副本数量、HPA值等。我们可以根据环境创建不同的values.yaml文件并更改值。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五分钟学SRE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Helm 的背景
  • Helm 解决了什么问题
  • Helm 的发展
  • 作用和重要性
  • Helm 的安装
  • 配置 Helm
  • Helm 工作流程
  • Helm 概念
  • Chart 结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档