helm repository

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.0
  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.0
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: 1

image:
  repository: daemonza/test
  tag: latest
  pullPolicy: IfNotPresent


service:
  name: test
  type: ClusterIP
  internalport: 80
  externalPort: 80

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:2:14: executing "test-chart/templates/NOTES.txt" at <.Values.ingress.enabled>: nil pointer evaluating interface {}.enabled

Error: 1 chart(s) linted, 1 chart(s) failed

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

$ helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended

1 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.0.tgz
[debug] Successfully saved D:\zhuojian-projects\rubik-T\health-doc\详细设计\helm\test-chart-0.1.0.tgz to C:\Users\YFZX-MY-1715\.helm\repository\local

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

$ helm search test
NAME                    CHART VERSION   APP VERSION     DESCRIPTION
local/test-chart        0.1.0           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:8879

将本地仓储加入到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.0           1.0             A Helm chart for Kubernetes

猜你喜欢

转载自www.cnblogs.com/miaoying/p/11265339.html
今日推荐