kubernetes(11)Helm

拼搏现实的明天。 2024-04-03 09:24 192阅读 0赞

概述

引入:

  1. 之前方式部署应用基本过程,都是由特定的资源描述组成,包括 deployment、service 等。都保存各自文件中或者集中写到一个配置文件。然后 kubectl apply –f 部署。
  2. 对于一个复杂的应用,会有很多类似上面的资源描述文件,例如微服务架构应用,组成应用的服务可能多达十个,几十个。
  3. 如果有更新或回滚应用的需求,可能要修改和维护所涉及的大量资源文件,而这种组织和管理应用的方式就显得力不从心了。
  4. 且由于缺少对发布过的应用版本管理和控制,使Kubernetes 上的应用维护和更新等面临诸多的挑战,主要面临以下问题:

    • (1)如何将这些服务作为一个整体管理
    • (2)这些资源文件如何高效复用
    • (3)不支持应用级别的版本管理

Helm 是一个 Kubernetes 的包管理工具,就像 Linux 下的包管理器,如 yum/apt 等,可以很方便的将之前打包好的 yaml 文件部署到 kubernetes 上

使用helm可以解决的问题

  1. 使用helm可以把这些yaml作为一个整体管理
  2. 实现yaml文件的高效复用
  3. 使用helm应用级别的版本管理

Helm 有 3 个重要概念:

  1. helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发布和管理
  2. Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。(把yaml打包,是yaml集合)
  3. Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个release;将在 k8s 中创建出真实运行的资源对象(应用级别的版本管理)

2019 年 11 月 13 日, Helm 团队发布 Helm v3 的第一个稳定版本。该版本主要变化如下(架构变化):

  1. v3版本删除Tiller
    在这里插入图片描述
  2. Release 名称可以在不同命名空间重用
  3. 支持将 Chart 推送至 Docker 镜像

Helm安装和配置仓库

第一步:部署helm客户端

Helm 客户端下载地址(下载v3版本的):https://github.com/helm/helm/releases
解压移动到/usr/bin/目录即可。

v3版本的安装很简单,按如下操作即可,v2版本的安装便并将复杂

  1. wget https://get.helm.sh/helm-vv3.2.1-linux-amd64.tar.gz
  2. tar zxvf helm-v3.2.1-linux-amd64.tar.gz
  3. mv linux-amd64/helm /usr/bin/

在这里插入图片描述
上面的操作完成后,便可以使用helm命令了
在这里插入图片描述










































































命令 描述
dependency 管理 chart依赖
get 下载一个 release。可用子命令:all、hooks、manifest、notes、values
history 获取 release 历史
install 安装一个 chart
list 列出 releas
package 将 chart 目录打包到 chart 存
pull 从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql —untar
repo 添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、list、remove、update
rollback 从之前版本回滚
search 根据关键字搜索 chart。可用子命令:hub、
show 查看 chart 详细信息。可用子命令:all、chart、readme、values
status 显示已命名版本的状态
template 本地呈现模板
uninstall 卸载一个 relea
upgrade 更新一个 release
version 查看 helm 客户端版本

第二步:配置helm仓库

微软仓库(http://mirror.azure.cn/kubernetes/charts/)这个仓库推荐,基本上官网有的 chart 这里都有。

阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )

官方仓库(https://hub.kubeapps.com/charts/incubator)官方 chart 仓库,国内有点不好使

添加仓库命令

  1. helm repo add stable http://mirror.azure.cn/kubernetes/charts
  2. helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

更新

  1. helm repo update

查看配置的存储库

  1. helm repo list
  2. helm search repo stable

删除存储库:

  1. helm repo remove aliyun

操作如下:

  1. 添加仓库
    在这里插入图片描述
  2. 查看
    在这里插入图片描述
  3. 可以再添加一个仓库
    在这里插入图片描述
  4. 更新,使后面添加的这个仓库生效
    在这里插入图片描述
  5. 删除仓库
    在这里插入图片描述

使用helm快速部署应用

第一步:使用命令搜索应用

搜索命令

  1. helm search repo 名称

操作如下
在这里插入图片描述

第二步:根据搜索内容选择安装

安装命令

  1. helm install 安装之后名称 搜索之后应用名称

查看安装之后的状态命令

  1. helm list
  2. helm status 安装之后名称

操作如下

  1. 安装
    在这里插入图片描述
  2. 查看
    在这里插入图片描述
    更加详细的信息
    在这里插入图片描述
  3. 查看pod
    在这里插入图片描述
  4. 查看svc(对外暴露端口)
    在这里插入图片描述
  5. 修改service中的yaml文件,将type改为NodePort
    在这里插入图片描述
    进入文件,修改
    在这里插入图片描述
    再次查看
    在这里插入图片描述

自定义chart部署

第一步:使用命令创建chart

创建chart命令

  1. helm create chart名称

操作如下:生成一个chart模板
在这里插入图片描述

目录里面的文件说明

  1. charts文件夹:
    在这里插入图片描述
  2. Chart.yaml文件:配置当前chart的一些属性信息
    在这里插入图片描述
  3. templates目录:yaml文件(编写的yaml文件放到这个目录中)
    在这里插入图片描述
  4. values.yaml:定义yaml文件的科院使用的全局变量

第二步:在templates中创建两个yaml文件

创建deployment.yaml文件
在这里插入图片描述
创建service.yaml
在这里插入图片描述

第三步:安装mychart

在这里插入图片描述
查看安装后的内容
在这里插入图片描述

第四步:应用升级

当将yaml文件内容进行修改后,需要对应用进行升级,那么便使用下面的命令

  1. helm upgrade chart名称

操作如下
在这里插入图片描述

chart模板的使用

yaml文件的高效使用

不同的deployment和service里面的结构差不多,只是有一些名称和内容不一样,所以可以通过传递参数,动态渲染模板,使yaml内容动态传入参数生成

操作如下:

  1. 在之前创建的mychart目录中,有一个values.yaml文件。该文件中定义yaml文件全局变量,所以现在在该文件中定义变量和值
    yaml文件中不同的地方:image、tag、label、port、replicas等不一样。
    在values.yaml文件中定义如上的内容
    在这里插入图片描述
  2. 在templates目录里具体的yaml文件中,获取定义的变量值
    通过表达式形式使用全局变量

    1. {
    2. {.Values.变量名称}}
    3. {
    4. {.Release.Name}}
    • 修改deployment.yaml
      在这里插入图片描述
      在这里插入图片描述
    • 修改service.yaml
      在这里插入图片描述
      在这里插入图片描述

尝试执行,查看生成的文件
在这里插入图片描述
在这里插入图片描述
真正执行

在这里插入图片描述
查看
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,192人围观)

还没有评论,来说两句吧...

相关阅读