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

Kubernets基础-包管理工具Helm详解

文章目录

    • 什么是Helm?
      • Helm 的基本概念
      • Helm 的工作原理
      • Helm 的主要功能
      • 使用 Helm 的步骤
    • values.yaml和Chart.yaml
      • values.yaml 文件
      • 示例
      • Chart.yaml 文件
      • 示例

什么是Helm?

Helm 是 Kubernetes 的一个非常流行的包管理工具,它使得在 Kubernetes 上部署应用程序变得更加简单。Helm 使用一种称为 Chart 的文件格式来打包应用配置,使得应用程序可以像软件包一样进行安装、删除和升级。下面是对 Helm 的详细介绍:

Helm 的基本概念

  1. Chart

    • Chart 是 Helm 的基础单元,它是一组文件的集合,描述了一个或多个 Kubernetes 资源(如 Deployment、Service、ConfigMap 等)。Chart 通常包含一个 values.yaml 文件,其中定义了可配置的参数;一个 Chart.yaml 文件,定义了 Chart 的元数据;以及一个 templates 目录,包含了 Kubernetes 资源的定义模板。
  2. Repository

    • Repository 是存储 Chart 的地方。Helm 有官方的 repository,同时也支持私有的 repository。Chart 可以从这些 repository 中拉取下来并安装。
  3. Release

    • Release 是安装 Chart 后的一个实例。当用户使用 Helm 安装一个 Chart 时,就会创建一个新的 Release。每个 Release 都有一个唯一的名称,这使得可以区分不同的安装实例。

Helm 的工作原理

  1. 安装 Helm

    • Helm 有两个主要的组件:客户端(Tiller)和服务器端(Helm CLI)。在 Helm v3 中,Tiller 已经被移除,现在 Helm CLI 直接与 Kubernetes API 交互。
  2. 使用 Helm CLI

    • 用户通过 Helm CLI 来执行命令,如 helm installhelm upgradehelm delete 等。CLI 会读取 Chart 文件,并根据 values.yaml 中的配置值渲染模板。
  3. 渲染模板

    • 当执行安装或升级操作时,Helm 会使用 Go 模板语言来渲染 Chart 中的 YAML 文件,生成实际的 Kubernetes 资源定义。
  4. 与 Kubernetes API 交互

    • 渲染后的资源定义会通过 Kubernetes API 发送到集群上进行创建或更新。

Helm 的主要功能

  1. 安装应用

    • 使用 helm install 命令可以将 Chart 安装到 Kubernetes 集群中。
  2. 升级应用

    • 使用 helm upgrade 命令可以更新已安装的 Release 到新版本的 Chart 或者更改配置值。
  3. 卸载应用

    • 使用 helm uninstall 命令可以删除指定的 Release。
  4. 搜索 Chart

    • helm search 命令可以查找可用的 Chart,无论是从本地还是远程 repository。
  5. 管理 repository

    • 用户可以添加、更新或删除 repository,以便从不同的来源获取 Chart。

使用 Helm 的步骤

  1. 安装 Helm CLI

    • 在你的机器上安装 Helm 客户端。
  2. 初始化 Helm(对于 Helm v2)

    • 在 Helm v2 中,需要在集群内部部署 Tiller 服务。而在 Helm v3 中,这一步骤已被移除。
  3. 添加 repository

    • 使用 helm repo add 命令添加外部 repository。
  4. 安装 Chart

    • 使用 helm install 命令安装所需的 Chart。
  5. 管理安装的 Chart

    • 使用 helm statushelm listhelm uninstall 等命令来查看、升级或删除安装的 Chart。

Helm 为 Kubernetes 用户提供了一个强大的工具集来简化应用程序的部署和管理过程,尤其是在面对复杂的多服务应用时显得尤为重要。

values.yaml和Chart.yaml

在 Helm 中,values.yamlChart.yaml 是两个至关重要的文件,它们分别用于配置 Chart 的参数和描述 Chart 的基本信息。下面分别对这两个文件进行详细说明:

values.yaml 文件

