本文只涉及Helm的Chart操做,不会对其余知识进行过多描述。至于安装这块,麻烦自行百度吧,一大堆呢。html
在容器化的时代,咱们不少应用均可以部署在docker,很方便,而再进一步,咱们还有工具能够对docker进行编排,Kubernetes就是一个很好的工具。再再进一步,Kubernetes出现了helm,能够将多个服务更好的编排组合成一个应用。node
Helm的做用至关于node.js下的npm,对于应用发布者而言,能够经过Helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。git
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的建立、打包、发布以及建立和管理本地和远程的 Chart 仓库。github
chart是helm的应用打包格式。chart是描述相关的一组Kubernetes资源的文件集合。单个chart可能用于部署简单的东西,好比memcached pod,或者一些复杂的东西,好比完整的具备HTTP服务,数据库,缓存等的Web应用程序堆栈。docker
使用Helm建立Chartshell
windows下使用cmd或者powershell均可以,这里我使用powershell,使用helm create命令建立一个wechat应用的chart。建立的目录结构以下:数据库
Chart.yaml:描述chart的概要信息,name和version是必须项。npm
values.yaml:chart支持在安装时跟据参数进行定制化配置,values.yaml则提供了这些配置参数的默认值。windows
templates目录:各种Kubernetes资源的配置模板都放在这里。Helm会将valuees.yaml中的参数值注入模板中,生产标准的YAML配置文件。缓存
模板是Chart最重要部分,也是helm最强大的地方。模板增长了应用部署的灵活性,可以适用于不一样的环境,虽然配置很复杂......
templates/NOTES.txt:chart的简易使用文档。
deployment.yaml,ingress.yaml,service.yaml就是咱们的模板了,固然咱们能够把一个服务的配置模板用一个文件编写,不一样的资源配置咱们能够用三个横杠---来进行分割。
helm采用了GO语法来编写chart,支持变量,对象,函数,流控制等功能。
templates/_helpers.tpl:定义子模版,在模板中{{ include "wechat.fullname" . }}就是引用子模板。
接下来咱们编写一个本身的chart,没有那么复杂,只是chart的简单操做。这里我将咱们服务两个微信服务(一个后台,一个UI)打包成一个chart。
对于配置,这里教你们一个偷懒的方式,能够将现成服务的yaml配置直接拉下来,咱们是使用腾讯云的容器服务,在已部署的服务中咱们能够直接查看它的YAML配置,直接复制下来稍微改动便可。
这里我将一个服务的资源配置模板写在一个同一个yaml文件中,同时删除非必需的内容。剩下以下内容。
然后我跟据须要将少数配置进行参数化,将须要参数化配置的内容写在values.yaml中便可。这里我只将iamge和ports进行参数化配置。
ui.yaml的配置同上,基本就算完成了。
TencentHub上传Helm Chart有两种方式,一种是使用helm打包后网页直接上传chart包,另外一种是使用helm命令行工具,使用命令helm push整个chart目录。这里咱们选择后者。
在上传以前咱们须要:
1.本地 Helm 客户端添加 Tencent Hub 的 repo。
使用命令行输入
helm repo add mycharts https://hub.tencentyun.com/charts/mycharts --username myname --password mypassword
2.安装Tencent Hub 的 helm-push 插件。
使用命令行输入
helm plugin install https://github.com/imroc/helm-push
完成后咱们就能够上传Helm Chart了。
使用命令
上传文件夹
helm push ./myapp mycharts
上传压缩包
helm push myapp-1.0.1.tgz mychart
上传成功后在Tencent Hub便可看到咱们上传的chart的信息了
好了,到这就结束了,接下来还有一篇部署Chart应用并使用.net core读取Kubernetes中的configMap
写写腾讯云使用chart部署应用以及.net core使用k8s做为配置中心,如何读取configMap。以及中间遇到的一些坑吧......