资讯专栏INFORMATION COLUMN

Helm:kubernetes包管理工具

社区管理员 / 737人阅读

最近给部门的小伙伴做了一个关于helm的入门介绍,收到了不错的反响,于将资料整理分享给博客的读者们。 本文第一部分介绍helm是做什么的以及能解决什么问题。第二部分介绍helm的核心概念及安装使用helm的教程, 第三部分介绍helm使用的核心即chart的开发,这一章节通过一个示例给大家演示基本的开发步骤。最后一部分, 简单说明如何搭建私有模板仓。在读完后,相信你会对Helm及生态有一个简单的了解。

什么是 helm

如标题所示,官方给Helm的定义是 kubernetes 的包管理器。那么什么是包管理器呢?

什么是包管理工具

包管理器一组软件工具,它们以一致的方式自动安装、升级、配置和删除计算机操作系统的计算机程序 -维基百科
helm 帮助用户管理 kubernetes 程序,helm chart 帮助用户定义、安装和升级最复杂的 Kubernetes 应用程序,Charts 很容易 创建,版本管理,共享和发布,所以停止 copy-and-paste,开始使用 helm -helm 官方

image.png


核心概念

helm的官方文档中的描述更加详细,这里只列出一些重要的概念:

Helm Concept描述重点
Chart(unpackaged)一个文件夹的文件,遵循 chart 的准则可以直接部署到集群
Chart(packaged)上述文件的压缩包 tar.gz可以直接部署到集群
Chart nameChart.yaml 定义包的名称部分标识 chart
Templates构成应用程序的一组 Kubernetes 清单Golang 模板引擎
Values可以在 Kubernetes 清单中参数化的设置用于 template 渲染
Chart versionchart 版本部分标示 chart
App Versionchart 中包含的应用程序版本与 chart 版本独立
Releasekubernetes 集群中部署的 chart同一个 chart 可能部署多个 release
Release namerelease 任意名称独立于 chart name
Release Revision每次部署/升级应用程序时递增的数字于 chart 版本无关

helm 发展

  • 每个月超过百万次下载

  • CNCF Incubating project

  • 繁荣的社区

  • image.png

helm 如何使用

helm 安装

helm3剔除了服务 Tiller,直接与kubernetes apiserver通信,所以安装相比helm2更加简单。


# mac通过homebrew安装
brew install helm

# 二进制文件
wget https://github.com/helm/helm/releases/helm-v3.0.0-linux-amd6
tar -zvxf helm-v3.0.0-linux-amd6
mv linux-amd64/helm /usr/local/bin/helm

对于需要从 Helm2 升级到 helm3 的用户,官方提供了升级插件,我是使用插件进行升级的,没有遇到问题。

chart

chart:一个包含足够信息的 Helm 包,用于将一组 Kubernetes 资源安装到 Kubernetes 集群中。

helm 命令行工具能够自动生成一个 chart 结构:helm create myapp

image.png

templates包含了所有所需 kubernetes 各个资源的模板文件,Value.yaml文件存储chart的默认值, 这些值可以通过helm install ,helm upgrade更新,Chart.yaml包含了chart的描述信息,如版本,名称等。 charts目录存储其依赖的第三方chart

安装 Chart

image.png

在根据正在运行的 Kubernetes 集群进行身份验证的环境中,使用 Helm 从本地 chart 目录或 chart repo 安装。

使用自定义值

image.png

查看 release 状态

image.png

image.png

查看所有运行的 release

升级 release

回滚 release

移除一个 release

image.png

helm chart 如何开发

chart的开发是Helm的核心,也比较复杂。Helm使用Go模板对资源文件进行模板化,除了Go附带的几个内置函数,还添加了许多其他函数。

chart 开发核心特性

以下列举了helm chart开发中几个核心知识点,这里只简单罗列,如果你需要使用,还是建议参考官方文档。

  1. 内置对象:Release,Values,Chart,Files

  2. Values 文件,--set>-f customValue> default file;

  3. 模板函数及流水线:对传入 template 的值进行轻度处理,helm 内置了 60 多个常见函数;

  4. 控制语句的使用;

  5. 变量;

  6. 命名模版;

  7. 访问 templates 中的文件;

  8. 帮助文件 NOTS.Txt 如何编写;

  9. subcharts 与全局变量;

  10. .helmignore 文件忽略不需要的文件;

  11. chart 开发如何进行调试:helm lint,helm install --dry-run --debug,helm get manifest

