Helm
是優秀的基於Kubernetes
的包管理器。利用Helm
,能夠快速安裝經常使用的Kubernetes
應用,能夠針對同一個應用快速部署多套環境,還能夠實現運維人員與開發人員的職責分離。如今讓咱們安裝並體現一下,如何經過Helm
安裝MongoDB
吧。node
Kubernetes
環境搭建可參考:Mac上使用Docker Desktop啓動Kubernetes,踩坑後終於搞掂python
包管理是一種複用理念,Helm
與Kubernetes
的關係,就像是yum
與CentOS
,pip
於python
,npm
於JavaScript
。Helm
的做用有如下幾點:git
helm
倉庫,爲咱們提供了許多優秀的應用,能夠直接拉取安裝,如快速部署Redis
集羣、安裝Jenkins
等。helm
能夠經過模板+變量
的形式實現快速部署;k8s
資源,寫部署模板及默認配置;開發人員只須要提供少許配置便可,把精力專一在業務開發上。在使用helm
以前,如下概念應該要搞懂:github
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
的方式來標記的。這裏安裝helm v3
,緣由已經講過,這樣能夠省去安裝tiller
。經過直接從GitHub
下載安裝的方式,地址爲:https://github.com/helm/helm/releasesmongodb
下載解壓後,添加環境變量到.bash_profile
便可。docker
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"}
列出已經配置的倉庫(我配置了阿里和微軟的庫):npm
$ helm repo ls NAME URL stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts azure http://mirror.azure.cn/kubernetes/charts
新增倉庫:json
$ helm repo add bitnami https://charts.bitnami.com/bitnami "bitnami" has been added to your repositories
刪除倉庫:bash
$ 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
狀態:
$ helm ls $ helm status release101
查看Dashboard
以下,已經安裝成功:
默認它的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
鏈接數據庫了:
複製values.yaml
爲values-pkslow.yaml
,修改一下端口爲30028
,執行如下命令:
$ helm upgrade pkslow1 ./mongodb --values ./mongodb/values-pkslow.yaml
只是更新了端口,用戶名和密碼沒有變,改了一下端口即可以鏈接。
查看定義了哪些變量:
$ helm get values pkslow1
一樣準備一份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
:
$ 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
就是一個方便部署的工具,沒有它同樣能夠,有它就會更方便,真香!
歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...
多讀書,多分享;多寫做,多整理。
歡迎你們關注、轉發、在看、點贊一波四連。