欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

k8s使用helm打包chart并上传到腾讯云TencentHub

程序员文章站 2022-06-30 11:56:08
本文只涉及Helm的Chart操作,不会对其他知识进行过多描述。至于安装这块,麻烦自行百度吧,一大堆呢。 在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对docker进行编排,Kubernetes就是一个很好的工具。再再进一步,Kubernetes出现了h ......

本文只涉及helm的chart操作,不会对其他知识进行过多描述。至于安装这块,麻烦自行百度吧,一大堆呢。

在容器化的时代,我们很多应用都可以部署在docker,很方便,而再进一步,我们还有工具可以对docker进行编排,kubernetes就是一个很好的工具。再再进一步,kubernetes出现了helm,可以将多个服务更好的编排组合成一个应用。

helm

helm的作用相当于node.js下的npm,对于应用发布者而言,可以通过helm打包应用,管理应用依赖关系,管理应用版本并发布应用到软件仓库。

helm 是一个命令行下的客户端工具。主要用于 kubernetes 应用程序 chart 的创建、打包、发布以及创建和管理本地和远程的 chart 仓库。

chart

chart是helm的应用打包格式。chart是描述相关的一组kubernetes资源的文件集合。单个chart可能用于部署简单的东西,比如memcached pod,或者一些复杂的东西,比如完整的具有http服务,数据库,缓存等的web应用程序堆栈。

使用helm创建chart

windows下使用cmd或者powershell都可以,这里我使用powershell,使用helm create命令创建一个wechat应用的chart。创建的目录结构如下:

 k8s使用helm打包chart并上传到腾讯云TencentHub

chart.yaml:描述chart的概要信息,name和version是必须项。

 k8s使用helm打包chart并上传到腾讯云TencentHub

values.yaml:chart支持在安装时跟据参数进行定制化配置,values.yaml则提供了这些配置参数的默认值。

 k8s使用helm打包chart并上传到腾讯云TencentHub

templates目录:各类kubernetes资源的配置模板都放在这里。helm会将valuees.yaml中的参数值注入模板中,生产标准的yaml配置文件。

模板是chart最重要部分,也是helm最强大的地方。模板增加了应用部署的灵活性,能够适用于不同的环境,虽然配置很复杂......

templates/notes.txt:chart的简易使用文档。

deployment.yaml,ingress.yaml,service.yaml就是我们的模板了,当然我们可以把一个服务的配置模板用一个文件编写,不同的资源配置我们可以用三个横杠---来进行分割。

 k8s使用helm打包chart并上传到腾讯云TencentHub

helm采用了go语法来编写chart,支持变量,对象,函数,流控制等功能。

templates/_helpers.tpl:定义子模版,在模板中{{ include "wechat.fullname" . }}就是引用子模板。

编写自己的chart

接下来我们编写一个自己的chart,没有那么复杂,只是chart的简单操作。这里我将我们服务两个微信服务(一个后台,一个ui)打包成一个chart。

对于配置,这里教大家一个偷懒的方式,可以将现成服务的yaml配置直接拉下来,我们是使用腾讯云的容器服务,在已部署的服务中我们可以直接查看它的yaml配置,直接复制下来稍微改动即可。

 k8s使用helm打包chart并上传到腾讯云TencentHub

这里我将一个服务的资源配置模板写在一个同一个yaml文件中,同时删除非必需的内容。剩下如下内容。

 k8s使用helm打包chart并上传到腾讯云TencentHub

而后我跟据需要将少数配置进行参数化,将需要参数化配置的内容写在values.yaml中即可。这里我只将iamge和ports进行参数化配置。

 k8s使用helm打包chart并上传到腾讯云TencentHub

k8s使用helm打包chart并上传到腾讯云TencentHub

ui.yaml的配置同上,基本就算完成了。

将chart上传到tencenthub

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
  •  mycharts 替换为自己仓库的命名空间 (用户名或组织名)
  •  myname 替换为 tencent hub 账号用户名
  •  mypassword 替换为 tencent hub 账号密码

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的信息了

k8s使用helm打包chart并上传到腾讯云TencentHub

 

结束

好了,到这就结束了,接下来还有一篇写写腾讯云使用chart部署应用以及.net core使用k8s作为配置中心,如何读取configmap。以及中间遇到的一些坑吧......