利用Helm简化Kubernetes应用部署(1)
目录
利用Helm简化Kubernetes应用部署
Helm基础
安装Helm
使用Visual Studio 2019为Helm编写一个简单的应用
利用Helm简化Kubernetes应用部署
Helm是Kubernetes生态系统中的一个软件包管理工具,有点类似于Linux操作系统里面的“apt-get”和“yum”。结合上一节内容,对Kubernetes集群进行部署应用时,我们面临了以下问题:
如何管理、编辑和更新这些这些分散的 Kubernetes 应用配置文件。
如何把一套相关的配置文件作为一个应用进行管理。
如何分发和重用 Kubernetes 的应用配置。
Helm 的出现就是为了很好地解决上面这些问题。Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。我们可以在部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。总之,Helm大大简化了应用管理的难度,其主要有以下优势:
管理复杂应用。Charts能定义哪怕是再复杂的应用,并且提供了可重复使用应用程序部署定义。
易于更新升级。
易于共享。Charts无论是在私有服务器还是公共服务器上,都非常易于升级、共享和托管。
轻松回滚。
Helm基础
Helm
Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
Tiller
Tiller 是 Helm 的服务端,部署在 Kubernetes 集群中。Tiller 用于接收 Helm 的请求,并根据 Chart 生成 Kubernetes 的部署文件( Helm 称为 Release ),然后提交给 Kubernetes 创建应用。Tiller 还提供了Release 的升级、删除、回滚等一系列功能。
Chart
Helm 的软件包,采用 TAR 格式。类似于APT的DEB包或者YUM的RPM包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
Repoistory
Helm 的软件仓库,其保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
Config
应用程序实例化部署运行时的配置信息。
Release
使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。Helm 中提到的 Release和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart包部署的一个应用实例。在同一个集群中,一个Chart可以使用不同的配置(Config)安装多次,每次安装都会创建一个Release。
安装Helm
1.安装Helm客户端
推荐使用官方脚本一键安装:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.sh chmod get_helm.sh ./get_helm.sh
如果安装包无法下载,可以复制脚本输出的下载链接手动下载然后再解压复制到bin目录,如下所示:
tar -zxvf helm-v2.14.2-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/

2.安装服务端——Tiller
安装脚本如下所示:
Kubernetes 的服务帐号和绑定角色
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
#初始化安装tiller,并制定服务账户和镜像
helm init --service-account tiller --tiller-image gcr.azk8s.cn/kubernetes-helm/tiller:v2.14.2 --skip-refresh
其中,Helm初始化指定了第三方镜像。安装过程如下所示:

安装完成后,我们可以执行以下命令来查看安装的版本以及账户授权:
helm version
kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount

值得注意的是,tiller安装完成后,会运行在Pod之中,我们可以通过标签“app=helm”来查看tiller是否安装成功:
kubectl get pods -o wide -n kube-system -lapp=helm

如果安装过程中出现问题需要重新安装,可以执行以下命令再重装:
kubectl delete deployment tiller-deploy --namespace=kube-system
kubectl delete service tiller-deploy --namespace=kube-system
rm -rf ~/.helm/
安装完成之后,我们编写一个简单的应用然后来使用Helm进行部署。
使用Visual Studio 2019为Helm编写一个简单的应用
Visual Studio 2019提供了一个犀利的扩展工具——Visual Studio Kubernetes Tool来辅助我们编写Helm应用,如果还没有安装的小伙伴可以在扩展中查找并安装此扩展。
VS除了可以自动编写dockerfile,构建并推送docker镜像之外,还能自动添加Helm的配置模板,接下来我们按照以下步骤来创建我们第一个Helm应用工程。
1.创建项目,选择Kubernetes项目模板。如下图所示:

2.填写项目名称等信息。

3.选择项目模板类型。

4.添加【容器业务流程协调程序支持】。

5.选择【Kubernetes/Helm】。

6.查看解决方案目录,确认Chart。

