Kubernets基础-包管理工具Helm详解

文章目录

    • 什么是Helm?
      • Helm 的基本概念
      • Helm 的工作原理
      • Helm 的主要功能
      • 使用 Helm 的步骤
    • values.yaml和Chart.yaml
      • values.yaml 文件
      • 示例
      • Chart.yaml 文件
      • 示例

什么是Helm?

Helm 是 Kubernetes 的一个非常流行的包管理工具,它使得在 Kubernetes 上部署应用程序变得更加简单。Helm 使用一种称为 Chart 的文件格式来打包应用配置,使得应用程序可以像软件包一样进行安装、删除和升级。下面是对 Helm 的详细介绍:

Helm 的基本概念

  1. Chart

    • Chart 是 Helm 的基础单元,它是一组文件的集合,描述了一个或多个 Kubernetes 资源(如 Deployment、Service、ConfigMap 等)。Chart 通常包含一个 values.yaml 文件,其中定义了可配置的参数;一个 Chart.yaml 文件,定义了 Chart 的元数据;以及一个 templates 目录,包含了 Kubernetes 资源的定义模板。
  2. Repository

    • Repository 是存储 Chart 的地方。Helm 有官方的 repository,同时也支持私有的 repository。Chart 可以从这些 repository 中拉取下来并安装。
  3. Release

    • Release 是安装 Chart 后的一个实例。当用户使用 Helm 安装一个 Chart 时,就会创建一个新的 Release。每个 Release 都有一个唯一的名称,这使得可以区分不同的安装实例。

Helm 的工作原理

  1. 安装 Helm

    • Helm 有两个主要的组件:客户端(Tiller)和服务器端(Helm CLI)。在 Helm v3 中,Tiller 已经被移除,现在 Helm CLI 直接与 Kubernetes API 交互。
  2. 使用 Helm CLI

    • 用户通过 Helm CLI 来执行命令,如 helm installhelm upgradehelm delete 等。CLI 会读取 Chart 文件,并根据 values.yaml 中的配置值渲染模板。
  3. 渲染模板

    • 当执行安装或升级操作时,Helm 会使用 Go 模板语言来渲染 Chart 中的 YAML 文件,生成实际的 Kubernetes 资源定义。
  4. 与 Kubernetes API 交互

    • 渲染后的资源定义会通过 Kubernetes API 发送到集群上进行创建或更新。

Helm 的主要功能

  1. 安装应用

    • 使用 helm install 命令可以将 Chart 安装到 Kubernetes 集群中。
  2. 升级应用

    • 使用 helm upgrade 命令可以更新已安装的 Release 到新版本的 Chart 或者更改配置值。
  3. 卸载应用

    • 使用 helm uninstall 命令可以删除指定的 Release。
  4. 搜索 Chart

    • helm search 命令可以查找可用的 Chart,无论是从本地还是远程 repository。
  5. 管理 repository

    • 用户可以添加、更新或删除 repository,以便从不同的来源获取 Chart。

使用 Helm 的步骤

  1. 安装 Helm CLI

    • 在你的机器上安装 Helm 客户端。
  2. 初始化 Helm(对于 Helm v2)

    • 在 Helm v2 中,需要在集群内部部署 Tiller 服务。而在 Helm v3 中,这一步骤已被移除。
  3. 添加 repository

    • 使用 helm repo add 命令添加外部 repository。
  4. 安装 Chart

    • 使用 helm install 命令安装所需的 Chart。
  5. 管理安装的 Chart

    • 使用 helm statushelm listhelm uninstall 等命令来查看、升级或删除安装的 Chart。

Helm 为 Kubernetes 用户提供了一个强大的工具集来简化应用程序的部署和管理过程,尤其是在面对复杂的多服务应用时显得尤为重要。

values.yaml和Chart.yaml

在 Helm 中,values.yamlChart.yaml 是两个至关重要的文件,它们分别用于配置 Chart 的参数和描述 Chart 的基本信息。下面分别对这两个文件进行详细说明:

values.yaml 文件

