Helm学习笔记

2023-11-11

概念

定义

学习helm首先得了解helm是什么,我们先来看一下helm的定义:helm是将kubernetes的各种资源对象打包,类似于Linux中的yum工具,来完成复杂软件的安装和部署,并且支持部署实例的版本管理,简化了在kubernetes上部署和管理应用的复杂度。helm使用的包格式被称为chart,chart就是一个描述所有kubernetes资源的文件集合,一个chart用于部署一个完整的应用。

helm组件

helm的相关组件有以下几种:
1.helm:一个命令行工具,用于本地开发以及管理chart还有进行chart仓库管理等等
2.Tiller:helm的服务端,tiller负责接受helm的请求,与k8s的apiserver交互,根据chart来生成一个release并管理release。这个在helm V2版本中使用,Helm V3中已经不再依赖tiller,而是helm客户端程序自己与apiserver交互
3.chart:helm软件包,helm的打包格式叫做chart,它包含一个应用所需资源对象的yaml文件,通常以.tgz的方式提供,也可以是文件夹的方式
4.config:部署时设置到chart中的配置数据
5.release:基于chart和config部署到kubernetes集群中运行的一个实例,一个chart可以被部署多次,每次的release都不相同
6.repository:用于存放和共享chart的仓库
helm中非常重要的一个概念就是chart,所以请认真的理解chart的概念,这对于我们学习helm非常重要

helm的工作流程

1.开发人员将开发好的chart上传到chart仓库
2.运维人员基于chart的定义,设置必要的配置数据(config),使用helm命令行工具将应用一键部署到kubernetes集群中,以release概念管理后续的更新、回滚等
3.chart仓库中的chart可以用于共享和分发

helm安装

helm的安装方式有多种,建议参考官方文档,我采用的是二进制安装方式,从官方网站上获取到helm的二进制文件,然后将其传输到Kubernetes的master节点上,解压缩后放到/usr/local/bin下面,并改名为helm,然后授予可执行权限即可
通过helm version命令可以查看helm的安装是否成功

helm仓库

helm中的一个非常重要的概念是chart仓库,就像我们使用Linux下载软件也需要添加正确的源,docker下载镜像需要添加正确的镜像仓库一样,helm部署应用也需要使用正确的helm仓库,也称为chart仓库。chart仓库你可以自己构建,然后上传你自己构建的chart包,也可以添加一些官方或者别人提供的仓库。下面通过一些实际操作来展示helm仓库的操作
添加chart仓库,例如添加一个官方提供的稳定仓库:

helm repo add stable https://charts.helm.sh/stable

查询添加的stable仓库中可部署的chart列表:

helm search repo stable

除了我们添加的stable仓库外,我们还可以通过helm官方提供的Artifact Hub(Artiface Hub)来查询可部署的应用,Artifact Hub会提供来自不同仓库的大量的chart列表,并且提供给你相应的部署方式,感兴趣的可以去它的官网看看:

helm search hub

之前的查询是不过滤查询,会显示所有可用的chart,也可以添加关键字过滤查询,如查询包含mysql的chart列表:

helm search hub mysql

总结一下,关于chart仓库常用的操作命令有以下:

helm repo list			#查看添加的仓库列表
helm repo add stable https://charts.helm.sh/stable	#添加仓库
helm repo update		#更新仓库中chart列表
hlm repo remove stable	#删除一个仓库

helm部署应用

我们使用helm最重要的就是希望通过helm来简化我们在Kubernetes中部署应用的流程,所以究竟如何通过helm部署应用呢?
首先学习helm部署应用的命令:helm install,它最少需要两个仓库,分别是release的名称(自定义)以及chart名称(可以通过helm search查询得到),如果不想要自定义release的名称,希望helm自动生成release名称,可以在后面添加-- generate- name参数
例如部署一个mariadb的应用:

helm install mariadb-1 stable/mariadb

查询helm是否部署成功:

helm list -A			#可以查询到所有helm部署的应用
helm status mariadb-1		#可以查询到mariadb-1这个release的部署状态

