K8S Helm

news/2024/12/23 1:12:19/

简述

Helm 是 Kubernetes 的开源包管理器。它提供了提供、共享和使用为 Kubernetes 构建的软件的能力。它允许开发者定义、‌打包、‌发布和管理Kubernetes应用资源,‌类似于Linux下的apt或yum包管理器。‌Helm3的架构主要包括Helm客户端、‌Chart仓库以及Kubernetes集群,‌其中Helm客户端是用户与Helm交互的命令行工具,‌Chart仓库用于存储Helm Chart,‌而Kubernetes集群是应用部署的目标环境。‌Helm3的重要能力包括创建新的charts、‌将charts打包、‌与chart仓库交互、‌安装和卸载Kubernetes的应用以及管理使用Helm安装的charts的生命周期。‌‌
核心功能

  1. 包管理:Helm允许开发者将Kubernetes资源打包成一个Chart,并发布到仓库中。用户可以从仓库中搜索、下载和安装Chart,从而快速部署应用程序。
  2. 依赖管理:Chart可以声明对其他Chart的依赖,Helm会自动解决这些依赖关系,确保所有相关的资源都被正确部署。
  3. 版本管理:Helm支持Chart的版本控制,用户可以安装特定版本的Chart,并在需要时更新或回滚到之前的版本。
  4. 配置管理:通过values.yaml文件,用户可以自定义Chart中的配置参数,从而满足不同环境下的部署需求。
  5. 模板化:Chart中的Kubernetes资源文件可以使用Go模板语言进行编写,允许根据用户的输入动态生成最终的资源清单。

流程
6. 安装Chart:用户通过Helm命令行工具(CLI)指定Chart仓库、Chart名称和版本,以及自定义的配置参数,Helm会解析Chart并生成相应的Kubernetes资源清单,然后提交给Kubernetes API Server进行部署。
7. 更新Chart:当Chart有更新时,用户可以使用相同的命令更新已安装的Release,Helm会处理资源的更新和替换。
8. 回滚Chart:如果更新后的Chart出现问题,用户可以使用Helm将Release回滚到之前的版本。
9. 卸载Chart:当不再需要某个应用时,用户可以使用Helm卸载Chart,Helm会删除与该Chart相关的所有Kubernetes资源。

优势

  1. 简化部署流程:Helm通过封装Kubernetes资源文件和配置参数,使得应用程序的部署变得更加简单和高效。
  2. 提高可维护性:通过Chart的版本控制和依赖管理,Helm有助于保持应用程序的一致性和可维护性。
  3. 促进团队协作:Helm仓库和Chart的使用促进了开发、运维和测试团队之间的协作和共享。

架构

在这里插入图片描述

目标
Helm管理名为chart的Kubernetes包的工具。Helm可以做以下的事情:

  • 从头开始创建新的chart
  • 将chart打包成归档(tgz)文件
  • 与存储chart的仓库进行交互
  • 在现有的Kubernetes集群中安装和卸载chart
  • 管理与Helm一起安装的chart的发布周期
    模块
  1. chart 创建Kubernetes应用程序所必需的一组信息。
  2. config 包含了可以合并到打包的chart中的配置信息,用于创建一个可发布的对象。
  3. release 是一个与特定配置相结合的chart的运行实例。
    组件
    Helm是一个可执行文件,执行时分成两个不同的部分:
  4. Helm客户端 是终端用户的命令行客户端。负责以下内容:
  • 本地chart开发
  • 管理仓库
  • 管理发布
  • 与Helm库建立接口
    • 发送安装的chart
    • 发送升级或卸载现有发布的请求
  1. Helm库 提供执行所有Helm操作的逻辑。与Kubernetes API服务交互并提供以下功能:
  • 结合chart和配置来构建版本
  • 将chart安装到Kubernetes中,并提供后续发布对象
  • 与Kubernetes交互升级和卸载chart
    独立的Helm库封装了Helm逻辑以便不同的客户端可以使用它。

命令

命令描述
dependency管理 chart 依赖
get下载一个 release。可用子命令:all、hooks、manifest、notes、values
history获取 release 历史
install获取 release 历史
list列出 release
pull从远程仓库中下载 chart 并解压到本地
repo添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、list、remove、update
rollback版本回滚
search关键字搜索 chart
showchart 详细信息。

应用

  1. 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add incubator https://charts.helm.sh/incubator
  1. 更新仓库
helm repo update
  1. 仓库列表
helm repo list
  1. 删除仓库
helm repo remove incubator
  1. 搜索Chart
helm search repo stable
  1. 查看Chart信息
helm show chart stable/mysql     # 查看基本信息
helm show all stable/mysql     # 获取所有信息
  1. 安装Chart
helm install my-redis bitnami/redis [-n default]  # 指定 release 名称
helm install bitnami/redis --generate-name     # 自动生成 release 名称
  1. 查看release
helm ls
helm list
helm status my-redis
  1. 删除release
helm uninstall my-redis

