Helm 包管理器

Helm 包管理器

helm 是 Kubernetes 包管理器(类似于yum apt-get brew 这些工具)
Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。

Helm 管理名为 chart 的 Kubernetes 包的工具。Helm 可以做以下的事情:

  • 从头开始创建新的 chart
  • 将 chart 打包成归档(tgz)文件
  • 与存储 chart 的仓库进行交互
  • 在现有的 Kubernetes 集群中安装和卸载 chart
  • 管理与 Helm 一起安装的 chart 的发布周期

Helm 架构

在这里插入图片描述

重要概念

  • chart: 创建 Kubernetes 应用程序所必需的一组信息。
  • config:包含了可以合并到打包的 chart 中的配置信息,用于创建一个可发布的对象。
  • release: 是一个与特定配置相结合的 chart 的运行实例。

组件

Helm 客户端 是终端用户的命令行客户端。负责以下内容:

  • 本地 chart 开发
  • 管理仓库
  • 管理发布
  • 与 Helm 库建立接口
    • 发送安装的 chart
    • 发送升级或卸载现有发布的请求

Helm 库 提供执行所有 Helm 操作的逻辑。与 Kubernetes API 服务交互并提供以下功能:

  • 结合 chart 和配置来构建版本
  • 将 chart 安装到 Kubernetes 中,并提供后续发布对象
  • 与 Kubernetes 交互升级和卸载 chart

独立的 Helm 库封装了 Helm 逻辑以便不同的客户端可以使用它。

Helm 版本

  • V2版本Helm依赖Tiller组件。Tiller组件用于接收Helm客户端发出的指令,与K8S的API Server交互,完成资源对象的部署和管理。
  • V3版本Helm不再使用Tiller组件,而是将API Server交互的功能整合到Helm客户端程序中。

Helm 安装

# https://kubernetes.github.io/ingress-nginx/deploy/#using-helm 官网是这个,下载包国内安装可以参考下面
wget https://mirrors.huaweicloud.com/helm/v3.14.1/helm-v3.14.1-linux-amd64.tar.gz
 
tar -zxvf helm-v3.14.1-linux-amd64.tar.gz
 
cp linux-amd64/helm /usr/local/bin/
 
helm version

注: helm 客户端需要下载到安装了 kubectl 并且能执行能正常通过 kubectl 操作 kubernetes 的服务器上, 否则 helm 将不可用

Helm 常用命令

在这里插入图片描述

# helm repo add 存储库名 存储库URL
$ helm repo update
 
# 例如添加阿里云的仓库地址
$ helm repo add repo_name1 https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
 
# 因为仓库一直在更新,所以最好使用update更新一下
$ helm repo update
 
# 查看添加的仓库列表
$ helm repo list

# 检索chart 包
$ helm search repo redis  
$ helm search hub redis   
# repo表示在本地所添加的仓库中进行检索;hub表示在Helm Hub中进行检索。

# 查看helm 包, readme 文件
$ helm show values mychart
#   all   chart   crds   readme   values  

helm 安装redis

# 查看默认仓库
helm repo list

# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add azure http://mirror.azure.cn/kubernetes/charts

# 搜索 redis chart
helm search repo redis

# 查看安装说明
helm show readme bitnami/redis

# 先将 chart 拉到本地
helm pull bitnami/redis

# 解压后,修改 values.yaml 中的参数
tar -zxvf  redis-19.3.4.tgz 

# 修改 storageClass 为 managed-nfs-storage
# 设置 redis 密码 password
# 修改集群架构 architecture,默认是主从(replication,3个节点),可以修改为 standalone 单机模式
# 修改实例存储大小 persistence.size 为需要的大小
# 修改 service.nodePorts.redis 向外暴露端口,范围 <30000-32767>   修改 service.type 为 NodePort 后自定义port 

# 安装操作
# 创建命名空间
kubectl create namespace redis

# 安装
cd ../
helm install redis ./redis -n redis  

# 查看 helm 安装列表
helm list

# 查看 redis 命名空间下所有对象信息
kubectl get all -n redis

NAME                   READY   STATUS    RESTARTS   AGE
pod/redis-master-0     1/1     Running   0          10m
pod/redis-replicas-0   1/1     Running   0          10m
pod/redis-replicas-1   1/1     Running   0          9m20s
pod/redis-replicas-2   1/1     Running   0          7m53s

NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/redis-headless   ClusterIP   None             <none>        6379/TCP   10m
service/redis-master     ClusterIP   10.102.95.15     <none>        6379/TCP   10m
service/redis-replicas   ClusterIP   10.104.192.164   <none>        6379/TCP   10m

NAME                              READY   AGE
statefulset.apps/redis-master     1/1     10m
statefulset.apps/redis-replicas   3/3     10m


# 要想升级 chart 可以修改本地的 chart 配置并执行:
# helm upgrade [RELEASE] [CHART] [flags]
helm upgrade redis ./redis
# 使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:

# helm rollback <RELEASE> [REVISION] [flags]

# 查看历史
helm history redis
# 回退到上一版本
helm rollback redis
# 回退到指定版本
helm rollback redis 1

# 卸载 redis
helm delete redis -n redis

chart 详解

[root@k8s-master ~]# helm create mychart  # 创建一个chart 目录,目录结构如下

[root@k8s-master ~]# tree mychart/
mychart/                             # Chart 目录
├── charts                           # 这个 charts 依赖的其他 charts,始终被安装
├── Chart.yaml                       # 描述这个 Chart 的相关信息、包括名字、描述信息、版本等
├── templates                        # 模板目录
│   ├── deployment.yaml              # deployment 控制器的 Go 模板文件
│   ├── _helpers.tpl                 # 以 _ 开头的文件不会部署到 k8s 上,可用于定制通用信息
│   ├── hpa.yaml                     # hpa 的模板文件
│   ├── ingress.yaml                 # ingress 的模板文件
│   ├── NOTES.txt                    # Chart 部署到集群后的一些信息,例如:如何使用、列出缺省值
│   ├── serviceaccount.yaml          # serviceaccount 的 Go 模板文件
│   ├── service.yaml                 # service 的 Go 模板文件
│   └── tests                        # 测试pod目录
│       └── test-connection.yaml     # 测试pod的deployment文件
└── values.yaml                      # 模板的值文件,这些值会在安装时应用到 GO 模板生成部署文件
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go&Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值