helm介绍-部署helm私有仓库案例

helm介绍-部署helm私有仓库案例

helm介绍-部署helm私有仓库案例

在Kubernetes中部署容器云的应用也是一项有挑战性的工作,Helm就是为了简化在Kubernetes中安装部署容器云应用的一个客户端工具。通过helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用,同时,也可以通过helm进行容器云应用的分享。在Kubeapps Hub中提供了包括Redis、MySQL和Jenkins等常见的应用,通过helm可以使用一条命令就能够将其部署安装在自己的Kubernetes集群中。

Helm是一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。我们可以将Helm看作Kubernetes下的apt-get/yum。

对于应用发布者而言,可以通过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。

对于使用者而言,使用Helm后无须了解Kubernetes的yaml文件语法、应用部署文件。直接使用Helm下载即可在Kubernetes上安装需要的应用。

1)Helm Helm是一个命令行下的客户端工具。主要用于Kubernetes应用程序Chart的创建、打包、发布及创建和管理 本地和远程的Chart仓库。

2)Chart Chart是一个Helm的程序包,包含了运行一个Kubernetes应用程序所需的镜像、依赖关系和资源定义等。

3)Repoistory Repoistory是Helm的软件仓库,Repository本质上是一个Web服务器,该服务器保存了一系列的Chart软件包 以供用户下载,并且提供了该Repository的Chart包的清单文件便于查询。Helm可以同时管理多个不同的Repository。

4)Release Release是应用程序运行Chart之后,得到的一个实例。

部署helm私有仓库

1)node01节点运行web容器作为私有仓库

[root@node01 ~]# mkdir -p /var/www/charts //创建目录,用于存放charts包

[root@node01 ~]# docker run -d -p 8080:80 -v /var/www:/usr/local/apache2/htdocs httpd

或使用Nginx服务

docker run -d -p 8080:80 -v /root/charts:/usr/share/nginx/html nginx

2)master节点上,创建chart包并打包

[root@master ~]# helm create testchart //创建chart包(生成的是目录),名称为testchart

[root@master ~]# helm package testchart //将刚才生成的目录进行打包,会在当前目录下生成名为testchart-0.1.0.tgz的包

3)master节点生成仓库的index文件

[root@master ~]# mkdir myrepo

[root@master ~]# mv testchart-0.1.0.tgz myrepo/ //创建用于存放chart包的目录,并将chart包移动到该目录

[root@master ~]# helm repo index myrepo/ --url
http://192.168.45.141:8080/charts //url路径表示运行web容器的节点IP+端口,也就是指定的是node01节点

[root@master ~]# ls myrepo/ index.yaml testchart-0.1.0.tgz //确认已经生成index.yaml文件

[root@master ~]# scp myrepo/* node01:/var/www/charts //将生成的index.yaml文件及charts包复制到web容器所在节点映射的本地目录

4)将新repo仓库添加到helm

[root@master ~]# helm repo add newrepo
http://192.168.45.141:8080/charts //url是web容器所在的节点的IP+端口+存放chart包的目录,并指定仓库的名称为newrepo

[root@master ~]# helm repo list

NAME URL

stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

local http://127.0.0.1:8879/charts

newrepo http://192.168.45.141:8080/charts

//stable是刚创建helm添加的阿里云的仓库

//local是本地的缓存

//newrepo是刚刚添加的仓库名称(确认该仓库已经存在)

注:配置至此,已经可以正常供内网环境使用这个charts包的私有仓库了,下面是一些验证。

5)搜索可用的chart包并部署

[root@master ~]# helm search testchart

NAME CHART VERSION APP VERSION DESCRIPTION

local/testchart 0.1.0 1.0 A Helm chart for Kubernetes

newrepo/testchart 0.1.0 1.0 A Helm chart for Kubernetes

//local是本地的缓存,不用理会,可以查看到newrepo提供的testchart包

[root@master ~]# helm install newrepo/testchart -n test-nginx

//既然可以搜索到就表示可以使用chart包创建实例

