软件包管理工具:Helm3的基本操作

22 篇文章 2 订阅

一、概述
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

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

1.使用chart部署一个mysql


## 查找所有repo下的所有chart
helm search repo
## 查找stable这个repo下的chart mysql
helm search repo stable/mysql

## 查看chart信息:
helm show chart stable/mysql
## 安装包:
helm install db stable/mysql**
## 查看发布状态:
helm status db


2.安装前自定义chart配置选项
上面部署的mysql并没有成功,这是因为并不是所有的chart都能按照默认配置运行成功,可能会需要一些环境依赖,例如PV。
所以我们需要自定义chart配置选项,安装过程中有两种方法可以传递配置数据:–values(或-f):指定带有覆盖的YAML文件。这可以多次指定,最右边的文件优先
–set:在命令行上指定替代。如果两者都用,–set优先级高

# helm show values stable/mysql
# cat config.yaml
persistence:
  enabled: true
  storageClass: "managed-nfs-storage"
  accessMode: ReadWriteOnce
  size: 8Gi
mysqlUser: "k8s"
mysqlPassword: "123456"
mysqlDatabase: "k8s"

helm install db -f config.yaml stable/mysql
kubectl get pods



3.构建一个Helm Chart

helm create demo

#Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
#values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
#Templates: 目录里面存放所有yaml模板文件。
#charts:目录里存放这个chart依赖的所有子chart。
#NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
#_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用

#创建Chart后,接下来就是将其部署:
helm install web demo/

#也可以打包推送的charts仓库共享别人使用。
helm package demo/
demo-0.1.0.tgz



4.升级、回滚和删除

## 发布新版本的chart时,或者当您要更改发布的配置时,可以使用该helm upgrade 命令。
helm upgrade --set imageTag=1.17 web demo
helm upgrade -f values.yaml web demo

## 如果在发布后没有达到预期的效果,则可以使用helm rollback回滚到之前的版本。
例如将应用回滚到第一个版本:
helm rollback web 2
## 卸载发行版,请使用以下helm uninstall命令:
helm uninstall web
## 查看历史版本配置信息
helm get --revision 1 web


5.下载 上传tar包

helm pull stable/traefik
一种方式是直接上传charts文件夹
helm push seldon-mab harbor-test-helm
seldon-mab是charts目录
harbor-test-helm是harbor charts repo名称。
另一种是将charts package文件包push
helm push seldon-core-operator-1.5.1.tgz harbor-test-helm
这两种方式输出都类似:

6.安装到k8s的其它空间:--namespace=monitoring

helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring stable/prometheus-operator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值