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

embedded/2024/12/22 21:09:53/

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.ppmy.cn/embedded/9346.html

相关文章

接口压力测试 jmeter--增强篇(二)

前期准备 1. JMeter的插件的安装 下载Jmeter Plugins Manager对插件进行管理 (1)下载地址:https://jmeter-plugins.org/install/Install/ (2)下载后,将jar包放到jmeter包目录下/lib/ext目录下 &#xff0…

Codeforces Round 938 (Div. 3) E(差分数组的开关用法)

题目链接 从大到小枚举k,差分数组标记翻转区间&#xff08;异或实现&#xff09;。 #include<bits/stdc.h> using namespace std;void solved() {int n; cin>>n;string s; cin>>s;s s;int d[n1];//把这个差分数组当成一个开关使用&#xff0c;d[i]1反转,d[…

数学建模--深入剖析线性规划(模型全方位解读+代码分析)

1.简介 &#xff08;1&#xff09;线性规划三要素 &#xff08;2&#xff09;模型适用赛题 2.典例讲解 &#xff08;1&#xff09;问题分析 目标函数是净收益尽可能大&#xff0c;风险尽可能小&#xff1b; 约束条件是交易费的分段函数&#xff0c;以及每一笔投资都是非负数&am…

elment-plus 中 table 左对齐

elment-plus 中 table 左对齐 <el-tablev-loading"loading"class"flex-1 !h-auto":data"roleList":header-cell-style"{text-align: left }":row-style"{ height: 55px }":cell-style"{ text-align: left }"&…

前端开发攻略---拖动归类,将元素拖拽到相应位置

1、演示 2、代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-…

Environment Modules工具

Environment Modules工具 简介 Module是一个环境变量管理工具&#xff0c;可以很好的实现开发环境的切换。 具体可以查看官网文档 安装 安装&#xff08;安装完成之后需要exit重新登录一下才会生效&#xff09; yum install -y environment-modules命令介绍 module avai…

Python文件与文件夹操作

文件基本操作 1.1创建文件 语法格式&#xff1a; open(file_name,code)参数说明&#xff1a;name:创建文件的名称&#xff1b;code&#xff1a;创建文件的模式。 code含义‘w’打开一个文件&#xff0c;只写‘wb’以二进制格式打开一个文件&#xff0c;只写‘w’打开一个文…

ResouceUtils.getFile()取不到Jar中资源文件源码

本地自测的时候&#xff0c;用该方式下载模版文件是没有问题的&#xff0c;欢欢喜喜的打包部署liunx服务器&#xff0c;结果突然报错&#xff0c;无法正常下载模版文件了。 空下来&#xff0c;找到了这篇文章和解释原因&#xff0c;最终是用下面方式解决的&#xff1a; Class…