values.yaml 文件包含了 Helm Chart 中可配置的变量值。这个文件定义了在渲染模板时所使用的默认值。用户可以在安装或升级 Chart 时覆盖这些默认值。values.yaml 文件通常包括以下几部分内容:

  1. 应用程序配置

    • 这部分通常包括了应用程序的基本配置信息,如数据库连接字符串、服务端口、环境变量等。
  2. Kubernetes 资源配置

    • 包括 Deployment、StatefulSet、DaemonSet 等资源的配置信息,比如副本数量、镜像标签、容器端口等。
  3. 服务配置

    • 如 Service 类型(ClusterIP、NodePort、LoadBalancer)、端口号等。
  4. 持久卷配置

    • 如果应用需要持久存储,那么这部分会配置 PersistentVolumeClaim 的相关信息,如存储大小、访问模式等。
  5. Ingress 控制器配置

    • 如果应用通过 Ingress 访问,那么可能会配置相关的主机名、路径、TLS 设置等。
  6. 其他配置

    • 包括 ConfigMaps、Secrets、PodSecurityPolicy 等其他 Kubernetes 资源的配置信息。

示例

# values.yaml 示例
replicaCount: 3
image:repository: nginxtag: latestpullPolicy: IfNotPresent
service:type: ClusterIPport: 80
ingress:enabled: trueannotations:nginx.ingress.kubernetes.io/rewrite-target: /hosts:- chart-example.local

Chart.yaml 文件

Chart.yaml 文件描述了 Chart 的基本信息,它是 Chart 的元数据文件。这个文件告诉 Helm 关于 Chart 的所有必要信息,比如名字、版本号、描述、维护者等。Chart.yaml 文件通常包含以下字段:

  1. apiVersion

    • 版本号,指定了 Chart 使用的 Chart API 的版本。
  2. name

    • Chart 的名称,必须唯一。
  3. version

    • Chart 的版本号,遵循语义化版本号规范。
  4. appVersion

    • 应用程序本身的版本号,与 Chart 的版本号分开。
  5. description

    • Chart 的简短描述。
  6. maintainers

    • Chart 的维护者列表,每个维护者可以有自己的 name 和 email 字段。
  7. sources

    • Chart 的源代码 URL 列表。
  8. dependencies

    • Chart 依赖的其他 Chart 的列表,包括名称、版本范围和存储库名称。
  9. keywords

    • 用于索引的关键词列表。
  10. home

    • Chart 所代表的应用程序的主页 URL。
  11. icon

    • Chart 所代表的应用程序的图标 URL。
  12. annotations

    • 附加的元数据键值对。

示例

# Chart.yaml 示例
apiVersion: v2
name: mychart
version: 0.1.0
appVersion: 1.2.3
description: A Helm chart for Kubernetes
maintainers:- name: exampleemail: example@example.com
sources:- https://github.com/example/mychart
dependencies:- name: mysqlversion: "1.2.3"repository: "https://example.github.io/charts/"
keywords:- web- application
home: https://example.com
icon: https://example.com/icon.png

这两个文件对于正确地使用和管理 Helm Chart 至关重要。正确配置它们可以使 Helm Chart 更易于使用和维护。

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

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

相关文章

webView2 隐藏滚动条

参考:wenview2隐藏滚动条 查看该链接内容,得知其主要是通过css修改body的overflow 属性为:hide. 这里贴出原链接的解决方案: private void WebView2_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventAr…

虚拟机:4、配置12.5的cuda和gromacs

前言:本机环境是win11,通过wsl2安装了ubuntu实例并已实现gpu直通,现在需要下载12.5的cuda 一、查看是否有gpu和合适的cuda版本 在ubuntu实例中输入 nvidia-smi输出如下: 说明该实例上存在gpu驱动,且适合的CUDA版本…

智能新突破:AIOT 边缘计算网关让老旧水电表图像识别

数字化高速发展的时代,AIOT(人工智能物联网)技术正以惊人的速度改变着我们的生活和工作方式。而其中,AIOT 边缘计算网关凭借其强大的功能,成为了推动物联网发展的关键力量。 这款边缘计算网关拥有令人瞩目的 1T POS 算…

VS Code 技巧

在编程世界里,工具的好坏取决于使用者的水平。Visual Studio Code(VS Code)就像一把锋利的刀,它功能强大,但需要熟练的技巧才能发挥出色。然而,对于初学者来说,它可能显得有些复杂,因…

(一)面试需要掌握的技巧

本系列文章搜集了近几年各类大厂和常见的主流开试题,函给了前端、后端、算法、运维、中间件五大类。希望能给奋斗中的小伙伴们带来或多或少的帮助。 面试不仅仅是我们迈入职业生涯的台阶,它也是个人综合实力的表现,想在心仪的企业有一席之地…

Kafka技术详解[2]: 环境安装

