1 - Helm
Helm是Kubernetes的包管理器,能够通过命令行从仓库中查找包并下载安装。
Helm使用一个名为Chart的资源模板化并打包Kubernetes资源,比如Deployment,Service,ConfigMap,Ingress等。
也就是说,Helm将Kubernetes包定义为一系列清单文件和一些元数据,清单文件就是模板。
Helm实例化包时会给模板中的字段赋值,也就是说可以在安装时使用输入参数来配置这些资源,也可以使用依赖项实现包安装时复用现有图表。
一些概念
- chart: 一个 Helm 包,也被称作图表,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义。
- release:在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可以安装很多次,每次安装都会创建一个新的 release。
- repository:用于发布和存储 Chart 的仓库,Helm客户端通过HTTP协议来访问仓库中Chart的索引文件和压缩包。
官方信息
Quickstart
Best Practices
2 - Helm存储库
Helm存储库可以托管用于管理应用程序的Chart。
Helm提供了一个CLI,用于从给定的Helm存储库里安装应用程序到指定的Kubernetes环境中。
一些众所周知的软件应用程序的各种稳定Helm图表可以在如下链接中找到
- https://artifacthub.io/
- Kubeapps Hub:https://hub.kubeapps.com/
3 - 安装Helm
[anliven@anliven ~]$ uname -a
Linux anliven 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[anliven@anliven ~]$
[anliven@anliven ~]$ cat /etc/system-release
CentOS Linux release 7.8.2003 (Core)
[anliven@anliven ~]$
[anliven@anliven ~]$ wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
--2021-02-26 10:41:43-- https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
Resolving get.helm.sh (get.helm.sh)... 152.199.39.108, 2606:2800:247:1cb7:261b:1f9c:2074:3c
Connecting to get.helm.sh (get.helm.sh)|152.199.39.108|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12365365 (12M) [application/x-tar]
Saving to: ‘helm-v3.5.2-linux-amd64.tar.gz’
100%[=====================================================================================================================================>] 12,365,365 2.10MB/s in 12s
2021-02-26 10:41:55 (1002 KB/s) - ‘helm-v3.5.2-linux-amd64.tar.gz’ saved [12365365/12365365]
[anliven@anliven ~]$ tar -xvf helm-v3.5.2-linux-amd64.tar.gz
linux-amd64/
linux-amd64/helm
linux-amd64/LICENSE
linux-amd64/README.md
[anliven@anliven ~]$
[anliven@anliven ~]$ ls -l linux-amd64/
total 38936
-rwxr-xr-x 1 anliven anliven 39854080 Feb 4 16:52 helm
-rw-r--r-- 1 anliven anliven 11373 Feb 4 16:54 LICENSE
-rw-r--r-- 1 anliven anliven 3367 Feb 4 16:54 README.md
[anliven@anliven ~]$
[anliven@anliven ~]$ ls -l /usr/local/bin
total 99388
-rw-r--r-- 1 root root 32768 Oct 9 06:12 docker-compose
-rwxrwxr-x 1 anliven anliven 43003904 Oct 14 22:43 kubectl
-rwxr-xr-x 1 root root 58733392 Oct 14 22:46 minikube
[anliven@anliven ~]$
[anliven@anliven ~]$ sudo mv linux-amd64/helm /usr/local/bin # 将helm命令加入到$PATH
[anliven@anliven ~]$
[anliven@anliven ~]$ helm version # Helm v3与v2变化巨大,没有了tiller
version.BuildInfo{Version:"v3.5.2", GitCommit:"167aac70832d3a384f65f9745335e9fb40169dc2", GitTreeState:"dirty", GoVersion:"go1.15.7"}
[anliven@anliven ~]$
[anliven@anliven ~]$ helm repo remove stable # 删除默认的源
Error: no repositories configured
[anliven@anliven ~]$
[anliven@anliven ~]$ helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts # 增加国内镜像源
"stable" has been added to your repositories
[anliven@anliven ~]$
[anliven@anliven ~]$ helm repo update # 获取最新的charts列表
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
Update Complete. ⎈Happy Helming!⎈
[anliven@anliven ~]$
[anliven@anliven ~]$ helm repo list # 查看helm源添加情况
NAME URL
stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
[anliven@anliven ~]$
4 - 利用Helm安装应用程序
- helm install
5 - 利用Helm打包应用程序
将一个包含多个Kubenetes清单文件的应用程序打包为Helm包
- helm create 生成图表骨架
- helm install 在本地测试图表
- helm package 打包
- helm search 查找图表
6 - 参考信息
- 初探云原生应用管理(一): Helm 与 App Hub https://www.infoq.cn/article/HRMBW_jsMFqXVEx7vj7Z
- 初探云原生应用管理(二): 为什么你必须尽快转向 Helm v3 https://www.infoq.cn/article/JL6H7bgTy7X*1usthCP0
- 初探云原生应用管理(三):聊聊 Tekton 项目 https://www.infoq.cn/article/vkgbEEhGwbMZxIKQH3tr