k8s---helm

Helm是什么?

在没有helm之前。部署一个服务,需要deployment、service、ingress、挂在卷等等相关配置都需要人工来配置。

helm的作用就是通过打包的方式,把需要人工编写的配置集成在一起。是一键式的部署服务。类似于yum功能。

由官方提供的一个类似于安装仓库的功能,开源实现以简化部署应用。

helm由哪些部分组成?

helm由三个部分组成:

  1. chart:helm的软件包、部署包、service、ingress。是一些定义好的yaml资源。类似于yum的rpm包

  2. Release:可以理解为版本。也可以理解为在安装过程中,给部署的应用起一个名字。

  3. Repository:仓库,提供一个服务器,这个服务器当中包含chart的资源,提供yaml资源的保存地址。

由于helm2已经被淘汰了。helm3成为主流。以下均是对helm3的讨论

helm3是纯命令行方式

安装helm:

1. 安装helm:
tar -xf helm-v3.12.0-linux-amd64.tar.gz 
cd linux-amd64/
mv helm /usr/local/bin/helm

source <(helm completion bash)
source /etc/profile

helm version
#查看helm版本v3.12

2. 安装仓库:
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

命令行命令:
helm repo list
#查看仓库列表

helm repo update
#如何更新仓库的资源

语法: helm search repo aliyun | grep 服务名称
helm search repo aliyun | grep nginx
#过滤查找你需要的服务

语法: helm show chart 仓库名/应用名
helm show chart bitnami/nginx
#查看简要信息
helm show all bitnami/nginx
#查看详细信息

语法:helm install 名称 仓库名/应用名 -n 指定命名空间
helm install my-nginx bitnami/nginx -n default
#helm install:安装
#my-nginx:release安装的名称或者版本
#bitnami/nginx: bitnami是仓库名。nginx就是chart一些列yaml的资源的结合
#安装一个版本叫my-nginx的服务从bitnami仓库下载。指定的chart是nginx
#-n:指定命名空间

这个资源包里面包含nginx的pod、deployment、service

语法:helm uninstall 名称
helm uninstall my-nginx
#一键删除所有

helm install bitnami/nginx --generate-name
#--generate-name:随机生成一个release名称

helm ls
helm list
#查看当前安装的所有release

如何在helm当中自定义模板

根据自己的需求定义chart。根据自定义模板部署到集群当中去。

实验举例:

helm pull stable/mysql
tar -xf mysql-1.6.9.tgz
通过tree查看文件包含哪些内容
这时官方提供的安装包

我们可以自己自定义一个安装包
helm create nginx
tree nginx/

nginx/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   ├── _helpers.tpl
│   ├── hpa.yaml
│   ├── ingress.yaml
│   ├── NOTES.txt
│   ├── serviceaccount.yaml
│   ├── service.yaml
│   └── tests
│       └── test-connection.yaml
└── values.yaml
组织结构解析:
charts:用于存储依赖。如果这个chart依赖于其他的chart,依赖文件保存在这个目录
Chart.yaml:helm chart的元数据文件,包含了这个chart的名称,版本,维护者信息等等
templates:包含清单模板的目录
deployment.yaml:部署应用的模板文件
helpers.tpl:帮助文档,告诉用户如何来定义模板的值
hpa.yaml:定义了应用程序副本数的扩缩容行为
ingress.yaml:定义外部流量如何转发到应用程序
NOTES.txt:注意事项
serviceaccount.yaml:应用程序的服务账号
service.yaml:集群内部的访问配置
tests、test-connection.yaml:测试的目录和文件。部署完成chart后可以使用它来进行测试验证的文件。
values.yaml:核心文件,自定义的值都是通过values.yaml把数据覆盖到安装的chart。

vim Chart.yaml

version: 0.1.0
#部署完之后如果打包,那么版本就是0.1.0版本

实现自定义访问:
cd nginx/
vim values.yaml 
所有在这里定义的值都会传参到各个yaml文件中
修改一些内容
replicaCount: 3
#表示会创建几个副本,传入一个值定义副本数为3个
tag: "1.22"
#指定nginx镜像的版本,可以自定义
create: true
enabled: true
- host: www.lucky-cloud.com
pathType: Prefix
limits:
cpu: 1000m
memory: 512Mi

helm lint nginx
#验证语法。需要在chart目录的上一层检测。如果在目录内检测会报错

helm package nginx/
#将自定义的chart文件打包
Successfully packaged chart and saved it to: /opt/helm/nginx-0.1.0.tgz

helm install nginx-11 ./nginx --dry-run --debug
#helm install:安装chart
#nginx-11:release版本号
#./nginx:当前目录下的nginx的chart
#--dry-run --debug:这个chart不会被部署到集群当中,验证参数,测试chart的配置是否正确。

方法1:基于目录安装
helm install nginx-11 ./nginx -n default
#一键部署当前目录下的nginx-chart取名叫nginx-11并且指定命名空间

helm uninstall nginx-11
#一键删除

方法2:基于目录打包好的压缩包安装
helm install nginx-11 /opt/helm/nginx-0.1.0.tgz -n default
#使用压缩包安装

