13.1.资源清单的管理工具-helm

2024-06-20 01:36

本文主要是介绍13.1.资源清单的管理工具-helm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、helm的介绍

1.helm的价值概述

2.helm的关键名词

二、安装部署helm

1.解压安装包并设置全局命令

2.添加命令补全

三、使用helm部署服务管理

1.使用helm创建chart

1.1创建工作目录

 1.2.helm创建chart

2.响应式创建名称空间

3.安装chart到名称空间

4.使用helm命令查看名称空间下的资源

5.修改服务的版本

5.1.修改values.yaml中的tag标签版本

5.2再次安装chart到名称空间

6.卸载chart

四、认识helm的文件组成

1,流程梳理

2,查看目录解释说明

五、自定义chart服务的部署

 六、helm对业务的升级和回滚

1.业务升级

1.1.查看现有chart

1.2.修改变量文件(values.yaml)

1.3.基于values.yaml文件升级业务

2.业务回滚

2.1.查看历史版本

2.2.回滚到指定版本

七、补充:chart.yaml文件

八、helm的共有仓库和私有仓库

1,主流的chart仓库

2,添加仓库的方式

2.1.查看现有仓库的信息

2.2.添加共有仓库

2.3.更新仓库信息

2.4.再次查看仓库信息

3,搜索想要的chart

4,拉取仓库的chart

5,解压第三方的chart压缩包和使用

九、私有的helm仓库(了解)


一、helm的介绍

1.helm的价值概述

如下图所示,在一个企业中,可能存在多个不同的应用业务,每个业务可能包含多至十几、甚至几十个资源清单,那么对于“运维”和“研发”人员来讲,这么多的资源清单,通过人力去区分辨别,即便有“名称空间namespace”和不同“路径目录”来进行区分,也是非常吃力的;

所以,我们就需要借助k8s资源清单的管理工具,进行以业务为单位的资源清单管理,通过一些手段,来实现业务的升级、回滚等等操作在一个文件上(通过helm的values.yaml文件),一个文件就能够管理一套业务体系,进而压缩、减轻了运维压力实现高效管理业务的目的;

2.helm的关键名词

chart:应用描述,在helm中,一个chart代表一个业务的资源清单相关文件的合集;

release:基于chart的部署实体,一个chart被helm运行后,会生成一个release实体,这个release实体会在k8s集群中创建对应的资源对象;

二、安装部署helm

下载地址:Helm | Installing Helm

百度网盘链接:https://pan.baidu.com/s/1RmT3YLhxPngDFgECQ1Kyqw 
提取码:6a64 

1.解压安装包并设置全局命令

# 解压
[root@k8s1 data]# tar -xvf helm-v3.12.3-linux-amd64.tar.gz# 设置全局命令
mv linux-amd64/helm /usr/local/bin/

2.添加命令补全

[root@k8s1 data]# helm completion bash > /etc/bash_completion.d/helm

三、使用helm部署服务管理

1.使用helm创建chart

1.1创建工作目录

[root@k8s1 data]# mkdir -p /data/helm/oslee/chart
[root@k8s1 chart]# cd /data/helm/oslee/chart

 1.2.helm创建chart

# 创建
[root@k8s1 chart]# helm create oslee01
Creating oslee01# 查看
[root@k8s1 chart]# ll oslee01/
总用量 8
drwxr-xr-x 2 root root    6 5月   6 08:34 charts
-rw-r--r-- 1 root root 1143 5月   6 08:34 Chart.yaml
drwxr-xr-x 3 root root  162 5月   6 08:34 templates
-rw-r--r-- 1 root root 1874 5月   6 08:34 values.yaml

2.响应式创建名称空间

[root@k8s1 chart]# kubectl create ns helm-oslee01
namespace/helm-oslee01 created

3.安装chart到名称空间

【helm  install   自定义名称   chart名称   名称空间】

