首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Helm指南:Kubernetes包管理器简介

Helm指南:Kubernetes包管理器简介

作者头像
DevOps云学堂
发布于 2023-08-22 00:30:03
发布于 2023-08-22 00:30:03
84400
代码可运行
举报
文章被收录于专栏:DevOps持续集成DevOps持续集成
运行总次数:0
代码可运行

今天是「DevOps云学堂」与你共同进步的第 32

第⑦期DevOps实战训练营·招新中


Helm已成为Kubernetes生态系统的重要组成部分。通过使用 Helm,可以简化创建和部署Kubernetes资源的过程。在本文中,我们将介绍 Helm 的基本组件、架构以及使用 Helm 的好处。

什么是Helm?

Helm是Kubernetes的包管理器,可简化应用程序部署和管理。它使用户能够使用单个命令定义、安装和升级复杂的应用程序。Helm 提供适合初学者的用户友好型设计,以及大量随时可用的Helm Chart仓库,可轻松安装和管理各种应用程序。

关键概念

Helm 使用 Helm Charts 管理应用程序的部署生命周期,确保跨不同环境和用户的一致性。用户可以创建自己的Helm Charts进行部署,或使用来自公共存储库的第三方和开源工具的Charts,例如artifacthub、bitnami charts、harbor和 chart museum.

Helm Charts

Helm Charts是一组文件,描述了在 Kubernetes 上部署应用程序所需的资源和依赖项。它允许模块化和版本控制,使应用程序分发、共享和管理更易于跨各种集群和用户访问。 该包由多个文件和目录组成,每个文件和目录都有特定的功能。Helm 读取Charts并根据提供的配置(values.yaml 文件)生成必要的 Kubernetes 清单。Helm Charts可以具有依赖项,存储在charts目录中称为subcharts。

Chart 结构

  • charts: 子chart,目录下存放依赖项。
  • templates: 这些用Golang 编写的模板文件与 values.yaml 配置数据合并。
  • templates/NOTES.txt: 包含简短使用说明的纯文本文件。
  • crd: 存储将在 helm 安装期间安装的 CRD。
  • Chart.yaml: 元数据信息,例如版本、名称、搜索关键字等。
  • LICENSE:Chart 的纯文本格式许可证。
  • README.md: 以可读的格式使用chart的重要描述信息。
  • requirements.yaml :Chart的依赖配置。
  • values.yaml: Chart中的配置文件。
  • values.schema.json: 用于在 value.yaml 文件上强加结构的 JSON 架构。

Helm releases

Helm 架构中的下一个重要组件是releases. Helm中的release表示 Kubernetes 集群中部署的 Chart 的实例。release由所有Kubernetes对象和资源组成,例如部署、服务和入口规则,它们是作为Chart中指定配置的一部分创建的。

Helm chart repository

Helm chart存储库或 repos 是专用的HTTP服务器,它与 index.yaml 文件一起托管和提供Chart,该文件提供有关Chart集合及其下载位置的信息。Helm 客户端可以连接到多个Chart存储库,最初默认情况下没有配置。使用该helm repo add命令,用户可以毫不费力地配置和添加新的Chart存储库,从而可以无缝访问和管理其 Kubernetes 部署的各种Chart。 流行的Chart存储库有artifcathub、bitnami Charts、Harbor和Chart Museum。

Chart version

每个Chart都必须有一个版本号。存储库中的包通过名称加版本来标识。Helm chart根据SemVer2 规范进行版本控制。例如,版本字段设置为版本:1.2.3的nginx将被命名为:nginx-1.2.3.tgz 版本号可在Chart.yaml文件中找到,并由各种 Helm 工具(包括 CLI)使用。helm package创建包时,该命令使用Chart.yaml中定义的版本号。系统期望包名称中的版本号与Chart.yaml中的版本号相匹配,任何差异都会导致错误。

Chart dependency

在Helm中,一个Chart可能依赖于任意数量的其他chart。这些依赖项可以通过两种方式添加 - 通过使用依赖项字段动态链接Chart.yaml或将其放入charts/目录并手动管理。 使用 dependencies 字段的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dependencies:
  - name: apache
    version: 1.2.3
    repository: https://example.com/charts
  - name: mysql
    version: 3.2.1
    repository: https://another.example.com/charts

存放到charts目录的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wordpress:
  Chart.yaml
  # ...
  charts/
    apache/
      Chart.yaml
      # ...
    mysql/
      Chart.yaml
      # ...

Release version(发布版本)

一个版本可以修改多次。为了跟踪这些变化,使用了连续计数器。helm install初始时,版本号设置为 1。每次后续升级或回滚时,版本号都会增加 1。如果需要回滚到以前的版本号,此历史记录很有用。

Helm rollback

helm rollback <RELEASE> [REVISION] [flags] 命令可用于回滚到该版本的任何先前版本。注意:回滚版本将收到新的版本号。

Helm SDK

