Helm 使用一种名为 charts 的包格式,一个 chart 是描述一组相关的 Kubernetes 资源的文件集合,单个 chart 可能用于部署简单的应用,比如 ETCD,或者复杂的应用,比如一个带有 HTTP 服务、数据库、缓存等等功能的完整 web 应用程序。

Charts 是创建在特定目录下面的文件集合,然后可以将它们打包到一个版本化的存档中来部署。

文件结构

chart 被组织为一个目录中的文件集合,目录名称就是 chart 的名称(不包含版本信息),下面是一个 WordPress 的 chart,会被存储在 wordpress/ 目录下面,基本结构如下所示:

wordpress/
  Chart.yaml          # 包含当前 chart 信息的 YAML 文件
  LICENSE             # 可选:包含 chart 的 license 的文本文件
  README.md           # 可选:一个可读性高的 README 文件
  values.yaml         # 当前 chart 的默认配置 values
  values.schema.json  # 可选: 一个作用在 values.yaml 文件上的 JSON 模式
  charts/             # 包含该 chart 依赖的所有 chart 的目录
  crds/               # Custom Resource Definitions
  templates/          # 模板目录,与 values 结合使用时,将渲染生成 Kubernetes 资源清单文件
  templates/NOTES.txt # 可选: 包含简短使用使用的文本文件

另外 Helm 会保留 charts/crds/ 以及 templates/ 目录以及上面列出的文件名的使用。

Chart.yaml 文件

对于一个 chart 包来说 Chart.yaml 文件是必须的,它包含下面的这些字段:

apiVersion: v2
name:             # chart名
version:          # chart版本
kubeVersion:      # 兼容的 Kubernetes 版本 (可选)
description:      # 一句话描述 (可选)
type: application # chart类型,默认为application,application和library
keywords:
  - 当前项目关键字集合 (可选)
home:             # 当前项目的 URL (可选)
sources:
  - 当前项目源码 URL (可选)
dependencies:            # chart 依赖列表 (可选)
  - name: nginx          # chart 名称
    version: "1.2.3"     # chart 版本
    repository: https://example.com/charts     # 仓库地址
maintainers:    # (可选)
  - name: FeiYi                     # 维护者名字
    email: mupeifeiyi@gmail.com     # 维护者的 email
    url: https://www.feiyiblog.com  # 维护者 URL
icon:             # chart 的 SVG 或者 PNG 图标 URL (可选).
appVersion:       # 包含的应用程序版本 (可选). 不需要 SemVer 版本
deprecated:       # chart 是否已被弃用 (可选, boolean)

其他字段默认会被忽略。其他关于 Chart 的详解请参考 :https://www.qikqiak.com/k8strain2/helm/charts/

因为我再写下去也是照抄,但我看过一遍了,再加上之前有一些使用 helm 的经验,所以想要从如何开发模板,慢慢熟悉

使用 Helm 管理 Charts

helm 工具有几个用于操作 charts 的命令,如下所示。

创建一个新的 chart 包:

$ helm create mychart
Created mychart/

一旦你已经编辑了一个 chart 包,Helm 可以将其打包到一个独立文件中:

$ helm package mychart
Archived mychart-0.1.-.tgz

你还可以使用 helm 帮助你查找 chart 包的格式要求方面或其他问题:

$ helm lint mychart
No issues found

Chart 仓库

chart 仓库实际上就是一个 HTTP 服务器,其中包含一个或多个打包的 chart 包,虽然可以使用 helm 来管理本地 chart 目录,但是在共享 charts 的时候,最好的还是使用 chart 仓库。

可以提供 YAML 文件和 tar文件并可以相应 GET 请求的任何 HTTP 服务器都可以作为 chart 仓库服务器。仓库的主要特征是存在一个名为 index.yaml 的特殊文件,该文件具有仓库中提供的所有软件包的列表以及允许检索和验证这些软件包的元数据。

在客户端,可以使用 helm repo 命令来管理仓库,但是 Helm 不提供用于将 chart 上传到远程 chart 仓库的工具。

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0