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. 算法设计与分析(李春保)练习题答案v2

    ----------------------------------------------------- Page 1 --------------------------------------- ...

  2. WPF DataGrid横向显示

    前言 利用各种变换,将其水平改向至横向显示. 注意的是要固定好单元格的高宽,或者手动编写style 否者在滚动的时候,会有高宽比例不一样的时候 再其次,要注意datagrid的容器或者datagrid ...

  3. 【mysql】windows7 安装mysql5.7 解压缩版 + windows7 安装mysql5.7报错 计算机丢失了MSVCR120.dll解决方法

    1.下载mysql 5.7的zip版解压缩的安装包 在mysql官网:http://dev.mysql.com/downloads/mysql/ 2.解压到本地任意目录,并创建一个mysql_data ...

  4. Linux纯小白操作(以安装JDK为例)

    [本文只针对纯小白,有基础的请略过] 最近公司给分配工作使用的虚拟机都是Linux系统的,以前完全没接触过,今天按照网上一些教程操作,好多地方感觉对小白不够友好(有些问题非常小白那些教程没有写出来.我 ...

  5. Java常用类object详解

    1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...

  6. English--音标重难点

    English|音标重难点 在拥有了,音标的元音与辅音的基础之后,需要对于这些音标进行加以区分,毕竟方言对于口型的影响非常的大. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  7. vim 如何复制文件中多行到另一个文件

    1.打开文件 vim a.txt b.tx 或者 vim *.txt 2.文件间切换 :n 切换到下一个文件 :wn 保存再切换 :N 到上一个文件 :wN 保存再切换 :.= 看当前行 3.假定当前 ...

  8. thinkphp整合系列之极验滑动验证码geetest

    给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...

  9. "轻"量级 Java Web 服务框架漫谈

    博文太长了, 还是先说下概要: 框架"轻量"与否可以从两方面来看待: 1) 框架本身的体量 - 例如小 jar 无依赖的苗条框架; 2) 用户使用框架是否获得各种便利而无阻隔(&q ...

  10. c#执行sql超时

    超时分为多种,SqlConnection有超时选项, SqlDataAdapter也有超时选项设置如下: SqlConnection:就用链接字符串给予的Timeout设置就行单位秒: SqlData ...