values.yaml 文件包含了 Helm Chart 中可配置的变量值。这个文件定义了在渲染模板时所使用的默认值。用户可以在安装或升级 Chart 时覆盖这些默认值。values.yaml 文件通常包括以下几部分内容:

  1. 应用程序配置

    • 这部分通常包括了应用程序的基本配置信息,如数据库连接字符串、服务端口、环境变量等。
  2. Kubernetes 资源配置

    • 包括 Deployment、StatefulSet、DaemonSet 等资源的配置信息,比如副本数量、镜像标签、容器端口等。
  3. 服务配置

    • 如 Service 类型(ClusterIP、NodePort、LoadBalancer)、端口号等。
  4. 持久卷配置

    • 如果应用需要持久存储,那么这部分会配置 PersistentVolumeClaim 的相关信息,如存储大小、访问模式等。
  5. Ingress 控制器配置

    • 如果应用通过 Ingress 访问,那么可能会配置相关的主机名、路径、TLS 设置等。
  6. 其他配置

    • 包括 ConfigMaps、Secrets、PodSecurityPolicy 等其他 Kubernetes 资源的配置信息。

示例

# values.yaml 示例
replicaCount: 3
image:
  repository: nginx
  tag: latest
  pullPolicy: IfNotPresent
service:
  type: ClusterIP
  port: 80
ingress:
  enabled: true
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  hosts:
    - chart-example.local

Chart.yaml 文件

Chart.yaml 文件描述了 Chart 的基本信息,它是 Chart 的元数据文件。这个文件告诉 Helm 关于 Chart 的所有必要信息,比如名字、版本号、描述、维护者等。Chart.yaml 文件通常包含以下字段:

  1. apiVersion

    • 版本号,指定了 Chart 使用的 Chart API 的版本。
  2. name

    • Chart 的名称,必须唯一。
  3. version

    • Chart 的版本号,遵循语义化版本号规范。
  4. appVersion

    • 应用程序本身的版本号,与 Chart 的版本号分开。
  5. description

    • Chart 的简短描述。
  6. maintainers

    • Chart 的维护者列表,每个维护者可以有自己的 name 和 email 字段。
  7. sources

    • Chart 的源代码 URL 列表。
  8. dependencies

    • Chart 依赖的其他 Chart 的列表,包括名称、版本范围和存储库名称。
  9. keywords

    • 用于索引的关键词列表。
  10. home

    • Chart 所代表的应用程序的主页 URL。
  11. icon

    • Chart 所代表的应用程序的图标 URL。
  12. annotations

    • 附加的元数据键值对。

示例

# Chart.yaml 示例
apiVersion: v2
name: mychart
version: 0.1.0
appVersion: 1.2.3
description: A Helm chart for Kubernetes
maintainers:
  - name: example
    email: example@example.com
sources:
  - https://github.com/example/mychart
dependencies:
  - name: mysql
    version: "1.2.3"
    repository: "https://example.github.io/charts/"
keywords:
  - web
  - application
home: https://example.com
icon: https://example.com/icon.png

这两个文件对于正确地使用和管理 Helm Chart 至关重要。正确配置它们可以使 Helm Chart 更易于使用和维护。


http://www.kler.cn/news/316816.html

相关文章:

  • 计算机组成原理==初识二进制运算
  • Redisson分布式锁主从一致性问题
  • CentOS修改主机名
  • 【已解决】如何使用JAVA 语言实现二分查找-二分搜索折半查找【算法】手把手学会二分查找【数据结构与算法】
  • 用Qt 对接‌百度AI平台
  • 响应式流规范
  • 胤娲科技:谷歌DeepMind祭出蛋白质设计新AI——癌症治疗迎来曙光
  • DoppelGanger++:面向数据库重放的快速依赖关系图生成
  • JavaScript语法特点
  • linux 使用mdadm 创建raid0 nvme 磁盘
  • 深入理解SpringBoot(一)----SpringBoot的启动流程分析
  • 邮储银行:面向金融行业的移动应用安全风险监测案例
  • 【docker】命令之容器操作
  • C++:布尔类型,引用,堆区空间
  • 力扣232:用栈实现队列
  • 【Proteus仿真】基于51单片机的宠物喂食系统设计
  • JSON合并工具
  • JVM-类加载器的双亲委派模型详解
  • 前后端数据交互 笔记03(get和post方法)
  • 使用 Azure Functions 开发 Serverless 应用:详解与实战
  • LeetCode 1014. 最佳观光组合 一次遍历数组,时间复杂度O(n)
  • 【matlab】将程序打包为exe文件(matlab r2023a为例)
  • Linux文件IO(三)-Linux系统如何管理文件
  • 【基础知识】网络套接字编程
  • QT-MOC元对象系统详解
  • 【小程序】微信小程序课程 -1 安装与配置
  • 【2025】基于微信小程序的人工智能课程学习平台的设计与实现(源码+文档+解答)
  • 职业技能大赛-自动化测试笔记分享
  • while语句
  • CANdela/Diva系列8--如何生成0x27服务解锁的DLL