Helm SDK是指直接与 Kubernetes API 服务器交互以安装、升级、查询和删除 Kubernetes 资源的 Go 代码。它可以导入到项目中以使用 Helm 作为客户端库而不是 CLI。

Helm 架构

该图更好地解释了 Helm 如何使用chart和values文件来管理 Kubernetes 集群中的发布(已部署的资源)。

此图显示了 OpenTelemetry Operator Helm chart工作流程。在这里,您可以看到 AWS Observability 团队如何在公共存储库中构建和维护 Helm chart,并且可以将其无缝下载并部署到用户集群。 与之前部署 OpenTelemetry Operator的方法相比,此过程还有几个好处。

  • 添加了安装/卸载包、升级、回滚和自定义安装等功能。
  • 用户可以通过values.yaml 文件灵活地配置值,您可以确定将哪些值传递给 OpenTelemetry Operator Helm 图表配置。您可以使用一个命令覆盖多个值。
  • 这是将 Operator 部署到 Kubernetes 的最简单方法。

image.png

为什么要使用 Helm?

在 Kubernetes 上部署和管理资源的方法有多种;为什么要选择 Helm?流行的替代方案是Kustomize、Tanka和Carvel,它们的社区都不如 Helm 成熟,并且缺乏公开可用的Chart(包)的数量。 Helm 因其处理简单和复杂配置、版本控制、可重用性等的能力而成为明显的赢家。 还有一些方法可以同时使用Helm 和 Kustomize。 以下是 Helm 的主要优点:

  • 简单性:只需一个命令即可定义、安装、升级和回滚复杂的 Kubernetes 应用程序。这极大地简化了Kubernetes资源的管理和部署。
  • 可重用性:Helm Chart本质上是预先配置的 Kubernetes 资源的包。这些图表可以在项目之间重复使用,并与更广泛的社区共享。
  • 可配置性:Helm 提供了一个高度可配置的结构,包括图表(模板)和值(配置)。只需更改一些参数,我们就可以使用相同的图表在多个环境(例如 stag/prod 或多个云提供商)上进行部署。
  • 一致性:Helm 图表提供了打包和部署 Kubernetes 资源的标准化方法。这有助于确保不同环境之间的一致性,并降低部署中出现错误或不一致的风险。
  • 可扩展性:使用 Helm,您可以通过调整文件中的值轻松扩展或缩小 Kubernetes 应用程序values.yaml。
  • 社区:Helm 拥有一个庞大且活跃的社区,不断开发和改进该工具。这意味着有许多资源和最佳实践可帮助您充分利用 Helm。

往期推荐

如何实施有效的CI/CD流水线

GitOps –用于基础设施自动化的DevOps

