【K8S 云原生】K8S的包包管理器-helm

news/2024/7/3 17:43:54 标签: 云原生, kubernetes, 容器

目录

一、helm概念

1、什么是helm

2、helm的概念:

二、实验部署:

1、安装helm:

2、对chart仓库的基本使用:

2.1、查看和更新chart仓库

2.2、安装chart

2.3、卸载chart:

3、helm自定义模版:

3.1、使用官方模版

3.2、使用自定义模版

1、方法1:基于目录安装:

2、方法2:基于目录打包好的压缩包安装

4、chart的回滚:

5、Helm 的私有仓库-Habor

三、总结:

helm的常用命令:


一、helm概念

1、什么是helm

 每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedHat、CentOS 的 yum。Helm 则是 Kubernetes上 的包管理器,方便我们更好的管理应用。

在没有这个helm之前,deployment service ingress helm的作用就是通过打包的方式,把deployment service ingress 这些打包在一块,一键式部署服务,类似于yum

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

2、helm的概念:

三个部分组成:

cahrt:helm软件包,service ingress ,定义好的yaml资源,类似于yum的rpm包。

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

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

二、实验部署:

1、安装helm:

将helm-v3.12.0-linux-amd64.tar.gz上传到/opt/helm中
cd linux-amd64/
mv helm /usr/local/bin/helm
helm version
#查看helm版本


vim /etc/profile
#设置环境变量,系统识别helm命令
source <(helm completion bash)

添加常用的仓库:
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

2、对chart仓库的基本使用:

2.1、查看和更新chart仓库
helm repo list 查看仓库列表
helm repo update 更新仓库资源
helm search repo bitnami | grep nginx	 查看指定仓库,是否有nginx资源

2.2、安装chart
helm install my-nginx bitnami/nginx -n default
helm install:安装
my-nginx:release安装的名称或者版本
bitanami/nginx:bitnami仓库名,nginx就是chart一系列yaml文件的集合
- n:指定命名空间安装


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

kubectl edit svc my-nginx
可以改service类型

2.3、卸载chart:
helm uninstall my-nginx
卸载之后,pod、deployment和service都会被删除

如何在helm当中自定义模板

3、helm自定义模版:

根据自己的需求,定义chart。然后部署到

实验举例

3.1、使用官方模版

使用官方模版,这是官方提供的安装包

helm pull stable/mysql
tar -xf mysql-1.6.9.tgz

charts:用于存储依赖环境,如果这个chart依赖于其他chart,依赖文件会保存在这个目录中
chart.yaml:helm chart的元数据文件,包含了这个chart的名称版本以及维护者信息等
Template:包含清单模版的目录
deployment.yaml:部署应用的模版文件
helpers.tpl:帮助文档,告诉用户如何定义模版的值
hpa.yaml:定义了应用程序副本数的扩缩容行为
ingress.yaml:定义外部流量如何转发到应用程序
NOTES.txt:注意事项
serviceaccount.yaml:应用程序的服务账号
service.yaml:集群内部的访问配置
tests/test-connection.yaml:测试目录和文件,部署完chart之后,可以用来测试的文件
values.yaml:核心文件,自定义的值,都是通过values里面的配置,把我们的数据覆盖到安装的chart

3.2、使用自定义模版

我们可以自己自定义一个安装包

helm create nginx

定义配置文件:

vim Chart.yaml

helm lint nginx
检测

helm package nginx

#将自定义的chart文件打包
helm install nginx-11 ./nginx --dry-run --debug
#测试,不会部署到集群中
helm install:安装chart
nginx-11:release版本号,名称
./nginx:使用当前目录下的nginx chart
--dry-run --debug:这个chart不会被部署到集群中,用于参数验证,测试chart的配置是否正确

1、方法1:基于目录安装
helm install nginx-11 ./nginx -n default.
#运行chart,并且部署
kubectl get pod,svc,ingress

可以用目录安装,也能使用打包压缩文件安装

修改chart之后,重新部署、回滚、如何上传到harbor仓库

2、方法2:基于目录打包好的压缩包安装
helm uninstall nginx-11
#先卸载
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

vim service.yaml

vim values.yaml


 

helm upgrade nginx-11 nginx
#重载运行

curl 20.0.0.61:31000
访问测试

4、chart的回滚:

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

 

helm rollback nginx-11 1
#回滚

5、Helm 的私有仓库-Habor

如何上传到harbor仓库

上传到harbor:

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



./install.sh
#重新安装harbor

 

以下操作在master1上操作

 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解压:
tar -xf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push/

在harbor上创建新项目,权限是公开

上传chart到harbor仓库
helm push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify
#--insecure-skip-tls-verify:跳过tls验证

测试从仓库下载,安装

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

三、总结:

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

helm的常用命令:

helm repo add 仓库名 url地址(4个) 
#添加仓库
helm repo update 仓库名
#不加仓库名,更新所有仓库
helm repo list
#仓库列表
helm repo remove 仓库名
#删除仓库
helm show chart stable/nginx
#查看指定仓库nginx的信息
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,这里面的值会传给Template里面的yaml文件
helm install nginx-11 ./nginx
helm install nginx-11 ./nginx-0.1.0.tgz

如何打包创建好的chart:
helm package nginx

回滚:
helm history nginx-11 
helm rollback nginx-11 标签(1/2/3)


http://www.niftyadmin.cn/n/5340818.html

相关文章

【TEE】片外内存保护:AES分组算法+MAC完整性验证

文章目录 片外内存攻击面AES分组算法保护机密性1.ECB模式&#xff08;电子密码本模式&#xff09;2.CBC模式&#xff08;密码分组链接模式&#xff09;3.CTR模式&#xff08;计数器模式&#xff09;4.CFB模式&#xff08;密码反馈模式&#xff09;5.OFB模式&#xff08;输出反馈…

数据结构:堆与堆排序

目录 堆的定义&#xff1a; 堆的实现&#xff1a; 堆的元素插入&#xff1a; 堆元素删除&#xff1a; 堆初始化与销毁&#xff1a; 堆排序&#xff1a; 堆的定义&#xff1a; 堆是一种完全二叉树&#xff0c;完全二叉树定义如下&#xff1a; 一棵深度为k的有n个结点的二…

C++ //练习 2.35 判断下列定义推断出的类型是什么,然后编写程序进行验证。

C Primer&#xff08;第5版&#xff09; 练习 2.35 练习 2.35 判断下列定义推断出的类型是什么&#xff0c;然后编写程序进行验证。 const int i 42; auto j i; const auto &k i; auto *p &i; const auto j2 i, &k2 i;环境&#xff1a;Linux Ubuntu&#x…

Kong关键概念 - 路由(Routes)

路由&#xff08;Routes&#xff09; 路由决定在请求到达Kong Gateway之后如何&#xff08;以及是否&#xff09;将其发送到其服务。服务代表后端API&#xff0c;而路由定义了对客户端暴露的内容。 一个单独的服务可以有多个路由。一旦匹配到路由&#xff0c;Kong Gateway会将…

51单片机1-6

目录 单片机介绍 点亮一个LED 流水灯参考代码 点亮流水LEDplus版本 独立按键 独立按键控制LED亮灭 静态数码管 静态数码管显示 动态数码管显示 模块化编程 调试工具 矩阵键盘 矩阵键盘显示数据 矩阵键盘密码锁 学习B站江协科技课程笔记。 安装keil&#xff0c;下…

【目标检测】YOLOv7算法实现(二):正样本匹配(SimOTA)与损失计算

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github&#xff0c;删减了源码中部分内容&#xff0c;满足个人科研需求。   本篇文章在YOLOv5算法实现的基础上&#xff0c;进一步完成YOLOv7算法的实现。…

Kafka-服务端-日志存储

基本概念 首先需要了解的是&#xff0c;Kafka使用日志文件的方式保存生产者发送的消息。每条消息都有一个offset值来表示它在分区中的偏移量&#xff0c;这个offset值是逻辑值&#xff0c;并不是消息实际存放的物理地址。 offset值类似于数据库表中的主键&#xff0c;主键唯一…

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin 在 Android双击图片放大移动图中双击点到ImageView区域中心&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;这次使用ScaleGestureDetector检测两根手指的缩放动作&a…