以上这种部署方式是最简单粗暴的,但是这里面所有的东西多是官方提供的固定的,包括创建的副本数,名称,mariadb中root用户的密码等,都是这个helm中提前定义好的,这显然是不符合我们的实际使用的,我们希望这个helm部署的应用能够更加符合我们的实际需求,这就需要修改其中的很多参数,那么如何使用helm部署一个符合自己使用习惯的mariadb呢?
假如我的需求是部署一个mariadb,不想要一主一从,只需要一个master就可以了,然后root用户的密码设置为abc123,这应该如何实现呢?
首先chart它是有提供一个values.yaml文件供我们修改的,通过这个yaml文件我们可以定义自己想要的参数,但是我们如何知道一个应用有哪些参数可以修改呢,通过helm show values stable/mariadb这个命令可以查看到chart可以配置的选项,然后修改配置项的方式也有两种,可以写一个yaml文件进行覆盖,也可以使用-- set的方式直接在创建时候的命令行中进行修改,这里我选择第一种方式

  1. mariadb的chart中定义了PVC,所以我们首先需要在我们的Kubernetes集群中创建PV
    在这里插入图片描述
    2.自定义配置文件进行覆盖
    在这里插入图片描述
    3.部署应用:helm install -f mariadb.yaml mariadb-1 stable/mariadb,此时pod是正常运行的状态,如果没有提前准备PV,那么pod将是pending状态

helm应用的更新或回退或卸载

当一个chart有新版本发布或者需要修改已部署的release的配置时,可以使用helm upgrade命令完成应用的更新
更新release的配置信息

helm upgrade -f user1.yaml mariadb-1 stable/mariadb      	#user1.yaml是你需要修改的配置信息的yaml文件
helm get values mariadb-1	#可以查看自定义的配置信息

更新mariadb的密码

helm upgrade --set rootUser.password="abc123",replication.password="rep123456" mariadb-1 stable/mariadb

更新后release的revision会被更新为2,可以通过helm list查看
helm回滚可以使用helm rollback命令完成
上述更新中如果想回退为版本1:helm rollback mariadb-1 1
release的revision号是持续增加的,每次安装更新或者回滚,修订号都会加1,所以上面回退为版本1后,现在helm list查看版本会为3,helm history mariadb-1可以查看release的修订历史记录(mariadb-1是release名称)
如果想卸载一个release,可以使用helm uninstall命令,后面跟release名称
卸载一个release的同时会删除历史记录,如果想要保留历史记录,需要在卸载时添加参数–keep-history,helm uninstall mariadb-1 --keey-history
helm list --uninstalled命令可以查看–keep-history保留的卸载记录,但是由于这个release已经删除了,所以不能再回滚已卸载的release的某个版本了

如果你对helm感兴趣,还可以去学习如何自己构建一个chart包,这个过程也很有趣,就是将自己的Kubernetes中的yaml文件规整,然后抽取出一个values.yaml文件供人修改,然后使用helm package打包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Helm学习笔记 的相关文章