[root@master ~]# kubectl get pod | grep test-nginx

//确认pod运行成功
test-nginx-testchart-64d8585997-jxtv7 1/1 Running 0 33s

[root@master ~]# kubectl describe pod test-nginx-testchart-64d8585997-jxtv7

//查看这个pod的详细信息,并确认pod所使用的镜像

6)更新chart包中所运行服务的镜像

其实就是一个服务版本升级的操作,大概思路如下:修改解压后的charts包目录下的values.yaml文件为所需的值(values.yaml文件包含的是这个服务的值,可以在里面指定镜像及标签、数据持久化的类型等等),修改完成后,再使用下面的命令进行升级操作。

[root@master ~]# helm upgrade -f testchart/values.yaml test-nginx newrepo/testchart

//my-nginx是之前实例的名称,可以通过“helm list”查看实例名称

//newrepo/testchart :为自定义仓库中的chart包

[root@master ~]# kubectl describe pod test-nginx-testchart-6d6984ddd9-gn9sw

//确认pod所使用的镜像已经更新

注:如果使用命令的方式直接进行升级,命令执行完成不会报错,但是镜像并不会更新,推荐使用更改values.yaml的方式进行升级!

7)再次向newrepo仓库上传chart包

[root@master ~]# helm create mychart

[root@master ~]# helm package mychart/

[root@master ~]# mv mychart-0.1.0.tgz myrepo/

[root@master ~]# helm repo index myrepo/ --url http://192.168.45.141:8080/charts

//当有新的chart包时,需更新index.yaml文件

[root@master ~]# scp myrepo/* node01:/var/www/charts

[root@master ~]# helm repo update

//如果需要使用则需更新一下本地的仓库

[root@master ~]# helm search mychart

NAME CHART VERSION APP VERSION DESCRIPTION

local/mychart 0.1.0 1.0 A Helm chart for Kubernetes

newrepo/mychart 0.1.0 1.0 A Helm chart for Kubernetes

//确保新添加的chart包可以被搜索到

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

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

相关文章

前端-vue项目debugger调试

一、前言 有的时候接受同事一个项目,用框架不一样,写的也不太规范,那么就需要打断点去学习改项目的流程了。 那么vue项目是如何debugger调试呢? 二、操作 大概理解一下,vue项目启动,大概是先启动框架&am…

手写前端控制并发任务

思路: 主要通过异步等待队列执行的原理。 当前执行的任务数达到最大值的时候,再继续执行的任务会放入等待队列里,直到当前任务执行结束后,减少一个当前任务数,并且判断队列中是否有任务,如果有则按顺序执…

高效进行文件夹批量改名,轻松实现英文到中文的翻译,让你的文件夹管理更高效!

在数字化时代,我们每天都在与无数的文件夹打交道。而管理这些文件夹,尤其是为它们命名,往往成为一项繁琐而耗时的任务。尤其是当文件夹名以英文命名时,对于非英语用户来说,理解和记忆都可能会成为一道难题。那么如何翻…

LeetCode 0924.尽量减少恶意软件的传播:连通块染色(以BFS为例)

【LetMeFly】924.尽量减少恶意软件的传播:连通块染色(以BFS为例) 力扣题目链接:https://leetcode.cn/problems/minimize-malware-spread/ 给出了一个由 n 个节点组成的网络,用 n n 个邻接矩阵图 graph 表示。在节点…

HarmonyOS4-数据持久化

轻量级preferences: 关系型数据库: 增删改: 查询语句: 具体详情代码可参与源码: 黑马大佬写的。 harmonyos-lessons: 黑马程序员B站HarmonyOS课程的基础篇代码部分

热门的软件测试趋势趋势分析

放眼全球,了解技术发展的边界和趋势,有助于组织和个人的发展及竞争力的提升,偶尔看到国外某网站的一篇文章,读来颇值得参考,简单翻译过来,分享一下。 也许这篇文章会给你一份指南,让你快速成长…

【电路笔记】-数字缓冲器

