【笔记ing】Helm-3 主题-1 Chart

news/2024/7/4 7:39:02 标签: Helm, 云原生, kubernetes, k8s

Chart

Helm使用的包格式称为chart。chart就是一个描述Kubernetes相关资源的文件集合。单个chart可以用来部署一些简单的,类似于memcache pod,或者某些复杂的HTTP服务器以及web全栈应用、数据库、缓存等等。

chart是作为特定目录布局的文件被创建的。它们可以打包到要部署的版本存档中。

如果您想下载和查看一个发布的chart,但不安装它,您可以用这个命令:helm pull chartrepo/chartname。

该文档解释说明了chart格式,并提供了用Helm构建chart的基本指导。

Chart文件结构

chart是一个组织在文件目录中的集合。目录名称就是chart名称(没有版本信息)。因为描述WordPress的chart可以存储在wordpress/目录中。

在这个目录中,Helm期望可以匹配以下结构:

wordpress/

  Chart.yaml  # 包含了chart信息的YAML文件

  LICENSE  # 可选:包含chart许可证的纯文本文件

  README.md  # 可选:可读的READEME文件

  values.yaml  # chart 默认的配置值

  values.schema.json  # 可选:一个使用JSON结构的values.yaml文件

  charts/  # 包含chart依赖的其他chart

  crds/  # 自定义资源的定义

  templates/  # 模板目录,当和values结合时,可生成有效的Kubernetes manifest文件

  templates/NOTES.txt  # 可选:包含简要使用说明的纯文本文件

wordpress/
  Chart.yaml          # 包含了chart信息的YAML文件
  LICENSE             # 可选: 包含chart许可证的纯文本文件
  README.md           # 可选: 可读的README文件
  values.yaml         # chart 默认的配置值
  values.schema.json  # 可选: 一个使用JSON结构的values.yaml文件
  charts/             # 包含chart依赖的其他chart
  crds/               # 自定义资源的定义
  templates/          # 模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件
  templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件

Helm保留使用charts/,crds/,templates/目录,以及列举出的文件名。其他文件保持原样。

Chart.yaml 文件

Chart.yaml文件时chart必需的。包含了以下字段:

apiVersion: chart API版本(必需)

name: chart名称(必需)

version: 语义化2 版本(必需)

kubeVersion: 兼容Kubernetes版本的语义化版本(可选)

description: 一句话对这个项目的描述(可选)

type: chart类型(可选)

keywords:

  - 关于项目的一组关键字(可选)

home: 项目home页面的URL(可选)

sources:

  - 项目源码的URL列表(可选)

dependencies:  # chart 必要条件列表(可选)

  -name: chart名称(nginx)

    version: chart版本("1.2.3")

    repository: (可选)仓库URL("https://example.com/charts")或别名("@repo-name")

    condition: (可选)解析为布尔值的yaml路径,用于启用/禁用chart(e.g. subchart1.enabled)

    tags: # (可选)

      - 用于一次启用/禁用 一组chart的tag

    import-values: #(可选)

      - ImportValue保存原值到导入父键的映射。每项可以是字符串对着一对子/父列表项

    alias: (可选)chart中使用的别名。当你要多次添加相同的chart时会很有用

maintainers: #(可选)

    - name: 维护者名字(每个维护者都需要)

      email: 维护者邮箱(每个维护者可选)

      url: 维护者URL(每个维护者可选)

icon: 用作icon的SVG或PNG图片URL(可选)

appVersion: 包含的应用版本(可选)。不需要是语义化,建议使用引号

deprecated: 不被推荐的chart(可选,布尔值)

annotations: 

  example: 按名称输入的批注列表(可选)。

apiVersion: chart API 版本 (必需)
name: chart名称 (必需)
version: 语义化2 版本(必需)
kubeVersion: 兼容Kubernetes版本的语义化版本(可选)
description: 一句话对这个项目的描述(可选)
type: chart类型 (可选)
keywords:
  - 关于项目的一组关键字(可选)
home: 项目home页面的URL (可选)
sources:
  - 项目源码的URL列表(可选)
dependencies: # chart 必要条件列表 (可选)
  - name: chart名称 (nginx)
    version: chart版本 ("1.2.3")
    repository: (可选)仓库URL ("https://example.com/charts") 或别名 ("@repo-name")
    condition: (可选) 解析为布尔值的yaml路径,用于启用/禁用chart (e.g. subchart1.enabled )
    tags: # (可选)
      - 用于一次启用/禁用 一组chart的tag
    import-values: # (可选)
      - ImportValue 保存源值到导入父键的映射。每项可以是字符串或者一对子/父列表项
    alias: (可选) chart中使用的别名。当你要多次添加相同的chart时会很有用