如上图所示,VS自动为我们创建了charts目录,相关目录和文件说明如下所示:
Chart.yaml 用于描述这个Char的相关信息,包括应用名称、描述以及版本等。
values.yaml 用于存储templates目录中模板文件中用到变量的值。
NOTES.txt 用于介绍 Chart 部署后的一些信息,例如:如何使用这个 Chart、列出缺省的设置等。
Templates 目录下是YAML文件的模板,比如deployment、service、secrets等模板,该模板文件遵循 Go template 语法。
注意:如上图所示的charts目录,我们也可以通过命令“helm create mychart”来创建。
至此,一个简单的Helm应用模板创建完成,接下来我们来将此应用通过Helm快速部署,下一篇我们再来详细说明!
往期内容链接
开源导入导出通用库Magicodes.ExporterAndImporter发布
利用Helm简化Kubernetes应用部署(1)的更多相关文章
- 利用Helm简化Kubernetes应用部署(2)
目录 定义Charts 使用Helm部署Demo Helm常用操作命令 定义Charts 回到之前的“charts”目录,我们依次进行解读并进行简单的修改. Chart.yaml 配置示例: a ...
- 简化kubernetes应用部署工具之Helm应用部署
介绍 微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的a ...
- 简化Kubernetes应用部署工具-Helm
[编者的话]微服务和容器化给复杂应用部署与管理带来了极大的挑战.Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernete ...
- 使用 Helm 包管理工具简化 Kubernetes 应用部署
当在 Kubernetes 中已经部署很多应用时,后续需要对每个应用的 yaml 文件进行维护操作,这个过程会变的很繁琐,我们可以使用 Helm 来简化这些工作.Helm 是 Kubernetes 的 ...
- Helm, 在Kubernetes中部署应用的利器
一.背景 Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案.它在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器 ...
- ksonnet 一个简化编写以及部署kubernetes的工具
ksonnet 是一个基于jsonnet的快速简化kubernetes yaml 配置的工具,可以实现配置的复用 同时也包含一个registry 的概念,可以实现可复用组件的分发,同时支持helm 环 ...
- 利用 kubeasz 给 suse 12 部署 kubernetes 1.20.1 集群
文章目录 1.前情提要 2.环境准备 2.1.环境介绍 2.2.配置静态网络 2.3.配置ssh免密 2.4.批量开启模块以及创建文件 2.5.安装ansible 2.5.1.安装pip 2.5.2. ...
- 在 Kubernetes 上部署 OpenStack 是什么体验
红蓝出 CP,OpenStack 和 Kubernetes 在一起会怎样? 背景 从去年开始就想深入地学习 Kubernetes,首先想到是在 OpenStack 上能比较轻松地玩转,所以去 尝试了 ...
- 利用VSTS跟Kubernetes进行CI/CD
准备VSTS管理环境 首先我们需要到www.visualstudio.com下申请好的VSTS账号,然后在账号下创建一个用Git作为代码管理的项目 创建好项目后我们就可以利用git clone将代码库 ...
随机推荐
- POJ-3261-Milk Patterns-二分+哈希
Milk Patterns 题意: 在一串数字中,求至少连续k次的最大子序列长度: 思路: 二分加哈希: #include <cstdio> #include <iostream&g ...
- codeforce978C-Almost Arithmetic Progression+暴力,枚举前两个数字的情况
传送门:http://codeforces.com/contest/978/problem/D 题意:求变为等差数列,最小要改动的数字个数: 思路:暴力,这道题只用枚举前面两个数字的情况就ok,反思自 ...
- CodeForces 601B Lipshitz Sequence
Lipshitz Sequence 题解: 可以通过观察得到,对于任意一个区间来说, 只有相邻的2个点的差值才会是区间的最大值. 具体观察方法,可以用数学分析, 我是通过画图得到的. 那么基于上面的观 ...
- CodeForces 474F Ant colony ST+二分
Ant colony 题解: 因为一个数是合法数,那么询问区间内的其他数都要是这个数的倍数,也就是这个区间内的gcd刚好是这个数. 对于这个区间的gcd来说,不能通过前后缀来算. 所以通过ST表来询问 ...
- 2015 JSOI冬令营训练 彩色格子 题解
解析 棋盘上黑白格染色.曼哈顿距离偶数:奇偶性相同. 枚举有几种颜色分到白格,组合数计算即可. 注意预处理,时间还是比较宽裕的. 为了不重复计数,考虑枚举严格用了i种颜色,我们再枚举分配j种给白集合. ...
- Linux基础Day001-001章
运维工作职责:(运行和维护服务器) 1.数据不能丢失, 2.保障网站7*24H正常运行,--一直运行; 3.用户体验要好,--打开网站速度要快 服务器核心硬件(硬盘,内存,CPU) 尺寸: 1U-4. ...
- 如何完美激活pycharm2019.2.2
本号持续关注pycharm的更新,这不本月11号迎来新版本,为防走丢,请关注公众号,让我们携手并行!有道是"予人玫瑰手留余香",分享的确是件令人愉快的事,这也是我创建公众号的初心. ...
- VG有空间,创建逻辑卷
1.查看VG空间 [root@CNSZ22PL2787 ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup00 1 7 0 wz--n- 1.63t 1. ...
- Redis集群增加节点和删除节点
本文主要是承接上一篇文章Redis集群的离线安装成功以后,我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩,集群伸缩的原理是控制虚拟槽和数据在节点之 ...
- Day 9 用户管理
1.什么是用户? 能正常登陆系统的都算用户 windows系统和linux系统的用户有什么区别? 本质上没有区别, linux支持多个用户同一时刻登陆系统, 互相之间不影 响 而windows只允许同 ...