数字缓冲器 文章目录 数字缓冲器1、概述2、单输入数字缓冲器3、三态缓冲器3.1 有效“高”三态缓冲器3.2 有效“高”反相三态缓冲器3.3 有效“低”三态缓冲器3.4 有效“低”反相三态缓冲器4、三态缓冲器控制数字缓冲器和三态缓冲器可以在数字电路中提供电流放大以驱动输出负载。…

【uniapp】request请求函数封装,token、成功、失败等

1、封装http.ts //utils--->http.ts/*** 添加拦截器* 拦截request请求* 拦截uploadFile文件上传** TODO* 1、非http开头需要拼接地址* 2、请求超时* 3、添加小程序端请求头标识* 4、添加token请求头标识*/ import { useMemberStore } from /stores/index const member…

C语言学习/复习20

一、调试 1.实例1: 经调试,该代码因数组越界会死循环 二、优秀的代码 注意事项:assert()返回真假并决定是否报错 常量指针本质是指针,常量修饰它,表示这个指针是一个指向常量的指针(变量&#xff09…

MySQL 基础使用

文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空…

Tomcat 获取客户端真实IP X-Forwarded-For

Tomcat 获取客户端真实IP X-Forwarded-For 代码实现&#xff1a; 在Host标签下面添加代码&#xff1a; <Valve className"org.apache.catalina.valves.RemoteIpValve" remoteIpHeader"x-forwarded-for" remoteIpProxiesHeader"x-forwarded-by&q…

Linux命令学习—Iptables 防火墙(上)

1.1、防火墙 1、防火墙的定义 所谓防火墙指的是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的界面上 构造的保护屏障.是一种获取安全性方法的形象说法&#xff0c;它是一种计算机硬件和软件的结合&#xff0c;使 Internet 与 Intranet 之间建立起…

大功率Boost升压电路实例设计

项目介绍及参数要求 指标参数光伏额定功率: 4000W光伏最大输入电压: 350V光伏最小输入电压: 150V母线电压(Boost电路输出电压): 600V电流纹波率

野生动物保护视频AI智能监管方案,撑起智能保护伞,守护野生动物

一、背景 在当今世界&#xff0c;野生动物保护已经成为全球性的重要议题。然而&#xff0c;由于野生动物生存环境的不断恶化以及非法狩猎等活动的盛行&#xff0c;保护野生动物变得尤为迫切。为了更有效地保护野生动物&#xff0c;利用视频智能监管技术成为一种可行的方案。 …

Java springboot使用EasyExcel读Excel文件,映射不到属性值,对象属性值都是null

如果你的类上有这个注解&#xff0c;去掉火或注释掉就可以了 Accessors(chain true)解决方法

IO流高级流

前言 缓冲区能够提升输入输出的效率 虽然FileReader和FileWriter中也有缓冲区 但是BufferedReader和BufferWriter有两个非常好用的方法. 缓冲流 字节缓冲流 import java.io.*;public class BufferedStreamDemo {public static void main(String[] args) throws IOExceptio…

「JavaEE」线程

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 线程 &#x1f349;线程&#x1f34c;多线程&#x1f34c;线程与进程的联系&区别&#x1f34c;多线程编程&#x1f34c;创建线程&a…

02_对象树

#include "mypushbutton.h" #include <QDebug>MyPushButton::MyPushButton(QWidget *parent): QPushButton(parent) {qDebug()<<"我的按钮类构造调用"; }MyPushButton::~MyPushButton() {qDebug()<<"我的按钮类析构调用"; }交…

OpenXR面部跟踪接口与VIVE OpenXR扩展详细解析

面部跟踪技术是虚拟现实&#xff08;VR&#xff09;领域中的一个重要发展方向&#xff0c;它允许VR系统捕捉和解析用户的面部表情&#xff0c;从而提供更加自然和互动的用户体验。HTC VIVE通过其VIVE.OpenXR.FacialTracking扩展&#xff0c;为开发者提供了高级的面部跟踪功能。…