1. 程式人生 > 其它 >輕鬆完爆 Helm chart

輕鬆完爆 Helm chart

目錄

一、chart 介紹

kubernetes(k8s) 管理的物件叫做資源(比如 pod)。helm 作為 k8s 生態工具之一,將互相關聯的多個資源統一打包成一個整體,交給 k8s 去執行。這個被打包的整體就叫做 chart。可以把 chart 跟程式的原始碼包做類比。

有了 chart,我們操作的物件不再是單個資源,而是實體。比如我們需要一個有負載均衡能力的 web 服務,如果不使用 chart,我們需要寫 deployment,service 和 ingress 才可以讓叢集外部的客戶使用。但是如果使用 chart,直接使用一個 install 命令便可以實現相同的功能。

二、chart 使用

2.1 chart 搜尋

# helm search repo chart_name(可以只是關鍵字,比如 nginx)

$ helm search repo nginx
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
aliyun/nginx-ingress            0.9.5           0.10.2          An nginx Ingress controller that uses ConfigMap...
aliyun/nginx-lego               0.3.1                           Chart for nginx-ingress-controller and kube-lego
stable/nginx-ingress            1.41.3          v0.34.1         DEPRECATED! An nginx Ingress controller that us...
stable/nginx-ldapauth-proxy     0.1.6           1.13.5          DEPRECATED - nginx proxy with ldapauth
stable/nginx-lego               0.3.1                           Chart for nginx-ingress-controller and kube-lego
aliyun/gcloud-endpoints         0.1.0                           Develop, deploy, protect and monitor your APIs ...
stable/gcloud-endpoints         0.1.2           1               DEPRECATED Develop, deploy, protect and monitor...

2.2 chart下載

# helm pull chart_name(名稱須具體,例 google/nginx-ingress。不能只是關鍵字,否則下載不到 )

$ helm pull aliyun/nginx-ingress
$ ll
總用量 16
-rw-r--r-- 1 root root    76 6月  12 14:50 index.yaml
-rw-r--r-- 1 root root 10830 6月  12 15:40 nginx-ingress-0.9.5.tgz

2.3 chart自建

除了從遠端 helm 倉庫中獲取第三方 chart 外,你也可以建立自己的 chart。

$ helm create mychart
$ ll
總用量 0
drwxr-xr-x 4 root root    93 6月  12 15:40 mychart

2.4 chart 打包

如果你想上傳自建的 chart 到私有倉庫中去,需要先將自建的 chart 打包。

$ helm package mychart
Successfully packaged chart and saved it to: /root/helm/repo/mychart-0.1.0.tgz

2.5 chart 上傳

上傳 chart 需要 4 個步驟:

1)自建私有倉庫

2)生成或更新 chart 索引檔案

3)上傳 chart 和索引檔案

4)更新本地 chart 倉庫

2.5.1 自建私有倉庫

關於如何建立私有倉庫,可以參考輕鬆完爆Helm私有倉庫內容。

2.5.2 生成或更新 chart 索引檔案
$ helm repo index /root/helm/repo
$ ll
總用量 8
-rw-r--r-- 1 root root  392 6月  12 15:46 index.yaml
drwxr-xr-x 4 root root   93 6月  12 15:40 mychart
-rw-r--r-- 1 root root 2801 6月  12 15:41 mychart-0.1.0.tgz

索引檔案 index.yaml 內容如下,由內容可知,已經更新了準備上傳的 chart 資訊。

2.5.3 上傳 chart 和索引檔案

登入私有倉庫,上傳 chart 和索引檔案 index.yaml。

2.5.4 更新本地 chart 倉庫
$ helm repo update
# 更新本地 chart 倉庫,跟遠端倉庫的 chart 保持同步
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "minio" chart repository
...Successfully got an update from the "aliyun" chart repository
...Successfully got an update from the "jetstack" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈ Happy Helming!⎈

更新本地 chart 倉庫之後,就可以檢索到剛上傳的自定義 chart 了。

$ helm search repo mychart
NAME            CHART VERSION   APP VERSION     DESCRIPTION
minio/mychart   0.1.0           1.16.0          A Helm chart for Kubernetes

自此,整個 helm chart 被輕鬆完爆。