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/helmsource <(helm completion bash)
source /etc/profilehelm version
#查看helm版本v3.122. 安装仓库:
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.yamlversion: 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: 512Mihelm lint nginx
#验证语法。需要在chart目录的上一层检测。如果在目录内检测会报错

helm package nginx/
#将自定义的chart文件打包
Successfully packaged chart and saved it to: /opt/helm/nginx-0.1.0.tgzhelm 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: NodePortport: 80nodePort: 31000
ingress:enabled: falsevim 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-verifyhelm 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表示指定回滚点

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web开发4:单元测试

在Web开发中&#xff0c;单元测试是一种重要的开发实践&#xff0c;它可以帮助我们确保代码的质量和可靠性。通过编写和运行单元测试&#xff0c;我们可以验证代码的正确性&#xff0c;减少错误和缺陷&#xff0c;并提高代码的可维护性。本文将介绍单元测试的概念、好处以及如何…

探索无限:山海鲸可视化搭建的地理展览馆的奇幻之旅

在浩瀚的数字世界中&#xff0c;你是否曾渴望探寻那未曾踏足的秘境&#xff0c;感受大自然的鬼斧神工&#xff0c;或是追溯那遥远的文明印记&#xff1f;现在&#xff0c;山海鲸可视化为你揭开了这一奇幻的探索之旅。 置身山海鲸的世界&#xff0c;就如同手握一把神奇的钥匙&am…

Java框架篇面试题

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d7;本文收录于java面试题系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏Rust初阶教程、go语言基…

c语言小游戏之扫雷

目录 一&#xff1a;游戏设计理念及思路 二&#xff1a;初步规划的游戏界面 三&#xff1a;开始扫雷游戏的实现 注&#xff1a;1.创建三个文件&#xff0c;test.c用来测试整个游戏的运行&#xff0c;game.c用来实现扫雷游戏的主体&#xff0c;game.h用来函数声明和包含头文…

如何在飞书创建企业ChatGPT智能问答助手应用并实现公网远程访问(1)

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

Java 数据结构集合

文章目录 Java 数据结构1. 基本数据结构1.1 数组 (Array)1.2 链表 (Linked List)1.3 栈 (Stack)1.4 队列 (Queue)双向队列优先级队列 2. 树形数据结构2.1 二叉树 (Binary Tree)2.2 堆 (Heap) 3. 散列数据结构3.1 哈希表 (Hash Map)3.2 LinkedHashMap3.3 TreeMapConcurrentHashM…

【python文件】生成的csv文件没两行数据之间有一个空行

问题描述 用python代码将数据写入csv文件&#xff0c;但生成的csv文件没两行数据之间有一个空行&#xff0c;如下图所示&#xff1a; 解决办法 在open函数中添加newline&#xff0c;如以下代码所示&#xff0c;即可解决这一问题。 with open(r"C:\Users\xxx\Desktop\DR…

Linux的奇妙冒险———vim的用法和本地配置

vim的用法和本地配置 一.vim的组成和功能。1.什么是vim2.vim的多种模式 二.文本编辑&#xff08;普通模式&#xff09;的快捷使用1.快速复制&#xff0c;粘贴&#xff0c;剪切。2.撤销&#xff0c;返回上一步操作3.光标的控制4.文本快捷变换5.批量化操作和注释 三.底行模式四.v…

【征服Redis12】redis的主从复制问题

从现在开始&#xff0c;我们来讨论redis集群的问题&#xff0c;在前面我们介绍了RDB和AOF两种同步机制&#xff0c;那你是否考虑过这两个机制有什么用呢&#xff1f;其中的一个重要作用就是为了集群同步设计的。 Redis是一个高性能的键值存储系统&#xff0c;广泛应用于Web应用…

服务器感染了.wis[[Rast@airmail.cc]].wis勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 在当今数字化的时代&#xff0c;恶意软件攻击已经变得越来越复杂和狡猾&#xff0c;[[MyFilewaifu.club]].wis [[backupwaifu.club]].wis[[Rastairmail.cc]].wis勒索病毒是其中的一种新威胁。本文91数据恢复将深入介绍[[MyFilewaifu.club]].wis [[backupwaif…

Dify学习笔记-基础介绍(一)

1、简介 Dify AI是一款强大的LLMOps&#xff08;Language Model Operations&#xff09;平台&#xff0c;专为用户提供便捷的人工智能应用程序开发体验。 该平台支持GPT系列模型和其他模型&#xff0c;适用于各种团队&#xff0c;无论是用于内部还是外部的AI应用程序开发。 它…

基于springboot+vue的美容院管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

JAVA用Zxing生成的二维码扫码桩识别出现\000026

使用Zxing生成的二维码&#xff0c;扫码桩扫描偶先扫描出\000026 文章目录 [TOC](文章目录) 前言一、出现原因分析二、解决方式三、iso ECI 字符集编码说明 前言 Hutool QrCodeUtil&#xff08;底层Zxing&#xff09; 生成二维码扫码桩扫描二维码 出现类似&#xff1a;"\…

react18介绍

改进已有属性&#xff0c;如自动批量处理【setState】、改进Suspense、组件返回undefined不再报错等 支持Concurrent模式&#xff0c;带来新的API&#xff0c;如useTransition、useDeferredValue等 如何升级React 18 npm install reactlatest react-domlatestnpm install ty…

python pip安装包时,出现 WARNING: Ignoring invalid distributio xxxx,解决办法

pip安装包时&#xff0c;出现 WARNING: Ignoring invalid distributio xxxx&#xff0c;解决办法 遇到的问题&#xff0c;如图 这个问题其实就是python环境下的包无效了&#xff0c;找到WARNING: Ignoring invalid distributio xxxx后面对应的路径&#xff0c;删除对应的~XXXX…

Android开发--状态栏布局隐藏的方法

1.问题如下&#xff0c;安卓布局很不协调 2.先将ActionBar设置为NoActionBar 先打开styles.xml 3.使用工具类 package com.afison.newfault.utils;import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graph…

TortoiseSVN源码安装与迁移全攻略

一、前言 随着版本控制系统的普及&#xff0c;越来越多的开发者和团队开始使用SVN&#xff08;Subversion&#xff09;来管理代码。本文将详细介绍TortoiseSVN的源码安装及迁移过程&#xff0c;帮助您轻松掌握这一版本控制工具。 二、TortoiseSVN源码安装 依赖环境安装&…

Window安装Python和开发Pycharm

准备&#xff1a; 1&#xff1a;安装Python环境 https://www.python.org/downloads/windows/ 2: 下载Pycharm https://www.jetbrains.com/pycharm/download/other.html

快速排序

快速排序 概况步骤代码示例输出结果 要想学习快速排序&#xff0c;前提必须了解 递归算法 概况 快速排序是一种高效的排序算法&#xff0c;它采用了分治的策略。 基本思想是选择一个基准数&#xff0c;通过一趟排序将待排序序列划分成两个子序列&#xff0c;其中一个子序列的…

乔迁新居发言

亲爱的家人们&#xff0c;大家好&#xff01; 非常感谢大家在百忙之中抽出宝贵的时间来到这里为我们的新居增添福气。我代表我和田小帆对大家的到来表示热烈的欢迎和衷心的感谢。 在这个特殊的时刻&#xff0c;我对我们小家庭建设过程中帮助我们的所有亲人、朋友和同学们表示由…