修改chart之后如何重新部署

vim values.yaml
修改一些内容做为区分
service:
  type: NodePort
  port: 80
  nodePort: 31000
ingress:
  enabled: false

vim service.yaml
nodePort: {{.Values.service.nodePort}}
#go语言的语法将values.yaml中定义的端口传到service.yaml文件中

vim Chart.yaml
version: 0.2.0
#修改版本号做区分

helm upgrade nginx-11 nginx

如何回滚

helm history nginx-11
#查看chart的回滚点

helm rollback nginx-11 1
#回滚

如何上传到harbor仓库

vim harbor.yml
./install.sh
#执行重新安装仓库
harbor_admin_password: 123456
chart:
  absolute_url: enabled
  #在chart当中使用绝对路径的URL例如:http://hub.test.com/charts
  $chart上传不支持相对路径


  mkdir -p ~/.local/share/helm/plugins/helm-push
  #创建一个helm插件的目录
  docker login -u admin -p 123456 https://hub.test.com
  #登录docker-hub仓库测试
  
  helm package nginx
  #打包nginx为压缩包
  
 helm push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify
 #--insecure-skip-tls-verify:跳过tls验证

上传成功

重新从hub仓库拉取测试:

helm pull oci://hub.test.com/charts/nginx --version 0.2.0 --insecure-skip-tls-verify

helm install nginx-22 ./nginx-0.2.0.tgz
#直接通过安装包安装即可

总结

helm就是一个部署微服务的工具,可以跳过繁琐的自定义yaml过程,一键式拉取和部署号素有自定义或者模板自定义的服务

helm的常用命令:

 

helm repo add 仓库名 url地址:添加仓库
helm repo update 不加仓库名:就是更新所有仓库
helm repo list:仓库列表
helm repo remove 仓库名
helm show chart stable/nginx:查看chart信息
helm show all stable/nginx:查看详细信息
helm install nginx-11 stable/nginx -n lucky-cloud:安装chart,安装官网的默认版本
helm uninstall nginx-11:删除安装好的chart
helm list:查看已经安装的chart

自定义模板:
helm create nginx:创建一个自定义的chart模板
values.yaml:这里的值会传递给templates里面的yaml真贱

helm install nginx-11 ./nginx
helm install nginx-11 ./nginx-0.1.0.tgz
两种安装部署chart的方式都可以

helm package nginx:打包创建好的chart

回滚:
helm history nginx-11
helm rollback nginx-11 1:回滚 1表示指定回滚点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JDK 版本切换工具 JEnv

1. 下载 JEnv 包 下载地址&#xff1a; JEnv-for-Windows 下载 JEnv.zip 然后解压缩&#xff0c;放到一个目录下&#xff0c;我这里放到了目录&#xff1a;D:\Program Files\JEnv 2. 将 JEnv 添加到环境变量 首先先在自己的电脑上去下载 JAVA 的各个版本&#xff0c;我这里…

webassembly003 whisper.cpp的python绑定实现+Cython+Setuptools

python绑定项目 官方未提供python的封装绑定&#xff0c;直接调用执行文件 https://github.com/stlukey/whispercpp.py提供了源码和Cpython结合的绑定 https://github.com/zhujun1980/whispercpp_py提供了ctype方式的绑定&#xff0c;需要先make libwhisper.so Pybind11 bi…

全网盘点内网穿透端口映射工具大整理,近百种端口映射工具使用方法介绍以及特性和优缺点分析

全网盘点内网穿透端口映射工具大整理&#xff0c;近百种端口映射工具使用方法介绍以及特性和优缺点分析。 “端口映射”通俗来说就是将外网主机的IP地址端口映射到内网中一台机器&#xff0c;提供相应的服务。内网相通&#xff0c;电因特网对外开放服务或者接收大数据&#xff…

【Leetcode】410. 分割数组的最大值

文章目录 题目思路1.max_element2.partial_sum3.upper_bound4.distance 代码运行结果 题目 题目链接 给定一个非负整数数组 nums 和一个整数 k &#xff0c;你需要将这个数组分成 k 个非空的连续子数组。 设计一个算法使得这 k 个子数组各自和的最大值最小。 示例1&#xff1…

JS中splice方法的用法总结

1. 概述 JavaScript中的splice()方法是用于增加、删除或替换数组中的元素。这个方法可以实现数组的细粒度操作,非常灵活和强大。 2. 语法 splice()方法的语法如下所示: start:必需,表示开始删除或插入的索引位置。如果为负数,则从数组的末尾开始计算。deleteCount:可选…

全球地面实测凋落物(Litterfall) 数据集

1. 研究背景 [3] 主要结论&#xff1a;作者结合litterfall数据和SIF/EVI数据&#xff0c;揭示了物候的规律 1. 对于光照和降水异步的地区&#xff08;Rclimate<0&#xff0c;背景是红色&#xff09; 紫色点&#xff08;赤道地区&#xff09;&#xff1a;落叶和长叶都在…

windows和linux下SHA1,MD5,SHA256校验办法

