helm3 学习实践
一、概述
1.Helm是什么?
Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Python中的 pip 一样,能快速查找、下载和安装软件包。
2.Helm解决的痛点
在 Kubernetes中部署一个可以使用的应用,需要涉及到很多的 Kubernetes 资源的共同协作。比如你安装一个 WordPress,用到了一些 Kubernetes (下面全部简称k8s)的一些资源对象,包括 Deployment 用于部署应用、Service 提供服务发现、Secret 配置 WordPress 的用户名和密码,可能还需要 pv 和 pvc 来提供持久化服务。并且 WordPress 数据是存储在mariadb里面的,所以需要 mariadb 启动就绪后才能启动 WordPress。这些 k8s 资源过于分散,不方便进行管理。
Helm把Kubernetes资源(比如deployments、services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。
3. Helm相关组件及概念
helm 是一个命令行工具,主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
chart Helm 的软件包,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
Repoistory Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
release 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。可以理解为 Helm 使用 Chart 包部署的一个应用实例。
4.创建release
helm 客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息
helm 客户端根据 chart 和 values 生成一个 release
helm 将install release请求直接传递给 kube-apiserver
删除release
helm 客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息
helm 客户端根据 chart 和 values 生成一个 release
helm 将delete release请求直接传递给 kube-apiserver
更新release
helm 客户端从指定的目录或本地tar文件或远程repo仓库解析出chart的结构信息
helm 将收到的信息生成新的 release,并同时更新这个 release 的 history
helm 将新的 release 传递给 kube-apiserver 进行更新
5、chart的基本结构
Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源。Chart中的文件安装特定的目录结构组织, 最简单的chart 目录如下所示:
## Helm的打包格式叫做chart,所谓chart就是一系列文件, 它描述了一组相关的 k8s 集群资源。
## Chart中的文件安装特定的目录结构组织, 最简单的chart 目录如下所示:
./
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
charts 目录存放依赖的chart
Chart.yaml 包含Chart的基本信息,包括chart版本,名称等
templates 目录下存放应用一系列 k8s 资源的 yaml 模板
_helpers.tpl 此文件中定义一些可重用的模板片断,此文件中的定义在任何资源定义模板中可用
NOTES.txt 介绍chart 部署后的帮助信息,如何使用chart等
values.yaml 包含了必要的值定义(默认值), 用于存储 templates 目录中模板文件中用到变量的值
二、安装Helm
下载地址:https://github.com/helm/helm/releases
1.安装Helm
# wget https://get.helm.sh/helm-v3.10.0-linux-amd64.tar.gz
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
echo "source <(helm completion bash)" >> .bashrc
2.添加常用repo
#微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库强烈推荐,基本上官网有的chart这里都有。
#阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
#官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库,国内有点不好使。
#添加存储库:
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update #更新一下
#列出存储库:
helm repo list
stable http://mirror.azure.cn/kubernetes/charts
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
#删除存储库:
helm repo remove stable#删除stable库
helm repo remove aliyun#删除aliyun库
helm repo list
helm repo update
更多详细,请参考这篇文章:helm实践
相关文章:
helm卸载组件命令
Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)