K8S Helm

news2024/9/25 21:20:26

简述

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.coloradmin.cn/o/1989036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员窃喜!卡了大模型脖子的Json输出,OpenAI终于做到了100%正确

OpenAI上次提到JSON模式的概念,还是在去年的DevDay上。那是ChatGPT第一次拥抱JSON模式。 但这个功能可以说是饱受诟病。 经常遇到模型不遵循指令,不按照你想要的格式输出,即使在 prompt 中明确说了要按照指定格式(比如Json、XML&…

【Java】字符/字符串转整数 常用的三个方法

前言: 做Oj题时,偶尔需要用到,久了不用,用到就得查一下,遂总结一篇用法,加深记忆。 目录 方法1:使用字符的ASCII值(字符) 方法2:使用Character.getNumeri…

【GCC】结合GPT4 延迟梯度学习1:公式推导及理论分析

大神的分析 本文主要借鉴。【TWCC 】基于gpt和python简化分析webrtc拥塞控制论文: Analysis and Design of the Google Congestion Contro for Web Real-time Communication (WebRTC)感觉应该学习好理论后再进行python 分析:【gcc】基于gpt和python的流程和延迟梯度分析另外:…

html+css+js前端作业qq音乐官网5个页面 带js

htmlcssjs前端作业qq音乐官网5个页面 带js 有轮播图,tab切换等多种效果 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编…

Flink 实时数仓(九)【DWS 层搭建(三)交易域汇总表创建】

前言 今天立秋,任务是完成 DWS 剩余的表,不知道今天能不能做完,欲速则不达,学不完就明天继续,尽量搞懂每一个需求; 1、交易域下单各窗口汇总表 任务:从 Kafka 订单明细主题读取数据&#xff0…

【Linux-WMware Tools安装失败“segmentation fault”解决方法】

VMware版本:17 Ubuntu版本: 22.04 安装常规办法,通过vmware安装Tool,安装显示报错:“segmentation fault”,查了下可能是tool和ubuntu版本不兼容导致的。解决办法:通过命令行逐次安装。 1、sudo apt insta…

PostgreSQL(二十五)PG_FDW的使用

目录 一、FDW的简介与特性 二、pg_fdw的部署与使用 1、编译postgres_fdw 2、添加postgres_fdw 3、创建FDW服务器 ​4、授权并创建用户映射 5、客户端创建FDW测试表 6、访问外部表 ​7、可能出现的问题 三、FDW的执行原理 1、PG-PG访问过程描述 2、PG-PG访问过程查看…

一部分优化算法

一、优化问题 1、优化目标 (1)优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。 (2)优化算法的目标函数通常是基于训练数据集的损失函数&#x…

springboot 定义类导入爆红,@Autowried自动注入失败

springboot 定义类导入爆红,Autowried自动注入失败 根据提供的异常信息,分析如下: 异常起因:UnsatisfiedDependencyException 表示在创建名为 ‘a1001Service’ 的 bean 时存在依赖问题,具体是在字段 ‘a1001Mapper’ …

算法日记day 32(贪心之划分字母区间|合并区间|单调递增的数字|监控二叉树)

一、划分字母区间 题目: 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每…

nginx 405错误是什么意思

405错误:方法不被允许 当Web服务器收到一个它不支持的HTTP请求方法时,就会返回405错误。 原因 405错误通常是由于客户端发出了不兼容或不支持的HTTP请求方法。例如,客户端可能请求一个只能通过GET方法访问的资源,但使用了POST方…

C代码做底层及Matlab_SimuLink做应用层设计单片机程序

前言:SimuLink工具极其强大,但是能直接支持单片机自主开发的很少,造成这个问题的原因主要是我们使用的芯片底层多是C代码工程,芯片厂家也只提供C代码库,很少能提供SimuLink的支持库,即使提供也不是很不完善,如NXP的一些芯片提供的SimuLink库不含盖高级应用,再比如意法半…

视创云展:轻松构建出独一无二的元宇宙空间

视创云展作为一款前沿的元宇宙数字营销平台,集成了多项核心技术,旨在为用户提供低门槛、高效能的元宇宙体验与创作工具。其核心技术主要包括: 1、低门槛、模块化,3D场景创作工具 视创云展集成了海量的元宇宙场景模板,…

SpringBoot中如何自定义自己的过滤器Filter(简易版)

本文不再说SpringMVC中的写法,毕竟现在项目都是SpringBoot,我们还是尽量使用SpringBoot的写法,首先了解一下Filter。 说白了,就是在请求到达服务器之前进行拦截,一般使用场景是拦截登录进行权限校验,当然一…

跟李沐学AI:GoogLeNet含并行连结的网络

Inception块 GoogleNet中的基本卷积块,从4个路径从不同层面抽取信息,然后再输出通道维合并。 数据输入后共有四条路径:第一个路径为1x1的卷积层;第二个路径先用1x1的卷积层修改通道数,在输入到3x3的卷积层&#xff0c…

腾讯云AI代码助手助力软件开发体验分享

引言 现在,AI工具在软件开发中变得越来越重要,它们能显著提升效率和代码质量。本文就来分享一下我用腾讯云AI代码助手的经历,看看它是怎么在开发中帮了大忙的。 开发环境介绍 这次的项目用的是JavaScript,开发环境是Windows 10…

用于胰腺癌自动化综述报告和可切除性分类的大型语言模型| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Large Language Models for Automated Synoptic Reports and Resectability Categorization in Pancreatic Cancer 用于胰腺癌自动化综述报告和可切除性分类的大型语言模型 Background 背景 Structured radiology reports for pancreatic ductal adenocarcinom…

condition字符串匹配问题

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 fs使用dialplan配置文件执行业务流程,condition条件变量的配置是必然会使用的,这里记录一次配置过程中的错误示范。 环境 CentOS 7.9 freeswitch 1.10.7 问题描述 dialplan配置如下&#xf…

如何做到项目真实性优化?保姆级写简历指南第五弹!

大家好,我是程序员鱼皮。做知识分享这些年来,我看过太多简历、也帮忙修改过很多的简历,发现很多同学是完全不会写简历的、会犯很多常见的问题,不能把自己的优势充分展示出来,导致措施了很多面试机会,实在是…

pdf拆分需要怎么做?6个软件帮助你快速拆分pdf文件

pdf拆分需要怎么做?6个软件帮助你快速拆分pdf文件 拆分PDF文件可以让你更方便地处理和管理文档内容,无论是提取特定页面还是将文件分成更小的部分。以下是六款帮助你快速拆分PDF文件的软件,每款软件都有其独特的功能和优势,供你选…