Helm是优秀的基于Kubernetes的包管理器。利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离。现在让我们安装并体现一下,如何通过Helm安装MongoDB吧。
Helm
Kubernetes
MongoDB
Kubernetes环境搭建可参考:Mac上使用Docker Desktop启动Kubernetes,踩坑后终于搞掂
包管理是一种复用理念,Helm与Kubernetes的关系,就像是yum与CentOS,pip于python,npm于JavaScript。Helm的作用有以下几点:
yum
CentOS
pip
python
npm
JavaScript
helm
Redis
Jenkins
模板+变量
k8s
在使用helm之前,以下概念应该要搞懂:
kubernetes
tiller
Tiller
helm3
v3
chart
TAR
YAML
Repository
Chart
Release
label
这里安装helm v3,原因已经讲过,这样可以省去安装tiller。通过直接从GitHub下载安装的方式,地址为:https://github.com/helm/helm/releases
helm v3
GitHub
下载解压后,添加环境变量到.bash_profile即可。
.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"}
列出已经配置的仓库(我配置了阿里和微软的库):
$ 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!⎈
查看有什么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
其中release101是Release的名字,可按自己需求指定。查看Release状态:
release101
$ helm ls $ helm status release101
查看Dashboard如下,已经安装成功:
Dashboard
默认它的Service类型是ClusterIP,只能供kubernetes使用,我们将它删除:
Service
ClusterIP
$ helm delete release101 release "release101" uninstalled
从仓库下载Chart到本地:
$ helm fetch azure/mongodb
解压Chart的压缩文件:
$ tar zxvf ./mongodb-7.8.10.tgz
目录结构如下:
Chart.yaml文件:用于描述Chart的基本信息,如名称、版本等;
Chart.yaml
templates目录:部署文件模板目录;
templates
values.yaml文件:默认配置文件。
values.yaml
我们修改一下values.yaml文件,再重新安装:
修改Service类型为NodePort,并配置端口:
NodePort
service: annotations: {} type: NodePort port: 27017 nodePort: 30018
指定目录安装:
$ helm install pkslow1 ./mongodb
安装完成后,会提示如何获取MongoDB的用户名和密码,其中用户名为root,鉴权库为admin,密码通过以下命令获取(会提供命令):
root
admin
$ kubectl get secret --namespace default pkslow1-mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode
获取之后,就可以通过Robo3T连接数据库了:
Robo3T
复制values.yaml为values-pkslow.yaml,修改一下端口为30028,执行以下命令:
values-pkslow.yaml
30028
$ helm upgrade pkslow1 ./mongodb --values ./mongodb/values-pkslow.yaml
只是更新了端口,用户名和密码没有变,改了一下端口便可以连接。
查看定义了哪些变量:
$ helm get values pkslow1
同样准备一份yaml文件:values-pkslow-uat.yaml,修改想要的参数后,执行以下命令:
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
这样就有两个环境了,其它一个环境还有两个版本,可以回滚。
查看历史版本:
$ 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:
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
一句话,helm就是一个方便部署的工具,没有它一样可以,有它就会更方便,真香!
原文链接:https://www.cnblogs.com/larrydpk/p/13276513.html