[root@k8s1 chart]# helm install oslee oslee01 -n helm-oslee01
NAME: oslee
LAST DEPLOYED: Mon May  6 08:38:23 2024
NAMESPACE: helm-oslee01
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:export POD_NAME=$(kubectl get pods --namespace helm-oslee01 -l "app.kubernetes.io/name=oslee01,app.kubernetes.io/instance=oslee" -o jsonpath="{.items[0].metadata.name}")export CONTAINER_PORT=$(kubectl get pod --namespace helm-oslee01 $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")echo "Visit http://127.0.0.1:8080 to use your application"kubectl --namespace helm-oslee01 port-forward $POD_NAME 8080:$CONTAINER_PORT# 查看pod
[root@k8s1 chart]# kubectl get pods -o wide -n helm-oslee01
NAME                             READY   STATUS    RESTARTS   AGE   IP           NODE   NOMINATED NODE   READINESS GATES
oslee-oslee01-6cc5f96486-j5dvw   1/1     Running   0# 访问pod
[root@k8s1 chart]# curl -I 10.100.1.7
HTTP/1.1 200 OK

4.使用helm命令查看名称空间下的资源

[root@k8s1 chart]# helm list -n helm-oslee01
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
oslee   helm-oslee01    1               2024-05-06 08:38:23.83927724 -0400 EDT  deployed        oslee01-0.1.0   1.16.0

至此,部署服务就结束了;

我们继续深入下去,我们不知为何,就部署了一个nginx1.16的版本服务,我们接下来,改变一下nginx的版本,我们将nginx的版本修改为1.20.1;

5.修改服务的版本

5.1.修改values.yaml中的tag标签版本

[root@k8s1 chart]# vi oslee01/values.yaml

5.2再次安装chart到名称空间

这次名称叫oslee02

[root@k8s1 chart]# helm install oslee02 oslee01 -n helm-oslee01

我们修改了values.yaml的tag,再次安装得到的pod旧村nginx的1.16版本变成了1.20版本; 

6.卸载chart

[root@k8s1 chart]# helm list -n helm-oslee01
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
oslee   helm-oslee01    1               2024-05-06 08:38:23.83927724 -0400 EDT  deployed        oslee01-0.1.0   1.16.0     
oslee02 helm-oslee01    1               2024-05-06 08:49:17.194473592 -0400 EDT deployed        oslee01-0.1.0   1.16.0 
[root@k8s1 chart]#  helm uninstall oslee02 -n helm-oslee01
release "oslee02" uninstalled

再次查看

[root@k8s1 chart]# helm list -n helm-oslee01
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
oslee   helm-oslee01    1               2024-05-06 08:38:23.83927724 -0400 EDT  deployed        oslee01-0.1.0   1.16.0   

四、认识helm的文件组成

1,流程梳理

2,查看目录解释说明

  • Chart.yaml:这是每个 Helm Chart 的元数据文件,包含 Chart 的名称、版本、描述、主页、依赖关系等信息。它是描述 Chart 的基本信息和版本控制的核心文件。

  • values.yaml:此文件包含了 Chart 的默认配置值。用户可以通过 Helm 命令行参数或提供自定义的 values.yaml 文件来覆盖这些默认值,以实现定制化部署。

  • templates/:这个目录包含了一系列的 YAML 文件模板,它们会被 Helm 用来生成最终部署到 Kubernetes 的资源配置文件。这些模板可以引用 values.yaml 中的值,支持条件语句、循环等高级特性,使得配置更加灵活。

    • 例如:deployment.yamlservice.yamlconfigmap.yaml 等,分别定义了 Deployment、Service、ConfigMap 等 Kubernetes 资源。
    • NOTES.txt:安装chart成功后的提示信息;

五、自定义chart服务的部署

easy-paas-admin/
├── Chart.yaml
├── templates
│   ├── configmap.yaml
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

# Chart.yamlapiVersion: v2
name: easy-paas-admin
description: A Helm chart for Kubernetes
type: application
version: 1.0.1
# values.yamleasyPaasAdmin:namespace: "easy-paas"replicaCount: 2image:repository: "registry.cn-hangzhou.aliyuncs.com/oslee-dockerhub/easy-paas-admin"tag: "latest"matchLabels:value: "easy-paas-admin"ports:containerPort: 8001servicePort: 8001nodePort: 30081volumeMounts:mountPath: "/data/admin/config/"configData:config.yaml: |server:"name": "easy-paas-admin""port": ":8001""version": "1.0.1"mysql:"driver": "mysql""host": "192.168.11.10""port": "3306""database": "easy_gateway""username": "root""password": "root""charset": "utf8mb4"redis:"username": "default""address": "192.168.11.10:6379""password": "123456"cluster:"cluster_ip": "127.0.0.1""cluster_port": "8080""cluster_ssl_port": "4433"
# configmap.yamlapiVersion: v1
kind: ConfigMap
metadata:name: {{ .Chart.Name }}namespace: {{ .Values.easyPaasAdmin.namespace }}
data:
{{- toYaml .Values.easyPaasAdmin.configData | nindent 2 }}
# deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: {{ .Chart.Name }}namespace: {{ .Values.easyPaasAdmin.namespace }}
spec:replicas: {{ .Values.easyPaasAdmin.replicaCount }}selector:matchLabels:app: {{ .Values.easyPaasAdmin.matchLabels.value }}template:metadata:labels:app: {{ .Values.easyPaasAdmin.matchLabels.value }}namespace: {{ .Values.easyPaasAdmin.namespace }}spec:containers:- name: {{ .Chart.Name }}image: {{ .Values.easyPaasAdmin.image.repository }}:{{ .Values.easyPaasAdmin.image.tag }}ports:- containerPort: {{ .Values.easyPaasAdmin.ports.containerPort }}volumeMounts:- name: config-volumemountPath: {{ .Values.easyPaasAdmin.volumeMounts.mountPath }}readOnly: true- name: host-timezonemountPath: /etc/localtimereadOnly: truevolumes:- name: config-volumeconfigMap:name: {{ .Chart.Name }}- name: host-timezonehostPath:path: /etc/localtime
# service.yamlapiVersion: v1
kind: Service
metadata:name: {{ .Chart.Name }}namespace: {{ .Values.easyPaasAdmin.namespace }}
spec:type: NodePort # 或 NodePort, ClusterIP 根据需求selector:app: {{ .Values.easyPaasAdmin.matchLabels.value }}ports:- protocol: TCPport: {{ .Values.easyPaasAdmin.ports.servicePort }}targetPort: {{ .Values.easyPaasAdmin.ports.containerPort }}nodePort: {{ .Values.easyPaasAdmin.ports.nodePort }}
# 执行指令kubectl create ns easy-paas
helm install easy-paas-admin ./easy-paas-admin -n easy-paas# 其他指令
# helm list -n easy-paas
# helm uninstall easy-paas-admin -n easy-paas
# helm upgrade easy-paas-admin ./easy-paas-admin -n easy-paas
# helm history easy-paas-admin
# helm rollback easy-paas-admin 1 -n easy-paas

 六、helm对业务的升级和回滚

1.业务升级

1.1.查看现有chart

helm list -n easy-paas

1.2.修改变量文件(values.yaml)

easyPaasAdmin:namespace: "easy-paas"# 副本数改为3replicaCount: 3image:repository: "registry.cn-hangzhou.aliyuncs.com/oslee-dockerhub/easy-paas-admin"tag: "latest"matchLabels:value: "easy-paas-admin"ports:containerPort: 8001servicePort: 8001nodePort: 30081volumeMounts:mountPath: "/data/admin/config/"configData:config.yaml: |server:"name": "easy-paas-admin""port": ":8001"# 软件版本改为1.0.2"version": "1.0.2"mysql:"driver": "mysql""host": "192.168.11.10""port": "3306""database": "easy_gateway""username": "root""password": "root""charset": "utf8mb4"redis:"username": "default""address": "192.168.11.10:6379""password": "123456"cluster:"cluster_ip": "127.0.0.1""cluster_port": "8080""cluster_ssl_port": "4433"

1.3.基于values.yaml文件升级业务

helm upgrade easy-paas-admin ./easy-paas-admin -n easy-paas

2.业务回滚

2.1.查看历史版本

helm history easy-paas-admin -n easy-paas

2.2.回滚到指定版本

helm rollback easy-paas-admin 1 -n easy-paas

七、补充:chart.yaml文件

可以通过配置chart.yaml这个文件,来控制显示helm list的元数据信息

八、helm的共有仓库和私有仓库

我们知道,docker拉取镜像是有共有仓库阿里云、华为云、清华源..和私有仓库harbor....

同理,helm也有这个机制;

1,主流的chart仓库

互联网公开的chart仓库,可以直接使用他们制作好的包;

1,微软仓库:Index of /kubernetes/charts/

2,阿里云仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

2,添加仓库的方式

2.1.查看现有仓库的信息

默认情况下是没有任何仓库地址的

[root@k8s1 helm]# helm repo list
Error: no repositories to show

2.2.添加共有仓库

# 添加微软云的helm仓库
[root@k8s1 helm]# helm repo add azure http://mirror.azure.cn/kubernetes/charts/ 
"azure" has been added to your repositories# 添加阿里云的helm仓库
[root@k8s1 helm]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"aliyun" has been added to your repositories

2.3.更新仓库信息

[root@k8s1 helm]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "aliyun" chart repository
...Successfully got an update from the "azure" chart repository
Update Complete. ⎈Happy Helming!⎈

2.4.再次查看仓库信息

[root@k8s1 helm]# helm repo list
NAME    URL                                                   
azure   http://mirror.azure.cn/kubernetes/charts/             
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

3,搜索想要的chart

helm search repo elasticsearch

4,拉取仓库的chart

helm pull aliyun/elasticsearch-exporter

5,解压第三方的chart压缩包和使用

# 解压
tar xf elasticsearch-exporter-0.1.2.tgz# 使用
helm install es elasticsearch-exporter

注意:你安装chart的时候,可能失败,因为chart中的k8s对应api-server版本可能不一样,所以对应的资源清单的一级字段也不一样,导致安装失败;发现这个问题,就去看看资源清单的api版本是否与目前你使用的k8s的api版本相同,否则就需要修改资源清单的api版本了。

九、私有的helm仓库(了解)

提示:chartmuseum项目还不错哟~
推荐阅读:
    https://github.com/helm/chartmuseum
    https://hub.docker.com/r/chartmuseum/chartmuseum

这篇关于13.1.资源清单的管理工具-helm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076734

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

加载资源文件失败

背景         自己以前装了一个海康的深度学习算法平台,试用期是一个月,过了一个月之后,因为没有有效注册码或者加密狗的支持了导致无法使用,于是打算卸载掉,在卸载一个软件的时候,无论是使用控制面板还是软件自带的卸载功能,总是卸载不掉,提示“加载资源文件失败”。该软体主要包括以下两部分: 用自带卸载功能卸载的时候分别提示如下:     用控制面板卸载的时候反应很慢,最后也是提示这个

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合

基于资源的约束委派(RBCD)是在Windows Server 2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。也就是说机器自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfOfOtherIdentity属性来设置RBCD。 所以核心就是谁或什么权限能修改

开发人员必掌握的Git常用命令备忘录清单

基础操作 1、创建ssh key,邮箱可以随便输入,不会做校验 ssh-keygen -t rsa -C "你的邮箱地址" 2、配置Git账号信息,你所有的Git操作记录,都会显示为你设置的昵称。 # 不添加`--global`表示在当前目录下的Git仓库设置,添加表示全局设置。git config --global user.name "你的Git提交昵称"# 邮箱可以随便输入,不会

按顺序加载外部资源js css

cmmon.js /*** 公共js文件* 内置参数说明:* locationUrl:硬盘路径(开发模式使用)* ytRootUrl:系统根目录,引入该js文件后可直接使用* initJq:自定义jq文件的目录,如果需要引用不同的jq文件,请修改目录。* initCssUrl:初始化css文件容器,如果需要新增或修改引入的c

蔚蓝资源包和数据分析

代码如下 /* ==================================* COMPUTER GENERATED -- DO NOT EDIT* ==================================*/#include <windows.h>static FARPROC __Init_Fun_2__;int __RestartAppIfNecessary__Fun(

XP单机版安装金蝶K3的13.1版本,金蝶K3Wise安装步骤,成功安装

在我们安装金蝶K3时往往会出现各种报错,主要是因为我们的Windows Xp操作系统是Ghost版本,或者是windows XP HOME或者是精简版,因此某些组件在系统里没有,导致我们安装金蝶K3时经常出错报错。本文章就是主要结合实际安装过程,总结了一些问题的解决办法。如果您按照本流程进行安装会比较流畅。 下载一个版本的Windows XP镜像,重装电脑。

Android 你应该知道的学习资源 进阶之路贵在坚持

coderzheaven 覆盖各种教程,关于Android基本时案例驱动的方式。 非常推荐 thenewcircle 貌似是个培训机构,多数是收费的,不过仍然有一些free resources值得你去挖掘。 coreservlets 虽然主打不是android,但是android的教程也​ 是相当不错的,更好的是,教程都提供pdf、ppt、源码的下载。期待它

csdn上传源码资源卖钱能买房买车吗?每天最高收入200-500?

csdn上传源码卖钱能买房买车吗,最高收入200-500? 作者收入日榜 不***孩 收益617.32元 程***妍 收益534.56元 s***n 收益323.71元 盈***客 收益315.05元 极***计 收益284.17元

Gitlab 代码管理工具创建项目并将代码上传教程

用了两天时间,后面在朋友的协助下才弄好。所以做个操作记录。  目前常用代码管理器软件有GitHub,Gitlab,SVN,也可以用TFS。 (https://bitbucket.org/  这个听说挺好使???不过我没用,连注册都注册不了,加载不了Chrome服务器的验证图片,这个就过了) 言归正传 1、注册Gitlab账号(GitLab 是目前免费的并且最好用的代码管理器,当然也可以选择