helm的安装、使用以及自定义Chart

2023-11-09

Helm概述

Helm 是一个 Kubernetes 的包管理工具,类似 Linux 的包管理器,如RedHat系的yum、Debian的apt,可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上。Helm主要解决以下问题:1、把yaml作为一个整体管理。2、实现yaml的高效复用。3、实现应用级别的版本管理。

当前 Helm 已经升级到V3版本,相比于V2版本主要变化如下:

1、 最明显的变化是删除了 Tiller 。
2、 Release 名称可以在不同命名空间重用。
3、 支持将 Chart 推送至 Docker 镜像仓库中。
4、 使用 JSONSchema 验证 chart values。

Helm 有3个重要概念:
    1、helm: 一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、 打包、 发布和管理。
    2、Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
    3、Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个release;release是在 k8s 中创建出真实运行的资源对象。

下图是 Helm V2 与 Helm V3 的架构图对比:

V2版本的架构中,Tiller在Kubernetes集群中,Helm Client发请求给Tiller需要经过RBAC认证。而V3版本是Helm通过kubeconfig连接kube-apiserver,避免了使用者去配置RBAC权限。

安装Helm

安装Helm V3版本非常简单,只需要下载Helm的二进制文件,并复制到 Kubernetes 主节点的 /usr/bin 目录即可。

Helm下载地址 https://get.helm.sh/helm-v3.4.2-linux-amd64.tar.gz

解压Helm

tar zxvf helm-v3.4.2-linux-amd64.tar.gz

移动到主节点 /usr/bin 目录

mv linux-amd64/helm /usr/bin/

验证是否安装成功

helm version

如同yum、apt拥有仓库一样,Helm也有仓库,使用Helm默认仓库下载Chart比较慢,可以增加微软、阿里的仓库。

添加微软Chart仓库

helm repo add stable http://mirror.azure.cn/kubernetes/charts

添加阿里Chart仓库

helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

更新Chart仓库

helm repo update

查看仓库列表

helm repo list

删除仓库

helm repo remove aliyun

使用Helm安装K8S应用

Weave Scope 是一款 Docker 和 Kubernetes 可视化监控工具,可以监控 Kubernetes 集群中的一系列资源的状态、资源使用情况、应用拓扑、scale、还提供通过浏览器进入容器内部调试等功能。Helm 仓库提供了 Weave Scope 编写好的 Chart,使用 Helm 安装 Weave Scope 非常方便。

在chart仓库中查找weave

helm search repo weave

安装stable/weave-scope。注意 helm install 后面接的第一个参数叫做Release,名字可以随意取,我们起名为ui

helm install ui stable/weave-scope

查看所有Release

helm list

查看单个Release状态

helm status ui

weave-scope安装完之后,需要配置ingress才能在集群外部用浏览器打开weave-scope的可视化页面。如果你的k8s集群没有安装ingress-controller可以查看这篇博客 https://blog.csdn.net/u010606397/article/details/107815079

配置ingress规则

vim ingress-weave.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-my
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: weave.k8s01.com
    http:
      paths:
      - path: /
        backend:
          serviceName: ui-weave-scope
          servicePort: 80

配置 /etc/hosts 将 weave.k8s01.com 映射到本机 127.0.0.1

vim /etc/hosts

加入如下内容

127.0.0.1 weave.k8s01.com

部署ingress

kubectl apply ingress-weave.yaml

修改宿主机 hosts 文件,添加 DNS 映射,window 系统的 hosts 文件在 C:\Windows\System32\drivers\etc 目录下。

Kubernetes主节点IP weave.k8s01.com

打开浏览器,访问 Weave Scope 可视化页面。注意,端口不一定是30080,这取决于你集群上ingress-controller的配置

http://weave.k8s01.com:30080/

自定义Chart

如果每部署一个k8s应用都需要写一份deployment、service配置,应用多的时候会很难管理,并且每个应用的deployment、service配置大同小异,将deployment、service做成模板可大大减少配置文件数量。

创建自定义Chart

helm create template-chart

template-chart目录的文件结构如下:
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ └── service.yaml
└── values.yaml