目录 环境安装 安装Java8(略) 安装Kafka 启动ZooKeeper 启动Kafka 消息主题 创建主题 查询主题 修改主题 删除主题 环境安装 作为一款开源分布式事件流处理平台,Kafka的分布式软件环境安装相对复杂,这不利于初学者的学习和练习。…

9.Branch-and-Bound 方法

Branch-and-Bound 方法 Branch-and-Bound(分支限界)是一种用于解决优化问题的算法框架,尤其适用于组合优化问题,如整数规划、旅行商问题(TSP)、指派问题等。该方法通过系统地搜索解空间树来找到问题的最优…

Python 管理 AWS ElastiCache 告警

在 AWS 环境中,监控和管理 ElastiCache 集群的性能是至关重要的。本文将介绍如何使用 Python 和 AWS SDK (boto3) 来自动创建和删除 ElastiCache 集群的 CloudWatch 告警。我们将分两部分来讨论:创建告警和删除告警。 第一部分:创建 ElastiCache 告警 首先,让我们看看如何…

[spring]springboot日志

文章目录 一. 日志的用途二. 打印日志三. 日志框架门面模式(外观模式)SLF4J框架介绍 四. 日志格式日志级别配置日志级别日志持久化配置日志文件分割配置日志格式 五. 更简单的日志输出 一. 日志的用途 二. 打印日志 得到日志对象: 需要使用日志工厂LoggerFactory RestControl…

【小程序】uniapp自定义图标组件可动态更换svg颜色

组件描述 通过图标名称加载对应svg,size参数调整图标大小,color参数调整图标颜色 解决思路: 存svg获svg,对象方式正则替换svg的fill值,不改变源文件,通过base64直接加载缓存svg源文件,避免重…

聚铭下一代智慧安全运营中心荣获CNNVD兼容性资质证书

近日,聚铭网络旗下安全产品——聚铭下一代智慧安全运营中心正式通过了国家信息安全漏洞库(CNNVD)兼容性认证测试,荣获国家信息安全漏洞库兼容性资质证书。 关于CNNVD兼容性 国家信息安全漏洞库(CNNVD)是…

2003-2022年各省区域创新能力评价相关指标数据(报告年份2003-2022年)

2003-2022年各省区域创新能力相关指标数据(报告年份2003-2022年) 1、来源:2003-2022年中国区城创新能力评价报告 2、指标:综合值、知识创造综合指标、研究开发投人综合指标、专利综合指标、科研论文综合指标、知识获取综合指标、…

CSS02-字体属性、文本属性

一、字体属性 CSS Fonts(字体)属性用于定义字体系列、大小、粗细、和文字样式(如斜体)。 1-1、font-family属性 当font-family有多个值的时候,代码会依次查找当前系统中存在哪种字体,有则使用,没有则查找下一个字体。 1-2、font-size属性 1-3…

解决ArmDS Fast Models 中部分内核无法上电的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示&…

重修设计模式-结构型-享元模式

重修设计模式-结构型-享元模式 复用不可变对象,节省内存 享元模式(Flyweight Pattern)核心思想是通过共享对象方式,达到节省内存和提高性能的目的。享元对象需是不可变对象,因为它会被多处代码共享使用,要避…

Llama3:全模型GQA与tiktoken分词的新突破

在本篇文章中,我们将介绍Llama3模型,并且对比它与Llama2在模型层面上的主要区别。Llama3 相较于Llama2的最显著变化是引入了全模型GQA(Grouped Query Attention)机制,并且在分词阶段使用了与GPT一致的 tiktoken 分词方…

揭秘银企对账,让财务对账不再头疼

揭秘银企对账,让财务对账不再头疼! 银企对账,作为企业与银行间重要的财务互动环节,也在不断地向自动化和智能化方向演进。接下来将逐步的探讨银企对账系统的核心功能、操作流程以及它如何帮助企业提升财务管理效率和准确性。 可以…

AI大模型日报#0923:李飞飞创业之后首个专访、华为云+腾讯音乐发布昇腾适配方案

导读:AI大模型日报,爬虫LLM自动生成,一文览尽每日AI大模型要点资讯!目前采用“文心一言”(ERNIE-4.0-8K-latest)、“智谱AI”(glm-4-0520)生成了今日要点以及每条资讯的摘要。欢迎阅…

基于单片机无线智能报警系统的设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

计算机毕业设计 基于Python的荣誉证书管理系统 Django+Vue 前后端分离 附源码 讲解 文档

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…