文档章节

用Helm部署Kubernetes应用,支持多环境部署与版本回滚

南瓜慢说
 南瓜慢说
发布于 07/09 22:10
字数 1553
阅读 93
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

1 前言

Helm是优秀的基于Kubernetes的包管理器。利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离。现在让我们安装并体现一下,如何通过Helm安装MongoDB吧。

Kubernetes环境搭建可参考:Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂

2 Helm相关概念

包管理是一种复用理念,HelmKubernetes的关系,就像是yumCentOSpippythonnpmJavaScriptHelm的作用有以下几点:

  • 快速安装常用应用:许多大公司都有helm仓库,为我们提供了许多优秀的应用,可以直接拉取安装,如快速部署Redis集群、安装Jenkins等。
  • 多环境部署:通常我们需要多套环境,如开发环境、测试环境、生产环境等,helm可以通过模板+变量的形式实现快速部署;
  • 运维与开发隔离:运维人员管理k8s资源,写部署模板及默认配置;开发人员只需要提供少量配置即可,把精力专注在业务开发上。

在使用helm之前,以下概念应该要搞懂:

  • helm客户端:安装在能连上kubernetes集群的机器都行,用于安装、卸载应用等。
  • tiller:这是helm的服务端,部署在kubernetes集群中。客户端发请求给TillerTiller再提交给kubernetes。在helm3已经不再需要tiller了,所以建议使用v3版本的helm
  • chart:一个helm的软件包,采用TAR格式打包,其实就是一堆用来定义kubernetes资源的YAML文件的集合。
  • Repository:仓库,存放Chart的地方,helm可以同时管理多个Repository,非常方便。
  • Release:使用helm部署在kubernetes的应用集叫Release,它是以label的方式来标记的。

3 安装并使用

3.1 安装helm

这里安装helm v3,原因已经讲过,这样可以省去安装tiller。通过直接从GitHub下载安装的方式,地址为:https://github.com/helm/helm/releases

下载解压后,添加环境变量到.bash_profile即可。

export HELM_HOME=/Users/pkslow/Software/helm
export PATH=$PATH:$HELM_HOME

测试一下命令:

$ helm version
version.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}

3.2 仓库管理

列出已经配置的仓库(我配置了阿里和微软的库):

$ helm repo ls
NAME  	URL                                                   
stable	https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
azure 	http://mirror.azure.cn/kubernetes/charts

新增仓库:

$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories

删除仓库:

$ helm repo remove bitnami
"bitnami" has been removed from your repositories

更新仓库包信息到本地:

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "azure" chart repository
Update Complete. ⎈ Happy Helming!⎈ 

3.3 安装MongoDB

查看有什么MongoDB相关的包:

$ helm search repo mongo
NAME                             	CHART VERSION	APP VERSION	DESCRIPTION                                       
azure/mongodb                    	7.8.10       	4.2.4      	DEPRECATED NoSQL document-oriented database tha...
azure/mongodb-replicaset         	3.16.1       	3.6        	NoSQL document-oriented database that stores JS...
azure/prometheus-mongodb-exporter	2.5.0        	v0.10.0    	A Prometheus exporter for MongoDB metrics         
stable/mongodb                   	0.4.27       	3.7.1      	NoSQL document-oriented database that stores JS...
stable/mongodb-replicaset        	2.3.1        	3.6        	NoSQL document-oriented database that stores JS...
azure/unifi                      	0.10.0       	5.12.35    	Ubiquiti Network's Unifi Controller               

指定Chart安装MongoDB

$ helm install release101 azure/mongodb

其中release101Release的名字,可按自己需求指定。查看Release状态:

$ helm ls
$ helm status release101

查看Dashboard如下,已经安装成功:

3.4 卸载重装

默认它的Service类型是ClusterIP,只能供kubernetes使用,我们将它删除:

$ helm delete release101
release "release101" uninstalled

从仓库下载Chart到本地:

$ helm fetch azure/mongodb

解压Chart的压缩文件:

$ tar zxvf ./mongodb-7.8.10.tgz

目录结构如下:

  • Chart.yaml文件:用于描述Chart的基本信息,如名称、版本等;

  • templates目录:部署文件模板目录;

  • values.yaml文件:默认配置文件。

我们修改一下values.yaml文件,再重新安装:

修改Service类型为NodePort,并配置端口:

service:
  annotations: {}
  type: NodePort
  port: 27017
  nodePort: 30018

指定目录安装:

