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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM