前言
類似於 Linux 的 YUM、APT,Helm 是 K8S 的包管理工具。
Helm, 一個二進制工具,用來安裝、升級、卸載 K8S 中的應用程序。
Helm Chart,一個 tgz 包,類似安卓的 APK。
K8S 應用打包成 Chart,通過 Helm 安裝到 K8S 集群中。
更新歷史
- 20200717 - 初稿 - 左程立
- 原文地址 - https://blog.zuolinux.com/2020/07/17/k8s-package-manager-helm.html
Helm 包管理工具
安裝 Helm,解壓到 /usr/loca/bin/ 下
wget https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz
添加國內倉庫
helm repo add apphub https://apphub.aliyuncs.com
helm repo update
helm repo list
查找 nginx
helm search repo nginx
安裝 nginx-ingress 到 K8S 中
helm install nginx apphub/nginx
如果有報錯,有些舊倉庫往會最新版 K8S,這里是 v1.18.2按照,會報錯,可以換個倉庫或者下載下來修改后本地安裝
報錯
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
helm pull apphub/nginx-ingress --untar
grep -irl "extensions/v1beta1" nginx-ingress | grep deployment
grep -irl "extensions/v1beta1" nginx-ingress | grep deploy | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
helm install nginx1 ./nginx-ingress/
再安裝一個 nginx-ingress
helm install nginx2 apphub/nginx
查看已經安裝了哪些
helm list
卸載
helm uninstall nginx
helm uninstall nginx2
在 K8S 中查看安裝的應用
kubectl get pod
kubectl get service
Helm 相關術語
Chart
Helm的應用包,采用tgz格式。類似於 Yum 的 RPM,其包含了一組定義 Kubernetes 資源相關的 YAML 文件,也稱為應用 Chart。
Repoistory
Helm 的應用倉庫,保存了一系列的 Chart 應用包以供用戶下載,並且提供了一個該 Repository 的 Chart 包清單文件以供查詢。
Helm 可以同時管理多個不同的 Repository。
Helm 社區官方提供了 stable 和 incubator 倉庫,用戶也可以自己搭建倉庫。
倉庫可以是公共倉庫,也可以是私有倉庫。
Hub
不同的個人和組織提供的公共倉庫形成了分散和分布的 Helm 倉庫,不利於查找,所以官方提供了Helm Hub,各公共倉庫可以注冊到 Helm Hub 中以方便集中查找,Helm Hub 只是分布的倉庫的集中展示中心。
倉庫注冊到 Helm Hub 時,會將 Chart 清單文件向 Helm Hub 同步一份,這樣可以在 Helm Hub 集中展示倉庫列表和各倉庫中的 Chart 列表。
Chart 包也就是 tgz 文件實際上存儲在各倉庫中。Helm Hub 並不實際存儲 Chart 包。Helm 只是在查詢 Chart 時和 Helm Hub 有交互,其它操作都是和倉庫直接交互的。
Release
在 K8S 集群上運行的 Chart 的一個實例。
在同一個集群上,一個Chart可以安裝很多次。
每次安裝都會創建一個新的 Release。
例如一個 MySQL Chart,如果想在服務器上運行兩個 MySQL 數據庫,就可以把這個 Chart 安裝兩次。每次安裝都會生成一個新的 Release。
結束語
Helm Chart 可幫助 K8S 應用實現打包、共享、一鍵安裝。
Helm Hub 收集了全球的各公共倉庫信息,以便用戶可以集中查找,但 Helm Hub 並沒有實際存儲 Chart 包,只是告訴用戶你可以去哪里下載到 Chart 包。
聯系我
微信公眾號:zuolinux_com