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

ops/2024/9/24 4:22:18/

文章目录

    • 什么是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: nginxtag: latestpullPolicy: IfNotPresent
service:type: ClusterIPport: 80
ingress:enabled: trueannotations: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: exampleemail: example@example.com
sources:- https://github.com/example/mychart
dependencies:- name: mysqlversion: "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.ppmy.cn/ops/115113.html

相关文章

JAVA同城生活新引擎外卖跑腿团购到店服务多合一高效系统小程序源码

🚀同城生活新风尚!一站式高效系统,让日常更便捷🛍️ 🍽️【开篇:同城生活,一触即发】🍽️ 在这个快节奏的时代,同城生活的便利性与效率成为了我们追求的新风尚。想象一下…

已成功与服务器建立连接,但是在登录过程中发生错误

详细错误:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL 提供程序, error: 0 - 证书链是由不受信任的颁发机构颁发的。) 原因: SqlSugar.SqlSugarException: 中文提示 : SSL出错,因为升级了驱动,字符串增加…

DPDK 简易应用开发之路 2:UDP数据包发送及实现

本机环境为 Ubuntu20.04 ,dpdk-stable-20.11.10 发送数据包的通用步骤 初始化DPDK环境: 调用 rte_eal_init() 来初始化DPDK的EAL(环境抽象层),这是所有DPDK应用程序的第一步,用于初始化硬件、内存和逻辑核…

基础算法(4)——前缀和

1. 前缀和 题目描述: 解法一:暴力解法 直接模拟实现题目流程即可 时间复杂度为,根据题目给出的条件,肯定会超时 解法二:前缀和(适用题型:快速 求出数组中某一个 连续区间 的 和)…

SpringCloud 基于 web 的只会养老平台

摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计…

【算法】栈与模拟

【ps】本篇有 5 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1)删除字符串中的所有相邻重复项 .1- 题目解析 .2- 代码编写 2)比较含退格的字符串 .1- 题目解析 .2- 代码编写 3)基本计算器 II .1- 题目解析 .2- 代码编写 4&…

Avatarify——实时面部替换工具,允许用户通过网络摄像头将自己的表情映射到虚拟人物或名人头像上

一、Avatarify介绍 Avatarify 是一款基于深度学习的实时面部动画生成工具,它允许用户使用 AI 技术将自己的面部表情实时映射到虚拟角色、静态图片或视频上,进而使这些角色看起来像是在模仿用户的表情。该工具在娱乐、社交媒体以及虚拟会议等场景中应用广…

【人工智能】在大型活动中的应用案例

人工智能在娱乐大型活动中的应用 ## 作者主页: 知孤云出岫 目录 **人工智能在娱乐大型活动中的应用****1. 引言****2. 智能票务与入场管理****2.1 动态定价与票务预测****2.2 生物识别技术快速入场****2.3 区块链技术防伪票务管理** **3. 智能观众互动与个性化体验****3.1 个性…