本文只涉及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。创建的目录结构如下:

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

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

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,没有那么复杂,只是chart的简单操作。这里我将我们服务两个微信服务(一个后台,一个UI)打包成一个chart。

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

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

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

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

结束

好了,到这就结束了,接下来还有一篇部署Chart应用并使用.net core读取Kubernetes中的configMap

写写腾讯云使用chart部署应用以及.net core使用k8s作为配置中心,如何读取configMap。以及中间遇到的一些坑吧......

k8s使用helm打包chart并上传到腾讯云TencentHub的更多相关文章

  1. 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上

    场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...

  2. Docker打包镜像并上传

    Docker打包镜像并上传 登录 账号 docker login --username=yourusername 密码 yourPassword 推送到仓库 docker镜像打标签 docker ta ...

  3. Docker-生成镜像、服务搭建(redis集群、kibana、运行项目jar包)、上传镜像至阿里云

    目录 生成自己的镜像 1.下载官方tomcat镜像 2.运行镜像后将webapp目录里新增文件(官方镜像是没有页面的 具体操作见) 3.使用docker ps -a 查看刚刚修改后的容器id 4.执行 ...

  4. ajax异步上传到又拍云的实例教程

    作者:白狼 出处:www.manks.top/article/async_upload_to_upyun 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否 ...

  5. 在Eclipse里面使用git上传项目到码云

    Eclispe上使用git 1.安装git 按照下图的步骤: 安装过就不用再安装了,没有安装的安装一下! 安装完毕之后:需要做一些初始化的设置: 2.上传项目到码云上 1.首先在码云上建立一个项目 2 ...

  6. OSS上传文件到阿里云

    最近做项目,需要上传文件,因为上传到项目路径下,感觉有时候也挺不方便的,就试了一下上传文件到阿里云oss上去了, oss的使用网上有很多介绍,都是去配置一下需要的数据,然后直接调用他的api就可以了. ...

  7. 5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用

    本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频 ...

  8. 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手

    关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手   本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...

  9. 快速高效实现微信小程序图片上传与腾讯免费5G存储空间的使用

    本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率 对于一般的图片上传功能开发,我们 ...

随机推荐

  1. windows开发的python移植到linux的问题

    2016年1月28日 这个问题已经自己解决   file-setting下 左侧code style  line separator下拉选择unix就可以了 我在windows上开发的python想移 ...

  2. 网站开发中使用javascript获取浏览器滚动条宽度

    在网站开发中,有时候需要获取浏览器滚动条的宽度,在武汉蚂蹄软件服务中心的技术人员指导之下,我实现了该需求.记录如下: 首先说明一下原理: ①生成一个div,设置滚动条不可见,记录其宽度: ②将上面的d ...

  3. 微信小程序AES解密失败

    微信小程序分享群获取群id时后端接口返回"微信AES解密失败",后来定位到原因是服务端用于解密的session_key失效.用户获取到openID存在缓存后,就不会每次login获 ...

  4. __BEGIN_DECLS 和 __END_DECLS

    扩充C语言在编译的时候按照C++编译器进行统一处理,使得C++代码能够调用C编译生成的中间代码. 由于C语言的头文件可能被不同类型的编译器读取,因此写C语言的头文件必须慎重. 我们编写代码,经常需要c ...

  5. Java操作Memcached

    本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢. 如何使用Java操作Memcached实例: 代码一: package com.ghj.packageoftool; import j ...

  6. 消息中间件activemq的使用场景介绍(结合springboot的示例)

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件. 目前在生产环境,使 ...

  7. 并行(Parallelism)与并发(Concurrency)

    并行(Parallelism):多任务在同一时刻运行.例如,多个任务在多核处理器上运行. 并发(Concurrency):两个或者两个以上的任务在一段时间内开始.运行.完成,这意味着它们不是在同一时刻 ...

  8. Linux时间子系统之三:jiffies

    1. jiffies背景介绍 jiffies记录了系统启动以来,经过了多少tick. 一个tick代表多长时间,在内核的CONFIG_HZ中定义.比如CONFIG_HZ=200,则一个jiffies对 ...

  9. 000webhost虚拟主机绑定自定义二级域名

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=558 前言: 最近想给导航狗IT信息导航做一个文件服务器专门存放文件,以提供引用或下载.于是,我在000webhost上 ...

  10. Java JWT: JSON Web Token

    Java JWT: JSON Web Token for Java and Android JJWT aims to be the easiest to use and understand libr ...