如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
获取手机端验证码
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。 主要就是实时获取短信信息。 android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便 public class SMSReceiver extends BroadcastReceiver{   private String verifyCode="";  
xiangzhihong
2018/01/29
7.4K0
全局事件-广播(Broadcast)
广播是Android SDK的四大组件中唯一需要别动接收数据的组件。也就是说对于Activity、ContentProvider和Service都可以主动调用,并获取返回数据。而负责接收Broadcast数据的接收器却永远不知道什么时候可以接收到广播。从这种表现形式上看,很像面向对象中的事件(Event),对于事件(onClick、onKeydown)来说,从来不会预知用户什么时候触发他们,只能默默的等待不可预知的事件发生。因此,广播也可以被成为全局事件。
小小工匠
2021/08/16
1.3K0
Android 短信验证码自动填充
这周项目做优化,为用户操作更加方便,注册、忘记密码、更换手机号、所需要的获取验证码操作,增加 获取短信验证码,然后自动填写到输入框中。思路简单,主要是监听短信的广播,然后正则短信中的验证码
全栈程序员站长
2022/09/13
5.5K0
Auto.js 调用系统短信、电话
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!
拉灯的小手
2022/03/29
4.1K0
Android 短信拦截及用途分析
本文讲述如何通过监听系统短信数据库内容变化来获取短信内容。首先介绍了Android系统如何获取短信数据库,然后通过SmsReceiver类来实现短信内容的监听。当有新的短信到来时,通过onReceive方法获取短信内容并解析,最后将获取到的短信内容输出到控制台。
用户1155943
2018/01/04
2.8K0
[android] 手机卫士接收短信指令执行相应操作
通过广播接收者,接收到短信,对短信内容进行判断,如果为我们指定的值就执行相应的操作
唯一Chat
2019/09/10
2.3K0
Android广播和短信广播详解
在 Android 中,广播(Broadcast) 是一种用于应用之间、应用与系统之间通信的机制。通过广播,应用可以发送一些全局通知,其他应用可以接收并响应这些通知。Android 广播机制分为两类:常规广播 和 短信广播。
用户3672714
2025/08/05
600
Android获取短信验证码并自动填充的两种方式「建议收藏」
有些项目为了方便客户操作,减去客户输入短信验证码的时间,会要求安卓app能够获取收到的短信验证码并自动填充到输入框。所以,我整理了安卓获取短信验证码并自动填充输入框的两种方法,而且正式在项目中使用并无bug。
全栈程序员站长
2022/09/15
3.7K0
Android自动填充短信验证码
短信验证码获取并自动填写现在已经成为一个人性化App的标配了,这篇文章将实现一个短信验证码获取并自动填写的demo。其实就是读取指定号码的短信并提取出验证码,然后赋值给EditText显示。 demo效果图:
程思扬
2022/01/10
6.6K0
Android自动填充短信验证码
Android开发笔记(五十四)数据共享接口ContentProvider
前面几节介绍了进程间通信的几种方式,包括消息包级别的Messenger、接口调用级别的AIDL、启动页面/服务级别的Notification,还有就是本节这个数据库级别的ContentProvider。 ContentProvider为存取数据提供统一的接口,它让不同APP之间得以共享数据。ContentProvider类本身是个服务端的数据存取接口,主要操作类似SQLite,也都提供了如下常见的数据库管理API: query : 查询数据。 insert : 插入数据。 update : 更新数据。 delete : 删除数据。 getType : 获取数据类型。 实际开发中,APP很少会开放数据接口给其他应用,所以ContentProvider类作为服务端接口反而基本用不到。Content组件中能够用到的场合,基本上是APP想要使用系统的手机通讯数据,比如查看联系人/短信/彩信/通话记录,以及对这些通讯信息进行增删改。
aqi00
2019/01/18
1.6K0
Android接收短信-createFromPdu
Android收到短信的事件是由系统发一个有序广播的,所以这里需要一个BroadcastReceiver。receiver收到的Intent里面并不是直接存储的短信内容,而是短信的原始数据。所以我们需要自己解码。
小小工匠
2021/08/16
4.3K0
[android] 手机卫士黑名单功能(短信拦截)
前面我们把需要拦截的手机号都存储和展示出来了,接下来是使用广播接收者拦截短信了,这个广播接收者需要和一个服务绑定,服务开启的时候,接收者存在,服务停掉时,接收者关闭
唯一Chat
2019/09/10
1.7K0
[android] 手机卫士黑名单功能(短信拦截)
语音兰度短信
原理:获取来电短信内容,调用系统的语音朗读功能。 效果图: 具体代码如下: 1,获取短信息: package com.internal.message;   import android.cont
xiangzhihong
2018/01/29
7850
语音兰度短信
Android基础总结(10)——手机多媒体的运用:通知、短信、相机、视频播放
Android提供了一系列的API,是我们可以在程序中调用很多手机的多媒体资源,从而编写出更加丰富的应用程序。 1、通知的使用 通知(Notification)是Android中比较有特色的一个功能,当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。   无论在哪里创建通知,整体的步骤都是相同的,具体的步骤如下: 创建一个NotificationManager类的对象来
mukekeheart
2018/02/27
2.3K0
Android手机监控小程序
9.AndroidManifest.xml中修改程序图标、增加intent-filter内容和权限。
知识与交流
2023/03/25
2.7K0
Android手机监控小程序
android广播
android广播其实上是发布-订阅模型,发布有两种方式,订阅也有两种方式 发布的两种方式是无序方式(普通广播)和有序方式(有序广播) 订阅的两种方式是静态订阅和动态订阅
码客说
2019/10/22
1.3K0
3-AII--BroadcastReceiver实现锁、开屏、短信监听
零、前言 1.按电源键,屏幕锁屏,再按电源键屏幕打开。在Activity开启时注册广播用来监听屏幕的关闭,Activity关闭时移除广播。 2.这里只能在该Activity中监听,退出后Broad
张风捷特烈
2018/09/26
1.2K0
如何监控别人的手机
关于大家一直说怎么使用,我来简单的说明一下吧,讲工程文件中的apk文件安装在你想监控的人的手机中,然后随便找个手机给他
知识与交流
2023/03/25
2.5K0
如何监控别人的手机
[android] 手机卫士手机实现短信指令获取位置
转换标准坐标为火星坐标,数据库文件放到assets目录下,把ModifyOffset.java放在service包下面
唯一Chat
2019/09/10
2.1K0
[android] 手机卫士手机实现短信指令获取位置
android四大组件
Android开发的四大组件,本文主要分为一、Activity详解 二、Service详解 三、Broadcast Receiver详解 四、Content Provider详解 外加一个重要组件 intent的详解。 一、Activity详解 Activty的生命周期的也就是它所在进程的生命周期。
黄啊码
2020/05/29
1.1K0
相关推荐
获取手机端验证码
更多 >
交个朋友
加入[腾讯云] DeepSeek开发者交流群
前沿技术深度讨论 发展开发者人脉圈
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入AICoding云开发技术交流群
智能编码实践分享 聚焦AI+云开发
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档