开发一个 chart Demo

我们通过一个Goweb 程序iim,来演示开发一个 chart 的完整流程。web 应用镜像已经推送到镜像仓中。

  1. 首先在项目中创建 chart 目录,我们使用helm create iim工具生成。其中templates会自动生成 deployment,service ,serviceaccount 资源文件,以及自定义帮助文件模板。我们可以移除一些不必要的文件,如 serviceaccount,因为这里不需要使用这些 kubernetes 资源; _ NOTES.txt:关于应用的帮助信息,如访问地址 _ _helpers.tpl: 放置 chart 帮助程序的地方,便于后续重用

  2. containers:
     - name: { { .Chart.Name } }
       securityContext: { { - toYaml .Values.securityContext | nindent 12 } }
       image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
       imagePullPolicy: { { .Values.image.pullPolicy } }
       command: ["./iimserver"]
       args:
         [
           "-c",
           "/app/config.toml",
           "-m",
           "/app/model.conf",
           "-menu",
           "/app/menu.json",
         ]
  3. 修改 deployment.yaml,添加入口程序参数。

  4. replicaCount: 1

    image:
     repository: daocloud.io/daocloud/iim-backend
     pullPolicy: IfNotPresent
  5. 修改程序默认配置,即 Value.yaml 文件

  6. apiVersion: v2
    name: iim
    description: 工业机理模型冲刺项目
    type: application
    version: 0.1.0
    appVersion:

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/127931.html

相关文章

  • Kubernetes_v1.21.0生产环境高可用部署

    kubeadm介绍kubeadm概述Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。 kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。kubeadm 只关心启动集群,而不关心其他工作,如部署前的节点准备工作、安装各种Kubernetes Dashboard、监控解决方案...

    Tecode 评论0 收藏0
  • 如何选择合适的混合云管理方式

    摘要:与或等流行工具结合或集成在当今的混合云管理提供商中很常见。如果中止混合云管理合同,那么它只是策略的一部分,而加入现有资源则需要模板转换为混合云管理格式。实际上,组织不必选择最好的混合云管理产品。混合云管理(HCM)市场的发展如今有些停滞不前,但最近这一切发生了变化。很多企业开始解决云计算管理挑战,在采用云计算策略的企业中,超过一半的基础设施决策者正在积极监控使用情况,并创建有效的云计算策略。...

    ky0ncheng 评论0 收藏0
  • Anaconda入门详解

    摘要:的包使用软件包管理系统进行管理。超过万人使用发行版本,并且拥有超过个适用于和的数据科学软件包。提供了大部分功能,并且大多数情况下两个可以同时使用。 Anaconda Anaconda简介 Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统...

    AlphaWallet 评论0 收藏0
  • tensorflow学习之Anaconda开发环境搭建

    摘要:的开发环境有很多,可以在上搭建,也可以使用管理工具搭建,也可以直接在本机中安装。例如创建开发环境点击左下角,弹出创建开发环境框,输入环境名和选择类型即可。以上内容是我们需要搭建开发环境的全部内容。 tensorflow的开发环境有很多,可以在Docker上搭建,也可以使用Anaconda管理工具搭建,也可以直接在本机中安装tensorflow。在这里为了工具包的方便管理,我选择使用An...

    Y3G 评论0 收藏0
  • Fabric与dep

    摘要:但是在与此同时出现了然后随着的出现,又更名为,真的是百家争鸣那。采用文件来追踪依赖,而不是的和文件。然而他们并不想提交大量的文件,因为链码程序仅仅是个小的代码库。想必在年会逐渐替换以及中的,希望可以终结混乱的包管理机制。 作者: TopJohn原文连接:https://www.xuanzhangjiong.to... Fabric与dep 个人感受 接触Golang有2年时间了,从最...

    王陆宽 评论0 收藏0

发表评论

0条评论

社区管理员

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<