今天更新android studio到Android Studio Hedgehog | 2023.1.1时&#xff0c;发现提示本机安装的git版本太老&#xff0c;于是从git官网下载最新的git。 git下载地址&#xff1a; https://git-scm.com/ 从官网点击下载最新windows版本会跳转到github仓库来下载发布的git&…

一、Lamdba 表达式与函数式接口

一、Lamdba 表达式与函数式接口 1.1 Lamdba 表达式与函数式接口 1.1.1 Lambda 表达式概述 Lambda 表达式是 Java 8 引入的一个新特性Lambda 表达式可以被视为匿名函数允许在需要函数的地方以更简洁的方法定义功能Lambda 表达式可以完成简洁的函数定义Stream API 中大量使用了…

Optional的使用(代替if判断是否为空)

Optional 前言 我的使用 package yimeng;import com.ruoyi.RuoYiApplication; import com.ruoyi.common.core.domain.entity.SysUser; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.*;SpringBootTes…

常用电子器件学习——三极管

三极管介绍 三极管&#xff0c;全称应为半导体三极管&#xff0c;也称双极型晶体管、晶体三极管&#xff0c;是一种电流控制电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号&#xff0c; 也用作无触点开关。晶体三极管&#xff0c;是半导体基本元器件之一&#xf…

专业140+总分420+复旦大学957信号与系统考研经验复旦电子信息与通信

今年专业957信号与系统140&#xff0c;数二140&#xff0c;总分420&#xff0c;顺利上岸复旦大学&#xff0c;回顾这一年的复习&#xff0c;有起有落&#xff0c;也有过犹豫和放弃&#xff0c;好在都坚持下来了&#xff0c;希望大家考研复习要不忘初心&#xff0c;困难肯定是很…

explain工具优化mysql需要达到什么级别?

explain工具优化mysql需要达到什么级别&#xff1f; 一、explain工具是什么&#xff1f;二、explain查询后各字段的含义三、explain查询后type字段有哪些类型&#xff1f;四、type类型需要优化到哪个阶段&#xff1f; 一、explain工具是什么&#xff1f; explain是什么&#x…

未来已来:AI引领智能时代的多领域巨变

大家好&#xff0c;今天我们将深入探讨人工智能如何彻底改变我们的生活方式&#xff0c;领略未来的无限可能性。 1. 医疗革新&#xff1a;AI担任超级医生 医疗领域是AI最引人注目的战场之一。智能医学影像诊断系统&#xff0c;不仅能够精准识别病变&#xff0c;还能辅助医生提…

Springboot+vue的科研工作量管理系统的设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的科研工作量管理系统的设计与实现&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的科研工作量管理系统的设计与实现…

浅谈大数据智能化技术在多个领域的应用实践

摘要 大数据智能化技术在当今信息社会中得到了广泛的应用。从金融、互联网电商、视频行业到垂直短视频领域&#xff0c;从工业互联网到云计算、边缘计算等领域&#xff0c;大数据智能化技术已经成为了企业竞争力的重要组成部分。技术实践、架构设计、指标体系、数据质量、数据分…

历经15年,比特币以强势姿态进军华尔街!270亿美元投资狂潮引发市场震荡!

本月&#xff0c;比特币庆祝了它的15岁生日&#xff0c;并以强势的姿态进军华尔街。最近美国交易所开始交易的比特币交易所交易基金&#xff08;ETF&#xff09;&#xff0c;已经获得了投资者的广泛接受。这一进展标志着比特币作为一种年轻资产迈向成熟的重要里程碑。 根据Glas…

损失函数是指什么

损失函数&#xff08;Loss Function&#xff09;是用来衡量模型预测输出与实际目标之间差异的函数。在机器学习和深度学习中&#xff0c;损失函数是模型训练的关键部分。其目标是通过最小化损失函数来使模型的预测尽可能接近实际的标签或目标值。 在监督学习中&#xff0c;模型…

JavaEE-SSM-订单管理-前端增删改功能实现

3.5 功能2&#xff1a;添加 从列表页面切换到添加页面 编写对应添加页面的路由 * {path: /orderAdd,name: 添加订单,component: () > import(../views/OrderAdd.vue)}编写添加功能 <template><div><table border"1"><tr><td>编…

mysql临时表简述

概述 业务中经常会对一些表进行聚合组装信息&#xff0c;然后筛选&#xff0c;有些表比较数据量大的时候&#xff0c;会对拖慢查询&#xff1b; 常用的mybatis的分页查询&#xff0c;在查询时会先count一下所有数据&#xff0c;然后再limit分页&#xff0c;即使分页也会有深度…

数美滑块协议解析2024/01/24

文章目录 网址分析请求定位代码看算法扣代码传参和轨迹暗坑网址 aHR0cHM6Ly93d3cuaXNodW1laS5jb20vbmV3L3Byb2R1Y3QvdHcvY29kZQ==分析请求 我比较简单,我直接过一下滑块然后看一下请求栈,是一堆混淆后的代码,直接全部拿下来,简单做一下解混淆,方便自己看,不会解混淆的也…