chart repo是一个可用来存储index.yaml与打包的chart文件的HTTP server。当要分享chart时,需要上传chart文件到chart仓库,任何一个能够提供yaml与tar文件的HTTP server都可以当作chart仓库,比如自己的web服务器。官方的chart仓库由kubernetes Charts维护,helm允许我们创建私有的chart仓库。

一个chart仓库由一个chart包与index.yaml文件组成,index.yaml记录了chart仓库中全部chart的索引,一个本地chart仓库的布局例子如下:

apiVersion: v1
entries:
test-chart:
- apiVersion: v1
appVersion: "1.0"
created: "2019-07-29T15:15:25.7848643+08:00"
description: A Helm chart for Kubernetes
digest: 5e3215c970b7e9ca58522104bce7fe107a891cca3363af174fda7c7d69ae042a
name: test-chart
urls:
- http://127.0.0.1:8879/test-chart-0.1.0.tgz
version: 0.1.
test-chart2:
- apiVersion: v1
appVersion: "1.0"
created: "2019-07-29T15:19:25.9210099+08:00"
description: A Helm chart for Kubernetes
digest: sha256:e33bab5a2be0738e2fbe9800348d2d250d63938d223c9e3d29a8e5b12f23f4a3
name: test-chart2
urls:
- http://127.0.0.1:8879/charts/test-chart2-0.1.0.tgz
version: 0.1.
generated: "2019-07-29T15:15:25.7827829+08:00"

~\.helm\repository\local\index.yaml文件中记录了chart的各种信息,例如:名称、版本、url等。

1. 创建一个helm

$ helm create test-chart
Creating test-chart

2. 目录结构如下

├─test-chart
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── NOTES.txt
│ └── service.yaml
└── values.yaml

3. 编辑values文件

replicaCount: 

image:
repository: daemonza/test
tag: latest
pullPolicy: IfNotPresent service:
name: test
type: ClusterIP
internalport:
externalPort: resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi

3. 到test-chart目录下,对Chart进行校验

$ helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended
[ERROR] templates/: render error in "test-chart/templates/NOTES.txt": template: test-chart/templates/NOTES.txt::: executing "test-chart/templates/NOTES.txt" at <.Values.ingress.enabled>: nil pointer evaluating interface {}.enabled Error: chart(s) linted, chart(s) failed

根据提示进行修改,直到校验成功,会出现如下输出

$ helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended chart(s) linted, no failures

4. 退出test-chart目录,对Chart进行打包

(根据输出可以看到Chart被打包成了一个压缩包:test-chart-0.1.0.tgz,同时被save到了helm的本地仓储中)

$ helm package test-chart --debug
Successfully packaged chart and saved it to: D:\zhuojian-projects\rubik-T\health-doc\详细设计\helm\test-chart-0.1..tgz
[debug] Successfully saved D:\zhuojian-projects\rubik-T\health-doc\详细设计\helm\test-chart-0.1..tgz to C:\Users\YFZX-MY-\.helm\repository\local

5. 此时,repository目录中的Chart已经被helm进行管理,使用命令可以找到生成的Chart包

$ helm search test
NAME CHART VERSION APP VERSION DESCRIPTION
local/test-chart 0.1. 1.0 A Helm chart for Kubernetes

6. 本地启动一个repository server

如果使用helm search test发现找不到生成的Chart包,可以在本地启动一个repository server,并将其加入到helm repo列表中

$ helm serve&
Now serving you on 127.0.0.1:

将本地仓储加入到helm repo列表中

$ helm repo add local http://127.0.0.1:8879
"local" has been added to your repositories

查看仓储列表

$ helm repo list
NAME URL
stable https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
local http://127.0.0.1:8879
incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/

再次查找test chart包,就能够找到了

$ helm search test
NAME CHART VERSION APP VERSION DESCRIPTION
local/test-chart 0.1. 1.0 A Helm chart for Kubernetes

helm repository 相关的更多相关文章

  1. 【分享】几篇关于Repository 相关的讨论、提问、文章

    一.引入 最近在了解DDD,对于里面Repository 有点疑问和关注.闲来无事,去找了一些文章,来补补.在这里分享出来给大家.文章大多数都是英文的,见谅哈. 二.推荐列表 2.1 Filters ...

  2. Helm学习笔记

    Helm学习笔记 Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升 ...

  3. Kubernetes系列之Helm介绍篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 介绍 Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来 ...

  4. helm 部署

    Helm 基本概念 Helm 可以理解为 Kubernetes 的包管理工具,可以方便地发现.共享和使用为Kubernetes构建的应用,它包含几个基本概念 Chart:一个 Helm 包,其中包含了 ...

  5. Kubernetes学习之路(二十五)之Helm程序包管理器

    目录 1.Helm的概念和架构 2.部署Helm (1)下载helm (2)部署Tiller 3.helm的使用 4.chart 目录结构 5.chart模板 6.定制安装MySQL chart (1 ...

  6. kubernetes实战(十):k8s使用Helm安装harbor

    1.基本概念 对于复杂的应用中间件,需要设置镜像运行的需求.环境变量,并且需要定制存储.网络等设置,最后设计和编写Deployment.Configmap.Service及Ingress等相关yaml ...

  7. Helm安装和项目使用

    整体架构 1.为什么要用? 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个s ...

  8. Helm入门

    前言:Helm是GO语言编写的,是管理kubernetes集群中应用程序包的客户端工具.Helm是类似于centos上的yum工具或Ubuntu上的apt-get工具.对于应用发布者而言,可以通过He ...

  9. kubernetes实战篇之helm完整示例

    系列目录 构建一个 Helm Chart 下面我们通过一个完整的示例来学习如何使用 Helm 创建.打包.分发.安装.升级及回退Kubernetes应用. 创建一个名为 mychart 的 Chart ...

随机推荐

  1. Prometheus 编写告警规则案例

    Prometheus 编写告警规则案例 注:确保alertmanager配置完毕! 1.创建编辑文件:vim /usr/local/prometheus/rules/node.yml # groups ...

  2. 04、状态模式(State)

    一.概念: 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类.[DP] 二.作用: 状态模式的主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况.吧状态的判断逻辑转 ...

  3. KVM虚拟机网络配置 Bridge方式,NAT方式

    https://blog.csdn.net/hzhsan/article/details/44098537/

  4. java 精彩文章收集

    hashCode() 和equals() 区别和作用 字符串常量池 Java集合之LinkedHashMap

  5. SQL IN 一定走索引吗?

    摘要 IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论.但是好像看的太久了,又忘记了.哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复 ...

  6. thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

    1 到这里下载classes里面的文件 https://github.com/PHPOffice/PHPExcel 2 然后放到 thinkphp的vendor 新建一个文件夹 Phpexcel  然 ...

  7. 数据库IN查询参数化改造的方法

    // 批量查询的 2019-05-14 if (!string.IsNullOrWhiteSpace(Request["userCodes"])) { string userCod ...

  8. .NET EF执行sql报数组超出了索引

    使用ef查询,写sql语句的 一般情况报数组超出了索引都认为是[i]里面的值超出了,但是执行sql报超出了索引,让人很蒙 在网上找了半天也没有结果,后来只能自己来解决了. 在异常里面能看到dbnull ...

  9. mvc返回json数据

    不知道是不是你要的那种,这是用于返回简单数据表达数据操作成功,中间复杂代码掠过看首尾 [HttpPost] public IActionResult DataRole(int id, string[] ...

  10. 1-Kong文章记录

    参考: https://www.cnblogs.com/duanxz/p/9770645.html 系列博客可参考: 开源API网关系统(Kong教程)入门到精通 https://www.cnblog ...