1 前言
Helm
是优良的基于Kubernetes
的包管理器。利用Helm
,能够疾速装置罕用的Kubernetes
利用,能够针对同一个利用疾速部署多套环境,还能够实现运维人员与开发人员的职责拆散。当初让咱们装置并体现一下,如何通过Helm
装置MongoDB
吧。
Kubernetes
环境搭建可参考:Mac上应用Docker Desktop启动Kubernetes,踩坑后终于搞掂
2 Helm相干概念
包治理是一种复用理念,Helm
与Kubernetes
的关系,就像是yum
与CentOS
,pip
于python
,npm
于JavaScript
。Helm
的作用有以下几点:
- 疾速装置罕用利用:许多大公司都有
helm
仓库,为咱们提供了许多优良的利用,能够间接拉取装置,如疾速部署Redis
集群、装置Jenkins
等。 - 多环境部署:通常咱们须要多套环境,如开发环境、测试环境、生产环境等,
helm
能够通过模板+变量
的模式实现疾速部署; - 运维与开发隔离:运维人员治理
k8s
资源,写部署模板及默认配置;开发人员只须要提供大量配置即可,把精力专一在业务开发上。
在应用helm
之前,以下概念应该要搞懂:
helm
客户端:装置在能连上kubernetes
集群的机器都行,用于装置、卸载利用等。tiller
:这是helm
的服务端,部署在kubernetes
集群中。客户端发申请给Tiller
,Tiller
再提交给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/...
下载解压后,增加环境变量到.bash_profile
即可。
export HELM_HOME=/Users/pkslow/Software/helmexport PATH=$PATH:$HELM_HOME
测试一下命令:
$ helm versionversion.BuildInfo{Version:"v3.2.4", GitCommit:"0ad800ef43d3b826f31a5ad8dfbb4fe05d143688", GitTreeState:"clean", GoVersion:"go1.13.12"}
3.2 仓库治理
列出曾经配置的仓库(我配置了阿里和微软的库):
$ helm repo lsNAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartsazure 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 updateHang 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 repositoryUpdate Complete. ⎈ Happy Helming!⎈
3.3 装置MongoDB
查看有什么MongoDB
相干的包:
$ helm search repo mongoNAME 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
其中release101
是Release
的名字,可按本人需要指定。查看Release
状态:
$ helm ls$ helm status release101
查看Dashboard
如下,曾经装置胜利:
3.4 卸载重装
默认它的Service
类型是ClusterIP
,只能供kubernetes
应用,咱们将它删除:
$ helm delete release101release "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.yaml
为values-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 lsNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONpkslow-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 pkslow1REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Thu Jul 9 01:14:09 2020 superseded mongodb-7.8.10 4.2.4 Install complete2 Thu Jul 9 16:45:41 2020 deployed mongodb-7.8.10 4.2.4 Upgrade complete
回滚到版本1
:
$ helm rollback pkslow1 1Rollback was a success! Happy Helming!
再查看一下版本:
$ helm history pkslow1REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Thu Jul 9 01:14:09 2020 superseded mongodb-7.8.10 4.2.4 Install complete2 Thu Jul 9 16:45:41 2020 superseded mongodb-7.8.10 4.2.4 Upgrade complete3 Thu Jul 9 17:06:49 2020 deployed mongodb-7.8.10 4.2.4 Rollback to 1
5 总结
一句话,helm
就是一个不便部署的工具,没有它一样能够,有它就会更不便,真香!
欢送拜访南瓜慢说 www.pkslow.com获取更多精彩文章!
欢送关注微信公众号<南瓜慢说>,将继续为你更新...
多读书,多分享;多写作,多整顿。
欢送大家关注、转发、在看、点赞一波四连。