centos 安装helm_Kubernetes 包管理神器 helm

af1912bad18dd43dc907d2077b36e72d.png

Helm 简介

很多人都使用过 Ubuntu 下的 ap-get 或者 CentOS 下的 yum, 这两者都是Linux 系统下的包管理工具。采用 apt-get/yum ,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。

这里可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于 kubernetes 的包管理器。每个包称为一个 Chart,一个 Chart 是一个目录(一般情况下会将目录进行打包压缩,形成 name-version.tgz 格式的单一文件,方便传输和存储)。

对于应用发布者而言,可以通过 Helm 打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。

对于使用者而言,使用 Helm 后不用需要了解 Kubernetes 的 Yaml 语法并编写应用部署文件,可以通过 Helm 下载并在 kubernetes 上安装需要的应用。

除此以外,Helm 还提供了 kubernetes 上的软件部署,删除,升级,回滚应用的强大功能。

Helm 应用场景一:应用部署在多个区域

  • 单独维护各个区域的 部署文件
  • Configmap、secret 等资源如何与 deployment—起发布 和回滚
  • ......

2a5fb101cf533aa1afa1b455b0a4fb62.png

挑战

  • 管理、编辑与更新大量的 K8s 配置文件
  • 部署一个含有大量配置文件的复杂 K8s 应用
  • 分享和复用 K8s 配置和应用
  • 参数化配置模板支持多个环境
  • 管理应用的发布:回滚、diff 和查看发布历史
  • 控制一个部署周期中的某一些环节
  • 发布后的验证

Helm 解决方案

  • Helm 把 Kubernetes资源(比如 deployment、service或 ingress 等)打包到一个 chart 中,而 chart 被保存到 chart 仓 库。通过 chart 仓库可用来存储和分享 chart。
  • Helm 使发布可配置,支持发布应用配置的版本管理,简化 了 Kubernetes 部署应用的版本控制、打包、发布、删除、 更新等操作
  • chart 是描述相关的一组 Kubernetes 资源的文件集合。chart 通过创建为特定目录树的文件,将它们打包到版本化 的压缩包,然后进行部署。
  • Chart.yaml 是必须的,它 记录了 chart 的一些信息: chart 版本和名字等
  • templates 下是 kubernetes 资源的模板
  • values.yaml 存放了模板中的变量的值

7bbb555566b89dd680954b51e73b07f3.png

Helm 安装和使用

Helm 组件

Helm 采用客户端/服务器架构,有如下组件组成:

  • Helm CLI 是 Helm 客户端,可以在本地执行
  • Tiller 是服务器端组件,在 Kubernetes 群集上运行,并管 理 Kubernetes 应用程序的生命周期
  • Repository 是 Chart 仓库,Helm 客户端通过 HTTP 协议来 访问仓库中 Chart 的索引文件和压缩包——暂时不用安装

Helm 架构

69bf4fb8640db28d39393a203a83aac5.png

Helm Client

  • 本地 chart 开发
  • 仓库管理
  • 与 Tiller sever 交互
  • 发送预安装的 chart
  • 查询 release 信息
  • 要求升级或卸载已存在的

Tiller Server

  • 监听来⾃ Helm client 的请求
  • 通过 chart 及其配置构建⼀次发布
  • 安装 chart 到 Kubernetes 集群,并跟踪随后的发布
  • 通过与 Kubernetes 交互升级或卸载 chart

简单的说,client 管理 charts,而 server 管理发布 release

Helm 客户端安装

  • 客户端安装:到 Helm Release 下载二进制文件,根据使用 的操作系统不同下载不同的版本,这里以 Linux上v2.15.1 版本为例。解压后将可执行文件 helm 拷贝到 /usr/local/ bin 目录下即可,这样 Helm 客户端就在这台机器上安装完 成了。
  • 使用 Helm 命令查看版本,会提示无法连接到服务端Tiller helm version

Helm 服务器端组件安装

  • 前提:确保本地 kubectl 可以正常访问 kubernetes 的资源
  • 在命令行中执行:helm init. Helm 默认会去 http://gcr.io 拉取 tiller的镜像,有时镜像拉不下来,
  • 可以指定 tiller 的镜像:

helm init --tiller-image http://registry.cn-hangzhou.aliyuncs.com/softputer/tiller:v2.15.1

Helm服务器组件安装问题

如果在安装过程中遇到了一些其他问题,比如初始化的时 候出现了如下错误:

7247415763c60f8d2fb5f496ae21446f.png

需要在节点上安装 socat 进行解决

846820ec76d53da87cfbe3559b8a82cf.png

安装完检查

Helm 服务端正常安装完成后,Tiller 默认被部署在 kubernetes 集群的kube-system命名空间下:

83a3b422a887d0de2c5cadc764dca3b8.png

查看 helm 版本

35ecd9a9c003150e6220bd5816527c45.png

创建 RBAC 授权文件

为 Tiller 创建一个 ServiceAccount,让他拥有执行权限,创建 rbac.yaml

022513a5809e2f8dd410f9c47c6aae96.png

部署 rbac

  • 部署

e7651fb409641a03805be13cc9d777d4.png
  • 指定 serviceaccount 给 tiller

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

  • helm ls

Helm 使用

  • 创建一个 Chart
  • Templates 下的 deploment.yaml 默认是一个 nginx 服务,可以通过修改 Values.yaml 文件中的 image tag,来修改需要部署的 nginx 的版本

e64466cd86f567b89ebb5f01ba71a732.png

Chart 安装部署

  • 执行:helm install –-name hell-helm ./hello-helm部署和安装 chart.
  • 查看 release helm ls
  • 删除 release

helm del hello-helm

......

4adabd4cadfa2da6b8dd45dc9a42542a.png

2f18824064f8fd68ea3382064d9f9c6e.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值