maintainers: # (可选)
  - name: 维护者名字 (每个维护者都需要)
    email: 维护者邮箱 (每个维护者可选)
    url: 维护者URL (每个维护者可选)
icon: 用做icon的SVG或PNG图片URL (可选)
appVersion: 包含的应用版本(可选)。不需要是语义化,建议使用引号
deprecated: 不被推荐的chart (可选,布尔值)
annotations:
  example: 按名称输入的批注列表 (可选).

从v3.3.2,不再允许额外的字段。推荐的方法是在annotations中自定义元数据。

Chart和版本控制

每个chart都必须有个版本号。版本必须遵循 语义化版本2 标准。不像经典HelmHelm v2以及后续版本会使用版本号作为发布标记。仓库中的包通过名称加版本号识别。

Semantic Versioning 2.0.0 | Semantic Versioning

比如nginx chart的版本字段version: 1.2.3按照名称被设置为:

nginx-1.2.3.tgz

更多复杂的语义化版本2都是支持的,比如version: 1.2.3-alpha.1+ef365。但系统明确禁止非语义化版本名称。

注意:鉴于经典Helm和部署管理器在使用chart时都非常倾向于GitHub,Helm v2和后续版本不再依赖或需要GitHub甚至是Git。因此,它完全不使用Git SHA进行版本控制。

Chart.yaml 文件中的version字段被很多Helm工具使用,包括CLI。当生成一个包时,helm package命令可以用Chart.yaml文件中找到的版本号作为包名中的token。系统假设chart包名中的版本号可以与Chart.yaml文件中的版本号匹配。如果不满足这一假设会导致错误。

☆ apiVersion 字段

对于至少需要Helm 3的chart,apiVerison字段应该是v2.Chart支持之前apiVersion设置为v1的Helm版本,并且在Helm 3中仍然可安装。

v1到v2的改变:

1、dependencies字段定义了chart的依赖,针对于v1版本的chart被放置在分隔开的requirements.yaml文件中(查看 Chart依赖 )。

Helm | Chart

2、type字段,用于识别应用和库类型的chart(查看 Chart类型 )。

Helm | Chart

☆ appVersion字段

仅用于本人学习

来源:Helm | Docs


http://www.niftyadmin.cn/n/5314835.html

相关文章

【打卡】牛客网:BM76 正则表达式匹配

模板的: 关键思想是: 当pattern遇到*时,需要考虑两种情况: str的当前字符和pattern的*前的字符相同,例如str“ab”,pattern“abb*”,“b”和“b*”相同,有两种情况可以选择&#xf…

easyExcel 获取多个sheet中复杂表头的数据

easyExcel 获取多个sheet中复杂表头的数据 easyExcel 解释 EasyExcel是一个强大且易于使用的Java库,用于简化Excel文件的读写操作。它是阿里巴巴开源的一个基于POI实现的Excel处理工具,并提供了一组简单的API来处理Excel文件,包括读取、写入…

大创项目推荐 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

[力扣 Hot100]Day1 两数之和

考完研了秽土转生,开始刷一下LeetCode准备一下复试,我尽量每个工作日一更 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设…

Redis 配置(二)

目录 redis 配置 Redis 主从复制 主从复制的作用 主从复制流程 搭建Redis 主从复制 Redis 哨兵模式 哨兵模式的作用 哨兵结构 故障转移机制 主节点的选举 搭建Redis 哨兵模式 Redis 群集模式 集群的作用 Redis集群的数据分片 Redis集群的主从复制模型 搭建R…

#Uniapp:uni-app中vue2生命周期--11个

uni-app中vue2生命周期 生命周期钩子描述H5App端小程序说明beforeCreate在实例初始化之后被调用 详情√√√created在实例创建完成后被立即调用 详情√√√beforeMount在挂载开始之前被调用 详情√√√mounted挂载到实例上去之后调用 详情 注意:此处并不能确定子组…

防火墙管理入门:Firewalld 与 UFW

防火墙在保护计算机安全方面扮演着至关重要的角色。在Linux系统中,Firewalld和UFW(Uncomplicated Firewall)是两个常见的防火墙管理工具。本文将介绍如何查看系统版本、了解防火墙状态以及如何关闭、开启防火墙。 一、Firewalld 与 UFW 的区…

蓝牙信标定位原理

定位原理:蓝牙信标的定位原理是基于RSSI蓝牙信号强度来做定位的。 根据应用场景不同,通过RSSI定位原理可分为两种定位方式 一、存在性定位 这种方式通常要求所需定位的区域安装一个蓝牙信标即可,手持终端扫描蓝牙信标信号,扫描…