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,一经查实,立即删除!

相关文章

虚拟机: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)就像一把锋利的刀,它功能强大,但需要熟练的技巧才能发挥出色。然而,对于初学者来说,它可能显得有些复杂,因…

9.Branch-and-Bound 方法

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

[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所示&…

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制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

2024全球超模大赛(北京|山东|内蒙三城联动)顺利举办

近日,2024 全球超模大赛(北京|山东|内蒙)三城联动暨新国潮文化赛事主题发布会在紫薇美力集团国贸鲁采赋盛大举行。此次发布会旨在鼓励优质模特共同传播中国传统文化,让其在全球范围内绽放光彩,展现中国人的骄傲与风采&…

用Python提取PowerPoint演示文稿中的音频和视频

将多种格式的媒体内容进行重新利用(如PowerPoint演示中的音频和视频)是非常有价值的。无论是创建独立的音频文件、提取视频以便在线分发,还是为了未来的使用需求进行资料归档,从演示文稿中提取这些媒体文件可以为多媒体内容的多次…

基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32F103C8T6 采用DHT11读取温度、滑动变阻器模拟读取电流、电压。 通过OLED屏幕显示,设置电流阈值为80,电流小阈值为50,电压阈值为60,温度阈值为30 随便哪个超过预祝,则继电器切断,LE…

【sgCreateCallAPIFunctionParam】自定义小工具:敏捷开发→调用接口方法参数生成工具

<template><div :class"$options.name" class"sgDevTool"><sgHead /><div class"sg-container"><div class"sg-start"><div style"margin-bottom: 10px">参数列表[逗号模式]<el-too…

9.23作业

仿照string类&#xff0c;自己手动实现 My_string 代码如下 MyString.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; …

十大常用加密软件排行榜|2024年好用的加密软件推荐【精选】

在信息安全日益重要的时代&#xff0c;加密软件成为保护个人和企业数据的关键工具。选择合适的加密软件可以有效防止数据泄露和未授权访问。以下是2024年值得推荐的十大加密软件&#xff0c;帮助你找到适合的解决方案。 1. Ping32加密软件 Ping32是一款功能强大的加密软件&…

Linux C# Day4

作业&#xff1a; 1.统计家目录下.c文件的个数 #!/bin/bash num0 for filename in ls ~/*.c do((num)) done echo $num2.定义一个稀疏数组(下标不连续)&#xff0c;写一个函数&#xff0c;求该稀疏数组的和&#xff0c;要求稀疏数组中的数值通过参数传递到函数中arr([2]9 [4…