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

devtools/2024/9/24 1:37:01/

文章目录

    • 什么是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/devtools/116257.html

相关文章

医学数据分析实训 项目三 关联规则分析预备项目---购物车分析

文章目录 1 预备项目关联规则分析实践———购物车分析1 产生频繁集2 产生关联规则 1 预备项目 关联规则分析实践———购物车分析 import warnings import numpy as np import pandas as pd from mlxtend.frequent_patterns import apriori from mlxtend.frequent_patterns …

【Git】初识Git

本篇文章的环境是在 Ubuntu/Linux 环境下编写的 文章目录 版本控制器Git 基本操作安装 Git创建 Git 本地仓库配置 Git认识工作区、暂存区、版本库添加文件修改文件版本回退撤销修改删除文件 版本控制器 在日常工作和学习中,老板/老师要求我们修改文档,…

SpringBoot 消息队列RabbitMQ 消息确认机制确保消息发送成功和失败 生产者确认

介绍 有Publisher Confirm(成功)和Publisher Return(失败)两种确认机制。开启确机制认后,在MQ成功收到消息后会返回消息给生产者。 消息投递到了MQ ,但是路由失败。此时会通过PublisherReturn返回路由异常原因,然后返回ACK,告知…

[杂谈-黑神话:悟空] 中国3A游戏的崛起之路:挑战与机遇并存

[杂谈-黑神话:悟空] 中国3A游戏的崛起之路:挑战与机遇并存 《黑神话:悟空》的出现,让我们看到了中国3A游戏的希望和未来。对于中国游戏产业的从业者和爱好者来说,这是一个值得关注和期待的领域。 在游戏产业蓬勃发展的今天&#…

【d44】【Java】【力扣】160.相交链表

思路 先把a链表都放进 一个hashSet集合 再遍历B链表,逐个放进hashSet集合 如果无法放进,说明这个节点就是相交节点 代码 import java.util.HashSet;public class Main {public static void main(String[] args) {}public class ListNode {int val;Li…

linux-安全管理-防火墙与网络安全

Linux 安全管理:防火墙与网络安全 一、概述 在 Linux 系统中,防火墙与网络安全是保护系统免受未经授权访问、网络攻击和数据泄露的重要措施。防火墙通过控制进出网络的流量,阻止不必要的连接,而网络安全策略则通过配置访问权限、…

快速搭建Kubernetes集群

快速搭建Kubernetes集群 1 MacOS 1.1 下载 从 docker 下载 docker-desktop (opens new window),并完成安装 1.2 启用 k8s 集群 启动 docker-desktop,打开preference 面板 切换到 Kubernetes 标签页,并勾选启动 Enable Kubernetes,…

操作系统笔记三

进程 把一个静态程序通过OS在内存中让cpu执行起来的动态执行过程叫进程 写代码都是用户态,而进程在执行过程中需要完成特定的功能,这些功能呢只有操作系统能提供,比如说读写文件,读写文件的过程是与硬盘打交道,这个过程…