Chart.yaml:用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
values.yaml:用于存储 templates 目录中模板文件中用到变量的值。
Templates:目录里面存放所有 yaml 模板文件。
charts:目录里存放这个 chart 依赖的所有子 chart。
NOTES.txt :用于介绍 Chart 帮助信息,helm install 部署后展示给用户。例如:如何使用这个 Chart、 列出缺省的设置等。
_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用。

为了简单,本博客仅保留部分配置文件,其他文件删除,保留文件如下:

values.yaml用于存放变量,values.yaml配置如下

replicas: 1
image: nginx
tag: 1.16
label: nginx
servicePort: 80
targetPort: 80
serviceType: NodePort

templates目录用于存放模板文件,模板文件通过 {{ .Values.xxxxxx }} 获取values.yaml中定义的值,例如:{{ .Values.replicas }} 、{{ .Values.image }}。

另外,部署自定义chart的命令是 helm install nginx-web template-chart 。 helm install 命令的第一个参数称为 Release,名字可以随意取,模板文件使用 {{ .Release.Name }} 可获取Release名称;第二个参数 template-chart 是自定义chart的目录名。

修改 deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: {{ .Values.label }}
  name: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicas }}
  selector:
    matchLabels:
      app: {{ .Values.label }}
  template:
    metadata:
      labels:
        app: {{ .Values.label }}
    spec:
      containers:
      - image: {{ .Values.image }}:{{ .Values.tag }}
        name: nginx

修改service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: {{ .Values.label }}
  name: {{ .Release.Name }}
spec:
  ports:
  - port: {{ .Values.servicePort }}
    protocol: TCP
    targetPort: {{ .Values.targetPort }}
  selector:
    app: {{ .Values.label }}
  type: {{ .Values.serviceType }}

NOTES.txt 随便写个欢迎信息即可

hello

.helmingore、Chart.yaml 不需要修改

安装自定义chart

helm install nginx-web template-chart

由于service是NodePort类型,对外暴露了端口。查看service对外暴露的端口

kubectl get svc

访问nginx

http://主节点IP:30076/

卸载 Helm 安装的 Release

helm uninstall nginx-web

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

