chart 目录结构 - 每天5分钟玩转 Docker 容器技术(164)

chart 是 Helm 的应用打包格式。chart 由一系列文件组成,这些文件描述了 Kubernetes 部署应用时所需要的资源,比如 Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap 等。

单个的 chart 可以非常简单,只用于部署一个服务,比如 Memcached;chart 也可以很复杂,部署整个应用,比如包含 HTTP Servers、 Database、消息中间件、cache 等。

chart 将这些文件放置在预定义的目录结构中,通常整个 chart 被打成 tar 包,而且标注上版本信息,便于 Helm 部署。

下面我们将详细讨论 chart 的目录结构以及包含的各类文件。

chart 目录结构

以前面 MySQL chart 为例。一旦安装了某个 chart,我们就可以在 ~/.helm/cache/archive 中找到 chart 的 tar 包。

解压后,MySQL chart 目录结构如下:

目录名就是 chart 的名字(不带版本信息),这里是 mysql,包含如下内容:

Chart.yaml 
YAML 文件,描述 chart 的概要信息。

name 和 version 是必填项,其他都是可选。

README.md 
Markdown 格式的 README 文件,相当于 chart 的使用文档,此文件为可选。

LICENSE 
文本文件,描述 chart 的许可信息,此文件为可选。

requirements.yaml 
chart 可能依赖其他的 chart,这些依赖关系可通过 requirements.yaml 指定,比如:

在安装过程中,依赖的 chart 也会被一起安装。

values.yaml 
chart 支持在安装的时根据参数进行定制化配置,而 values.yaml 则提供了这些配置参数的默认值。

templates 目录 
各类 Kubernetes 资源的配置模板都放置在这里。Helm 会将 values.yaml 中的参数值注入到模板中生成标准的 YAML 配置文件。

模板是 chart 最重要的部分,也是 Helm 最强大的地方。模板增加了应用部署的灵活性,能够适用不同的环境,我们后面会详细讨论。

templates/NOTES.txt 
chart 的简易使用文档,chart 安装成功后会显示此文档内容。

与模板一样,可以在 NOTE.txt 中插入配置参数,Helm 会动态注入参数值。

下一节我们详细讨论 chart 模板的用法。

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

原文地址:http://blog.51cto.com/cloudman/2113384

时间: 2024-10-06 21:43:25

chart 目录结构 - 每天5分钟玩转 Docker 容器技术(164)的相关文章

再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)

学习了 chart 结构和模板的知识后,现在重新实践一次 MySQL chart,相信会有更多收获. chart 安装前的准备 作为准备工作,安装之前需要先清楚 chart 的使用方法.这些信息通常记录在 values.yaml 和 README.md 中.除了下载源文件查看,执行 helm inspect values 可能是更方便的方法. 输出的实际上是 values.yaml 的内容.阅读注释就可以知道 MySQL chart 支持哪些参数,安装之前需要做哪些准备.其中有一部分是关于存储的

开发自己的 chart - 每天5分钟玩转 Docker 容器技术(167)

Kubernetes 给我们提供了大量官方 chart,不过要部署微服务应用,还是需要开发自己的 chart,下面就来实践这个主题. 创建 chart 执行 helm create mychart 的命令创建 chart mychart: Helm 会帮我们创建目录 mychart,并生成了各类 chart 文件.这样我们就可以在此基础上开发自己的 chart 了. 新建的 chart 默认包含一个 nginx 应用示例,values.yaml 内容如下: 开发时建议大家参考官方 chart 中

管理和安装 chart - 每天5分钟玩转 Docker 容器技术(168)

安装 chart 当我们觉得准备就绪,就可以安装 chart,Helm 支持四种安装方法: 安装仓库中的 chart,例如:helm install stable/nginx 通过 tar 包安装,例如:helm install ./nginx-1.2.3.tgz 通过 chart 本地目录安装,例如:helm install ./nginx 通过 URL 安装,例如:helm install https://example.com/charts/nginx-1.2.3.tgz 这里我们使用本地

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

Rex-Ray 是一个优秀的 Docker volume driver,本节将演示其安装和配置方法. Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很简单,在需要使用 Rex-Ray driver 的主机 docker1 和 docker2 上运行如下命令: curl -sSL https://dl.bintray.com/emccode/rexray/install | sh - 然后创建并编辑 Rex-Ray 的配置文件 /etc/rexray/c

万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容器的日志. Fluentd 是一个开源的数据收集器,它目前有超过 500 种的 plugin,可以连接各种数据源和数据输出组件.在接下来的实践中,Fluentd 会负责收集容器日志,然后发送给 Elasticsearch.日志处理流程如下: 这里我们用 Filebeat 将 Fluentd 收集到的

如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-address=udp://localhost:12201 \ --log-opt tag="log-test-container-A" \ busybox sh -c 'while true; do echo "This is a log message from container A&

Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)

service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一:打包在容器里. 显然不行.除非数据不会发生变化,否则,如何在多个副本直接保持同步呢? 选项二:数据放在 Docker 主机的本地目录中,通过 volume 映射到容器里. 位于同一个主机的副本倒是能够共享这个 volume,但不同主机中的副本如何同步呢? 选项三:利用 Docker 的 volum

DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)

本节详细分析两个 k8s 自己的 DaemonSet:kube-flannel-ds 和 kube-proxy . kube-flannel-ds 下面我们通过分析 kube-flannel-ds 来学习 DaemonSet. 还记得之前是如何部署 flannel 网络的吗?我们执行了如下两个命令: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel

hostPath Volume - 每天5分钟玩转 Docker 容器技术(148)

hostPath Volume 的作用是将 Docker Host 文件系统中已经存在的目录 mount 给 Pod 的容器.大部分应用都不会使用 hostPath Volume,因为这实际上增加了 Pod 与节点的耦合,限制了 Pod 的使用.不过那些需要访问 Kubernetes 或 Docker 内部数据(配置文件和二进制库)的应用则需要使用 hostPath. 比如 kube-apiserver 和 kube-controller-manager 就是这样的应用,通过 kubectl e