$ helm install pkslow1 ./mongodb

安装完成后,会提示如何获取MongoDB的用户名和密码,其中用户名为root,鉴权库为admin,密码通过以下命令获取(会提供命令):

$ kubectl get secret --namespace default pkslow1-mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode

获取之后,就可以通过Robo3T连接数据库了:

4 玩点新花样

4.1 更新变量

复制values.yamlvalues-pkslow.yaml,修改一下端口为30028,执行以下命令:

$ helm upgrade pkslow1 ./mongodb --values ./mongodb/values-pkslow.yaml

只是更新了端口,用户名和密码没有变,改了一下端口便可以连接。

查看定义了哪些变量:

$ helm get values pkslow1

4.2 部署一个新环境

同样准备一份yaml文件:values-pkslow-uat.yaml,修改想要的参数后,执行以下命令:

$ helm install pkslow-uat ./mongodb --values ./mongodb/values-pkslow-uat.yaml

查看列表:

$ helm ls
NAME      	NAMESPACE	REVISION	UPDATED                             	STATUS  	CHART         	APP VERSION
pkslow-uat	default  	1       	2020-07-09 16:57:32.971523 +0800 CST	deployed	mongodb-7.8.10	4.2.4      
pkslow1   	default  	2       	2020-07-09 16:45:41.217333 +0800 CST	deployed	mongodb-7.8.10	4.2.4   

这样就有两个环境了,其它一个环境还有两个版本,可以回滚。

4.3 版本回滚

查看历史版本:

$ helm history pkslow1
REVISION	UPDATED                 	STATUS    	CHART         	APP VERSION	DESCRIPTION     
1       	Thu Jul  9 01:14:09 2020	superseded	mongodb-7.8.10	4.2.4      	Install complete
2       	Thu Jul  9 16:45:41 2020	deployed  	mongodb-7.8.10	4.2.4      	Upgrade complete

回滚到版本1

$ helm rollback pkslow1 1
Rollback was a success! Happy Helming!

再查看一下版本:

$ helm history pkslow1
REVISION	UPDATED                 	STATUS    	CHART         	APP VERSION	DESCRIPTION     
1       	Thu Jul  9 01:14:09 2020	superseded	mongodb-7.8.10	4.2.4      	Install complete
2       	Thu Jul  9 16:45:41 2020	superseded	mongodb-7.8.10	4.2.4      	Upgrade complete
3       	Thu Jul  9 17:06:49 2020	deployed  	mongodb-7.8.10	4.2.4      	Rollback to 1 

5 总结

一句话,helm就是一个方便部署的工具,没有它一样可以,有它就会更方便,真香!


欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!

欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。

欢迎大家关注、转发、在看、点赞一波四连。

南瓜慢说
粉丝 3
博文 66
码字总数 78735
作品 0
广州
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.4K
6
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.1K
1
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6

没有更多内容

加载失败,请刷新页面

加载更多

PHP实现RabbitMQ消息队列

先安装PHP对应的RabbitMQ,这里用的是 php_amqp 不同的扩展实现方式会有细微的差异. php扩展地址: http://pecl.php.net/package/amqp 具体以官网为准 http://www.rabbitmq.com/getstarted.htm...

PHP圈子
15分钟前
7
0
pdd笔试题

拼多多提前批的笔试没有报名,但昨天听伙伴们说很难,所以一共4道题,挑了2道会的,自己编了一下。 #include<iostream>#include<vector>#include<algorithm>using namespace std;int ma...

osc_tylqml9v
15分钟前
0
0
拓扑排序算法

/** * 拓扑排序算法,拓扑都是有向无环图 * 使用场景:编译的时候,比如,springboot启动的时候要读取docker系统环境变量,还要读取各配置文件按照顺序 * 还有比如,a的包依赖...

osc_94gn551r
17分钟前
0
0
巨微代理MS1581蓝牙无线收发器

上海巨微MS1581包含8位单片机和低功耗、低成本的BLE收发器,内部集成了发射机、接收机、GFSK调制解调器和BLE基带处理。遵循BLE广播通道通信,具有成本低、体积小、控制方便等优点。巨微代理英...

英尚微电子
17分钟前
10
0
链接测试(内部)

1、长链 https://chelun.eclicks.cn/web/information?info_tid=156984 - 文章test http://cjjl-h5-test.chelun.com/2020/big/index.html - 以小博大test 2、scheme : 钱包 supercoach://myw......

osc_hwc3munb
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部