helm的安装、使用以及自定义Chart 的相关文章

  • web压测工具http_load原理分析

    01 前言 http load是一款测试web服务器性能的开源工具 从下面的网址可以下载到最新版本的http load http www acme com software http load 这个软件一直在保持着更新 不像webbench
  • el-tree组件展示节点过多时造成页面卡顿、奔溃的解决办法

    解决el tree组件展示节点过多时造成页面卡顿 奔溃 前几天测试提了个BUG 文件列表展示5w个文件页面会卡顿甚至奔溃 项目用的是vue element ui框架 我是使用el tree进行渲染文件列表的 参考网上使用virtual sc
  • Log4j2注入漏洞万字剖析-汇总收藏版(攻击步骤、漏洞原理、2.15.0-RC1绕过原理以及2.15.0、2.16.0修复原理)

    系列文章 2 15 0之前版漏洞相关文章 Log4j2注入漏洞 CVE 2021 44228 万字深度剖析 一 开篇与基础知识 Log4j2注入漏洞 CVE 2021 44228 万字深度剖析 二 漏洞原理 Log4j2注入漏洞 CVE 2
  • ILRuntime(二)整合Hotfix到Unity中,脚本生成dll文件

    如果开发的时候按之前的一个Hotfix工程 一个Unity工程 开发会很麻烦 因此我们可以把Hotfix部分的代码放入到Unity当中 并增加一个标记 到时候把这些代码整合成一个dll文件即可 具体思路 ILRuntime的原理就是热更代码
  • nginx中root和alias指令的解释

    1 基本信息 功能均为将url映射为文件路径 返回静态文件内容 格式 alias path root path 2 区别 root会映射完整url 会将location匹配的部分 追加到path后面 即 root指定web的家目录 在定义l
  • 机器学习 BP神经网络(Python实现)

    一个神经元即一个感知机模型 由多个神经元相互连接形成的网络 即神经网络 这里我们只讨论单隐层前馈神经网络 其连接形式入下 神经网络模型的待估参数即 每个神经元的阈值 以及神经元之间的连接权重 对于该模型有如下定义 训练集 D x1 y1 x
  • ubuntu安装ftp服务器(一般配置)

    ubuntu安装ftp服务器 1 安装vsftpd sudo apt get install vsftpd ubuntu10 10自己装了 这步省略 2 配置vsftpd 2 1 修改vsftpd的配置文件 此类配置文件通常位于 etc 目
  • Spark 与 DataFrame

    Spark 与 DataFrame 前言 在 Spark 中 除了 RDD 这种数据容器外 还有一种更容易操作的一个分布式数据容器 DateFrame 它更像传统关系型数据库的二维表 除了包括数据自身以外还包括数据的结构信息 Schema
  • koa后端实践

    作者借着不忙的时间用koa搭了一个后端的服务器 可轻松实现api调用 大家如果有需要 可以查看 https github com guodonglw koa demo 相比于express框架 koa框架的async await语法简直让人
  • QT中固定窗体大小的方法

    在构造函数中添加以下两行代码即可 this gt setMaximumSize 400 300 this gt setMinimumSize 400 300 其中400 300即是所固定的尺寸 include mainwindow h in
  • java配置_Java开发环境的配置

    第一阶段 JAVA基础知识 第一章 开发环境的配置 知识铺垫 Dos 命令 在正式进入Java学习之前我们来了解一个看起来B格很高的东西 Dos命令 DOS命令 计算机术语 是指DOS操作系统的命令 是一种面向磁盘的操作命令 主要包括目录操
  • 手写Spring框架(三)

    这部分目标是MVC 主要完成3个重要组件 HandlerMapping 保存URL映射关系 HandlerAdapter 动态参数适配器 ViewResolvers 视图转换器 模板引擎 SpringMVC核心组件执行流程 相对应的 用以下
  • 启动idea报错问题

    因为前一天研究JVM参数配置问题 使用了一些跟JDK相关版本的参数 Xloggc D logs app1 gc t log XX UseGCLogFileRotation XX NumberOfGCLogFiles 5 XX GCLogFi
  • vi下显示和处理回车换行符等特殊符号

    http blog sina com cn s blog 4c76784c0100uaf9 html 换行方式 在早期的打印机时代 开始新的一行要占用两个字符的时间 如果到了一行的结尾处 你要快速回到新的一行的开头 需要打印针头在纸面上飞快