自定义

一、创建自定义 Helm Chart

要创建一个自定义 Helm Chart,遵循以下步骤:.

  1. 初始化Chart目录结构:
    使用 Helm CLI 工具,可以快速初始化一个新的Chart目录结构。
helm create mychart

这将创建一个名为mychart的目录,其中包含Chart.yaml文件和一些示例模板文件(如deployment.yaml, service.yaml等)。
2. 编辑Chart.yaml:
在Chart.yaml文件中,定义Chart的名称、版本、描述、维护者信息等。

apiVersion: v2  
appVersion: "1.0"  
description: A Helm chart for Kubernetes  
name: mychart  
type: application  
version: 0.1.0
  1. 编辑模板文件:
    在templates目录下,编辑或添加Kubernetes资源文件(YAML格式),这些文件将定义应用程序。Helm 使用Go模板语言来允许在YAML文件中插入变量和逻辑。
  2. 定义Values文件:
    在values.yaml文件中,定义可以在模板中引用的默认值。这允许用户通过修改values文件来自定义Chart的部署。
  3. 测试Chart:
    在本地或开发环境中使用helm install命令来测试Chart。
helm install my-release ./mychart
  1. 打包Chart:
    在将Chart分发或上传到Chart仓库之前,需要将其打包成一个tgz文件。
helm package ./mychart

二、使用自定义 Helm Chart

一旦有了自定义的Helm Chart,就可以按照以下步骤在Kubernetes集群中部署它:

  1. 确保Helm CLI已安装并配置:
    确认Helm CLI已经安装,并且指向了正确的Kubernetes集群。
  2. 添加Chart仓库(如果适用):
    如果Chart存储在Helm Chart仓库中,需要添加仓库并使用它来安装Chart。
  3. 安装Chart:
    使用helm install命令安装Chart。指定Chart的版本、release名称等。
helm install my-release ./mychart --values custom-values.yaml
  1. 查看和管理已部署的应用:
    使用helm list查看所有已部署的Helm release。使用kubectl命令查看和管理Kubernetes资源。
  2. 升级和回滚:
    使用helm upgrade命令来升级Chart。如果需要,可以使用helm rollback命令回滚到之前的版本。

自定义chart配合这Harbor镜像进行版本的发布。


http://www.ppmy.cn/news/1506320.html

相关文章

MySQL学习(19):锁

1.什么是锁 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,数据是供许多用户共享的资源,数据库必须保证数据并发访问的一致性、有效性,这就要靠锁来协调实现。 MySOL中的锁,分为以下三类: &am…

Open3D 三维重建-Poisson Surface Reconstruction (泊松曲面重建)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.1.1函数代码 2.1.2参数详解 2.1.3名词解释 2.2完整代码 三、实现效果 3.1原始点云 3.2重建后点云 3.3去除低密度点云 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点…

AcWing 714. 连续奇数的和 1

给定两个整数 XX 和 YY,输出在他们之间(不包括 XX 和 YY)的所有奇数的和。 输入格式 第一行输入 XX,第二行输入 YY。 输出格式 输出一个整数,表示所有满足条件的奇数的和。 数据范围 −100≤X,Y≤100−100≤X,Y≤…

【Canvas与艺术】蓝波纹白底黄星徽章

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>蓝波纹白底黄星徽章</title><style type"text/css&quo…

算法的效率度量——时间复杂度

算法的效率度量 算法的效率度量: 时间复杂度空间复杂度 时间复杂度 如何评估算法的时间开销? ——让算法先运行&#xff0c;事后统计运行时间&#xff1f; 存在问题: 和机器性能有关。如&#xff1a;超级计算机VS单片机和编程语言有关&#xff0c;越高级的语言执行效率越低…

vs+qt一些问题

一直遇到的两个问题&#xff0c;今天解决了 1、 因为前后端分离&#xff0c;前端写完了&#xff0c;后端还在一直修改&#xff0c;但是每次都是单独打开的后端的sln&#xff0c;所以会出现这个&#xff0c;把前端的模块删掉就好了。 2、打开vs项目&#xff0c;很多报错&#…

高级网络渗透测试技术(第一篇)

一、概述 网络渗透测试&#xff08;Penetration Testing, Pen Test&#xff09;是通过模拟恶意攻击者的行为来评估计算机系统、网络或Web应用的安全性。高级网络渗透测试技术则涵盖了更复杂和深入的测试方法&#xff0c;能够更有效地发现并利用系统中的潜在漏洞。 二、前期准…

Bytebase 2.22.1 - SQL 编辑器展示更丰富的 Schema 信息

&#x1f680; 新功能 SQL 编辑器直接展示表&#xff0c;视图&#xff0c;函数&#xff0c;存储过程等各种 Schema 详情。OpenAI 功能进入社区版&#xff08;免费&#xff09;&#xff0c;现在您可以通过配置自有 OpenAI key 在 SQL 编辑器中启用自然语言转 SQL 功能。支持在 …