随机推荐

  • uniapp的websocket的使用

    1 websocket的封装 uniapp获取websocket返回来的数据可以采用Vuex进行存储 class websocketUtil constructor url time url 是请求的后端的地址 time 是心跳包的时间 t
  • 【MAC终端UI自动化】获取当前最前端的应用程序

    目的 在操作当前应用后 弹出一个系统弹窗 想定位到这个弹窗 方法一 没搞定 期待大佬解答 想到atomac有个获取当前最前端的应用程序的方法getFrontmostApp a atomac getFrontmostApp print a 返
  • Proxy error: Could not proxy request... 问题解决

    背景 最近在项目中发现一个问题 每次npm run serve 时都是正常的 每次重新编译后就会有下面的提示 Proxy error Could not proxy request Manage repairDelivery settlem
  • cppkafka是什么 和librdkafka关系

    最近日志审计对接日志中心的开发 需要设计kafka相关的一些东西 因此了解了一些 在github 的 kafka官网上看到有 Language bindings 不太清楚其中的 cppkafka 是什么东西 能用来做什么 多方了解后才明白
  • C语言树莓派PICO,RP2040(树莓派Pico) PIO – 实例分析&编程

    这次拿来开刀的是WS2812 具体代码可见 gt https github com raspberrypi pico examples blob master pio ws2812 ws2812 pio program ws2812 sid
  • 什么是边缘计算网关?

    边缘计算网关 简称 边缘网关 将云端功能扩展到本地的边缘设备 使边缘设备能够快速自主地响应本地事件 提供低延时 低成本 隐私安全 本地自治的本地计算服务 同时所有服务都以 Docker 镜像方式安装 真正做到了跨平台 部署快捷 易管理 在链
  • MYSQL----union与limit

    union 1 union操作符用于合并两个或多个 SELECT 语句的结果集 2 union内部的 SELECT 语句必须拥有相同数量的列 列也必须拥有相似的数据类型 同时 每条 SELECT 语句中的列的顺序必须相同 limit 1 l
  • Jmeter使用篇(六) : Jmeter集合点

    配置Jmeter集合点的方法 1 需要设置集合点 进行并发同步 则需要在请求之前进行集合点的设置 具体位置在 添加 定时器 Synchronizing Timer 同步定时器
  • 01-LED-Blink-Demo(开发环境esp-idf)

    Blink Example This example code is in the Public Domain or CC0 licensed at your option Unless required by applicable law
  • 使用 STM32 的 SPI 来读取外部 SPI FLASH 芯片(W25Qxx)

    SPI简介 SPI 是英语 Serial Peripheral interface 的缩写 顾名思义就是串行外围设备接口 是 Motorola 首先在其 MC68HCXX 系列处理器上定义的 SPI 接口主要应用在 EEPROM FLASH
  • LeetCode刷题笔记:1619.删除某些元素后的数组均值

    1 问题描述 给你一个整数数组 arr 请你删除最小 5 的数字和最大 5 的数字后 剩余数字的平均值 与 标准答案 误差在 10 5 的结果都被视为正确结果 2 解题思路 先排序 再从数组下标5 处开始遍历 到数组下标95 截止 3 代码
  • 设计模式1:单例模式、工厂、创建者、原型

    设计模式 一种抽象 总结 Gang of Four GOF 分类 3大类23种 创建型模式 结构型模式和行为型模式 几个设计原则 接口分离 依赖倒置 原则 编程面向接口而不是实现 单一原则 单一部分完成特定的分类功能 封装 开闭原则 对修改
  • Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

    为了使用cuda和pcl共同编程 而系统带的pcl1 7不带gpu模块 故编译安装pcl完全版 与系统pcl1 7共存 不同分发版本Ubuntu应该没有什么区别 不同版本pcl编译和使用道理也都基本相同 opencv也是一样的道理 PCL
  • 嵌入式系统原理及应用(基于STM32)救急专用

    目录 第一章 嵌入式系统概述 第二章 嵌入式系统基础知识 第三章 STM32系列微控制器 第四章 通用输入输出端口 第五章 异常与中断处理 第六章 定时器 第七章 串行通信接口 第八章 模数转换器 数模转换器 第一章 嵌入式系统概述 嵌入式
  • 剑指offer.13.机器人的运动范围之DFS、BFS搜索

    机器人的运动范围 前言 一 DFS 1 思想 2 源码 二 BFS 1 源码 2 改进源码BFS 总结 前言 对于矩阵搜索问题 就像图的搜索一样 熟练掌握DFS BFS是关键 一 DFS 1 思想 通过DFS去寻找满足条件的格子 而已经访问
  • 用了SSD开机还是很慢?这些拖慢开机的原因你知道吗

    一 4K未对齐 如今新装机多半会选择安装SSD 固态硬盘 而要想让固态硬盘发挥应有的实力 4K对齐是一项必做的操作 4K对齐需要在分区环节完成 可以借助Win10安装程序 使用Win10安装程序分区后自动为4K对齐状态 或者专用的分区软件
  • 存储系统概述——SRAM静态随机存储器

    一 存储系统的概述 目前存储器的特点是 速度快的存储器价格贵 容量小 价格低的存储器速度慢 容量大 在计算机存储器体系结构设计时 我们希望存储器系统的性能高 价格低 那么在存储器系统设计时 应当在存储器容量 速度和价格方面的因素作折中考虑
  • c语言顺序表

    1 创建顺序表 产生随机数 2 查找元素的位置 3 插入元素 4 删除元素 5 输出元素 6 1 颜色和坐标函数 6 2 菜单 6 3蛇 7 完整代码 8 效果图片 开始 库函数 创建结构体 include
  • echarts线性渐变

    1 0 0 1分别代表了右 下 左 上四个位置的颜色坐标 然后再在下方编写 offset 0 color 00FF00 代表颜色坐标为0的颜色 offset 0 5 color 3A8EE6 代表颜色坐标为0 5的颜色 offset 0 8
  • Helm学习笔记

    文章目录 概念 定义 helm组件 helm的工作流程 helm安装 helm仓库 helm部署应用 helm应用的更新或回退或卸载 概念 定义 学习helm首先得了解helm是什么 我们先来看一下helm的定义 helm是将kuberne