随机推荐

  • Android入门(五)

    文章目录 Activity 的状态及生命周期 实现管理生命周期 FirstActivity SecondActivity DialogActivity 运行结果 旧活动被回收了还能返回吗 Activity 的状态及生命周期 Android
  • 微信小程序生成分享图然后保存图片分享朋友圈

    微信小程序可以实现快速的转发好友实现分享 但是不能直接分享到朋友圈 但是有需要要这么做 要怎么实现呢 查看文档之后 大概有了实现思路 1 使用微信小程序的wx createCanvasContext 方法 绘制图片 2 使用wx canva
  • centos8 yum源配置

    1 手动配置网卡 nmcli connection modify ens160 connection autoconnect yes nmcli connection modify ens160 ipv4 method manual ipv
  • CSS层叠样式表(一)

    在学习完HTML之后我们就会进入到一个新的阶段 就是CSS层叠样式表的学习 通过使用 CSS 我们可以大大提升网页开发的工作效率 在本篇文章当中 您会了解到如何使用 CSS 同时控制多重网页的样式和布局 更重要的是在本篇文章中会对CSS选择
  • 如何转换为 Win32 FILETIME 或 SYSTEMTIME 的 UNIX time_t

    在 UNIX 平台下名为 time t 表示 1970 年 1 月 1 UTC 协调通用时间 午夜以来经过的秒数是 ANSI C 运行库算术类型的窗体中维护文件的时间 在 Win32 平台下主要中表示的数自 1601 年 1 月 1 UTC
  • Python语言:求水仙花数案例讲解

    求水仙花数是循环和判断语句相结合的一个经典案例 思路分析 通过循环遍历100到999之间的数字然后根据他们的个位 十位 百位上的数字立方和是否为他本身来判断分析得出什么数是水仙花数 1 如何循环遍历100到999的所有数字 使用while循
  • u8客户端怎么修改服务器ip,u8服务器ip地址在哪修改

    u8服务器ip地址在哪修改 内容精选 换一换 在Mind Studio所在服务器上配置路由规则 允许转发开发者板的IP报文 开发者板上则需要配置一下路由地址 即Mind Studio所在服务器的IP地址 Mind Studio所在服务器侧配
  • STM32F4_nRF24L01无线通讯

    目录 前言 1 nRF24L01无线模块简介 2 nRF24L01状态机 3 nRF24L01模式 4 nRF24L01的SPI配置 4 1 nRF24L01 Rx 和 Tx 的初始化配置 4 2 nRF24L01相关寄存器 5 硬件连接
  • Spark基础学习笔记:SparkSQL词频统计

    目录 一 使用Spark SQL实现词频统计 一 数据源 words txt 四 修改源目录名称 六 创建词频统计单例对象 七 启动程序 查看结果 一 使用Spark SQL实现词频统计
  • 哥斯拉jsp马分析

    前言 这篇文章分析了哥斯拉jsp马的特征原理 写这篇文章的初衷在提高对哥斯拉马的识别 改造能力 笔者接触安全的时间较短 难免会有疏漏 恳请发现问题的大佬给予指正 哥斯拉PHP马解析可以看这篇文章 https blog csdn net ze
  • python3 题解(28 级数法求圆周率)

    级数法求圆周率 问题 圆周率是十分重要的常数 它是个无理数 无法表示为有限小数的形式 但 我们可以表示它的近似值 可以用无穷级数去逼近它 pi 的级数公式十分多 下面给出3个较简单的 2 6 1 1 2 1 2 2 1 3 2 frac p
  • 经纬高(LLA)坐标系地心地固(ECEF)坐标系与东北天(ENU)坐标系转换

    前段时间在做水下机器人项目 添加了RTK 读取到的数据为经纬高坐标系中度分形式的经纬度信息 无法直接用于定位 还需要进行坐标系的转换 后来在学习Cartographer时处理GPS数据也有提到这方面的知识 于是决定汇总到一起进行学习 下文将
  • HTML文本格式化

    目录 HTML 文本格式化实例 如何查看 HTML 源码 文本格式化标签 计算机输出 标签 引用 引用和术语定义 延伸阅读 一个完整的实例 HTML 可定义很多供格式化输出的元素 比如粗体和斜体字 下面有很多例子 可以亲自试试 HTML 文
  • SpringMVC中Controller层注解扫描

    SpringMVC中Controller层扫描 方式一 方式二
  • mysql基于Java web的电动车销售平台毕业设计源码201524

    电动车销售平台的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对电动车销售平台等问题 对电动车销售
  • 论文研读:SuperGlue vs. LoFTR

    简介 SupeGlue与LoFTR都是对图片间进行特征点匹配的方法 其目的是 找到图像A 图像B中同时存在的相同物体实例 并输出其位置信息 匹配关系 在提取出特征点后 我们通过图神经网络生成匹配代价矩阵 并求解最优匹配矩阵 以获得全局最优的
  • 1.3 起步 - Git 基础

    1 3 起步 Git 基础 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 18 初稿 目录 文章目录 1 3 起步 Git 基础 版本说明 目录 Git 基础 1 直接记录快照 而非差异比较 Figure 4 存储每个文
  • python报错:ValueError: not enough values to unpack

    报错 ValueError not enough values to unpack 分析具体原因 这个错误的信息是 期望有7个返回值 但其实函数只有4个返回值 解决方法 检查函数和接收函数返回值的参数个数是否一致 改成一致即可
  • MySQL - 一文了解MySQL的基础架构及各个组件的作用

    1 概述 不管是开运 运维 测试 都或多或少的要接触MySQL 了解MySQL的基础架构及各个组件之间的关系 有助于我们更加深入的理解MySQL 下面由一张MySQL基础架构图来一起走进MySQL MySQL可以基本划分为Server层和存
  • helm的安装、使用以及自定义Chart

    Helm概述 Helm 是一个 Kubernetes 的包管理工具 类似 Linux 的包管理器 如RedHat系的yum Debian的apt 可以很方便的将之前打包好的 yaml 文件部署到 Kubernetes 上 Helm主要解决以