Go Helm

时间救星

Helm将一个应用所需要声明的所有Kubernetes资源,以模板的形式打包到一个文件夹下,然后通过预定义的或用户自定义的K-V文件进行渲染,最后排序后一并提交到Kubernetes执行。Helm还提供一个额外的抽象release,它存在的形式是ConfigMap,记录每一次应用的发布。如果你对如何利用Kubernetes部署不同类型的应用没有经验,那么可以先行阅读官方文档。如果你无需了解如何使用Helm部署你的复杂应用,那么了解上述内容已经足够。

Helm & Kubernetes

Helm是一款服务于Kubernetes生态的工具。根据官方文档的解释,Helm是一个管理Kubernetes Chart的工具。而Chart是预配置Kubernetes资源的包。从功能上来说,Helm是一个生成预定义全栈应用配置包,根据自定义的参数来渲染配置包,并在Kubernetes集群中声明对应的资源对象的工具。Chart全栈地定义了一个应用,不仅仅是应用本身,包括它依赖的DB、消息组件、一致性组件等其他应用,结合自定义的参数,Chart可以渲染为Kubernetes认识的资源对象描述文件,例如deployment.yaml。

yz0jxkz.png

熟悉Kubernetes的同学应该清楚,Kubernetes没有定义一个类型叫做Application。Kubernetes倡导微服务架构,一个复杂应用应当是一个抽象的概念,由若干个松散耦合的微服务共同组成。虽然Kubernetes在DevOps上做得非常好,但对于用户来说,手动地定义、部署、运维若干个微服务,而不是一个应用,代价是相当高昂的。Helm的出现就是为了解决微服务架构的这个痛点,通过预定义文件自定义配置文件的组合,来定义一个复杂应用,并在Kubernetes中声明它。

有了Helm、Chart、Kubernetes,我们可以做到类似一键建站的敏捷性,并且在拆分应用、实践微服务架构的过程中,避开松散耦合带来的管理痛点。

使用Helm

先前条件:
安装Helm命令行工具,并在Kubernetes集群中安装Tiller。

  1. 编写或获取Charts

    我们可以从Repository获取Charts,也可以从零开始或基于Repository的成品或半成品自定义自己需要的Charts。
    自定义:

    ➜  ~ helm create test-andy
    Creating test-andy
    ➜  ~ cd test-andy
    ➜  test-andy ls
    Chart.yaml  charts      templates   values.yaml
    ➜  test-andy cat Chart.yaml
    apiVersion: v1
    description: A Helm chart for Kubernetes
    name: test-andy
    version: 0.1.0
    ➜  test-andy ls templates
    NOTES.txt       _helpers.tpl    deployment.yaml ingress.yaml    service.yaml
    ➜  test-andy cat values.yaml
    # Default values for test-andy.
    # This is a YAML-formatted file.
    # Declare variables to be passed into your templates.
    replicaCount: 1
    ...
    
    

    获取:

    ➜  ~ helm search wordpress
    NAME            	VERSION	DESCRIPTION
    stable/wordpress	2.0.0  	Web publishing platform for building blogs and ...
    ➜  ~ helm fetch stable/wordpress --untar=true # untar=true 可以解开
    ➜  ~ ls wordpress
    Chart.yaml        charts            requirements.yaml values.yaml
    README.md         requirements.lock templates
    
  2. 安装

    helm可以通过命令helm install安装Charts或Charts压缩包.tgz。可以在参数中使用自定义的values.yaml文件或自定义的k-v参数,它们总是会覆盖Charts或.tgz文件中的值。可以通过命令helm list查看已经安装的release。

➜  ~ helm install --name my-test-andy --set "key1=value1,key2=value2" ./test-andy
  1. 更新或卸载release
    helm可以通过命令helm upgradehelm uninstall来更新或卸载已经安装的release。
➜  ~ helm upgrade my-test-andy test-andy --set "key1=value1,key2=value2"
➜  ~ helm uninstall my-test-andy

Charts与模板

Helm使用Chart模板加上预定义或自定义的值来渲染出所需要的.yaml文件,通过Kubernetes创建对应的资源。模板与参数共同决定了Helm应用的行为。Helm支持标准Go模板语言,支持约60个来自Go Template Language以及Sprig template library的自定义函数,同样支持管道、条件语句等特性。本节将在介绍WordPress模板的过程中,简要介绍Helm使用的模板语言,并介绍Chart的一些特性。

➜  wordpress tree
.
|____Chart.yaml                         # 该Chart的描述文件
|____LICENSE
|____README.md
|____charts                             # 依赖的Chart的集合文件夹
|____requirements.yaml                  # 描述当前Chart依赖的其他Chart
|____templates                          # 该Chart所需的Kubernetes对象模板
| |____deployment.yaml                  # deployment模板
| |____NOTES.txt                        # 该模板在release安装完成后会打印到控制台
| |____secrets.yaml                     # 储存secrect敏感配置信息的对象模板
| |____svc.yaml                         # service对象模板
| |____tests           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值