Kubernetes 集群包管理器 Helm3 部署
前言

簡介
安裝
先決條件
安裝
在線安裝
下載安裝
前言
簡介
安裝
先決條件
安裝
在線安裝
下載安裝
配置倉庫
查詢應用
查看安裝包內容
安裝應用
查看應用 chart 可配置參數(shù)
自定義參數(shù)安裝應用
方式一:使用自定義 values.yaml 文件安裝應用
方式二:使用 --set 配置參數(shù)進行安裝
卸載應用
升級應用
應用回滾
回滾到 1 版本
前言
如果我們開發(fā)微服務架構應用,組成的應用多達幾十或上百個,傳統(tǒng)的資源文件的組織和管理應用方式就會力不從心了:
很難管理、編輯和維護如此多的服務。每個服務都有若干配置,缺乏一個更高層次的工具將這些配置組織起來;
不容易將這些服務作為一個整體統(tǒng)一發(fā)布。運維人員需要理解應用和服務之間的關系,然后按照邏輯執(zhí)行資源文件,即缺少一種工具來定義應用與服務,以及服務與服務之間的關系;
不能高效地共享和重用服務。比如兩個 MySQL 服務,只是配置參數(shù)不同,但是使用資源文件需要重復執(zhí)行。也就是說,不支持參數(shù)化配置和多環(huán)境配置。
不支持應用版本管理。雖然可以通過命令:kubectl rollout undo進行回滾,但是只能到單個 Deployment,不支持整個應用的回滾。
不支持對部署應用狀態(tài)驗證。比如是否能通過預定義的賬號訪問 MySQL。雖然 Kubernetes 有健康檢查,但那是針對單個容器,我們需要應用(服務)級別的健康檢查。helm 能夠解決上面這些問題,helm 幫助 Kubernetes 成為微服務架構應用理想的部署平臺
Kuberbetes 能夠很好地組織和編排容器,但它缺少一個更高層次的應用打包工具,而 Helm 就是解決這個問題的。
簡介
Helm 是 Kubernetes 的包(Chart)管理器。包管理器類似于我們在 Ubuntu 中使用的 apt、Centos 中使用的 yum 或者 Python 中的 pip 一樣,能快速查找、下載和安裝軟件包,這里我們使用 Helm3 進行軟件管理。
安裝
先決條件
成功且正確安全地使用 Helm 需要具備以下先決條件。
Kubernetes 集群
確定要應用于安裝的安全性配置(如果有)
安裝和配置 Helm
安裝 Kubernetes 或有權訪問集群
必須安裝 Kubernetes。對于 Helm 的最新版本,我們建議使用 Kubernetes 的最新穩(wěn)定版本,在大多數(shù)情況下,它是第二最新的次要版本。
還應該具有的本地配置副本 kubectl
注意:1.6 之前的 Kubernetes 版本對基于角色的訪問控制(RBAC)的支持有限或不支持。
安裝
Helm 現(xiàn)在具有一個安裝程序腳本,該腳本將自動獲取最新版本的 Helm 并將其本地安裝。
$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh Downloading https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz Preparing to install helm into /usr/local/bin helm installed into /usr/local/bin/helm
官方參考:https://helm.sh/docs/intro/quickstart/
訪問 Helm Github 下載頁面 https://github.com/helm/helm/releases 找到最新的客戶端,里面有不同系統(tǒng)下的包,這里我們選擇 Linux amd64,然后在 Linux 系統(tǒng)中使用 Wget 命令進行下載。
# 下載Helm客戶端 wget https://get.helm.sh/helm-v3.2.4-linux-amd64.tar.gz # 接下來解壓下載的包,然后將客戶端放置到 /usr/local/bin/ 目錄下: # 解壓 Helm tar -zxvf helm-v3.2.4-linux-amd64.tar.gz # 復制客戶端執(zhí)行文件到 bin 目錄下,方便在系統(tǒng)下能執(zhí)行 helm 命令 cp linux-amd64/helm /usr/local/bin/
注意:helm 客戶端需要下載到安裝了 kubectl 并且能執(zhí)行能正常通過 kubectl 操作 kubernetes 的服務器上,否則 helm 將不可用。
配置倉庫
Helm3 默認是不會添加 Chart 倉庫, 需要添加常用的倉庫:
helm repo add elastic https://helm.elastic.co helm repo add gitlab https://charts.gitlab.io helm repo add harbor https://helm.goharbor.io helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add incubator https://kubernetes-charts-incubator.storage.googleapis.com helm repo add stable https://kubernetes-charts.storage.googleapis.com
增加完倉庫后, 需要執(zhí)行更新命令, 將倉庫中的信息進行同步 helm repo update
??注意:
如果有的倉庫不能正常解析, 請更換 DNS 地址, 在測試過程中, 發(fā)現(xiàn)有的能正常解析, 有的不能. 如果還不行, 就直接將域名和對應的地址寫死在 Host 文件中. 或者配置代理
使用國內倉庫:
helm repo add stable http://mirror.azure.cn/kubernetes/charts helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts helm repo update
$ helm repo update Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "aliyun" chart repository ...Successfully got an update from the "harbor" chart repository ...Successfully got an update from the "incubator" chart repository ...Successfully got an update from the "gitlab" chart repository ...Successfully got an update from the "elastic" chart repository ...Successfully got an update from the "stable" chart repository ...Successfully got an update from the "bitnami" chart repository Update Complete. ? Happy Helming!? $ helm repo list NAME URL elastic https://helm.elastic.co bitnami https://charts.bitnami.com/bitnami incubator https://kubernetes-charts-incubator.storage.googleapis.com stable http://mirror.azure.cn/kubernetes/charts aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts gitlab https://charts.gitlab.io harbor https://helm.goharbor.io
查詢應用
命令:helm search repo
$ helm search repo rabbitmq NAME CHART VERSION APP VERSION DESCRIPTION aliyun/rabbitmq 0.6.21 3.7.3 Open source message broker software that implem... aliyun/rabbitmq-ha 1.0.0 3.7.3 Highly available RabbitMQ cluster, the open sou... bitnami/rabbitmq 7.2.1 3.8.5 Open source message broker software that implem... stable/prometheus-rabbitmq-exporter 0.5.5 v0.29.0 Rabbitmq metrics exporter for prometheus stable/rabbitmq 6.18.2 3.8.2 DEPRECATED Open source message broker software ... stable/rabbitmq-ha 1.46.4 3.8.5 Highly available RabbitMQ cluster, the open sou...
查看安裝包內容
helm inspect values
安裝應用
helm install my-release bitnami/rabbitmq helm install my-rabbitmq bitnami/rabbitmq -n default ## -n, --namespace 參數(shù)指定安裝的命名空間, Helm3 可以在不同的命名空間中部署相同名稱的應用 ## -f values.yaml 使用自定義參數(shù)配置 ## --set 設置自定義參數(shù)列表 ## --dry-run --debug 模擬安裝過程并打印配置信息
查看應用 chart 可配置參數(shù)
首先使用 helm show values {倉庫名稱}/{應用名稱} 來查看對應應用的可配置參數(shù):
helm show values bitnami/rabbitmq
自定義參數(shù)安裝應用
Helm 中支持使用自定義 yaml 文件和 --set 命令參數(shù)對要安裝的應用進行參數(shù)配置
用自定義配置文件來配置安裝應用的參數(shù):
創(chuàng)建自定義配置文件 values.yaml:
$ cat > values.yaml << EOF image: registry: docker.io repository: bitnami/nginx resources: limits: cpu: 1000m memory: 1024Mi requests: cpu: 1000m memory: 1024Mi EOF
使用自定義配置文件運行應用:
helm install -f values.yaml bitnami/nginx
使用如下:
helm install my-rabbitmq \ --set auth.username=admin,auth.password=admin,auth.erlangCookie=secretcookie,global.storageClass=rook-ceph-block \ bitnami/rabbitmq # auth.username:RabbitMQ 應用程序用戶名 # auth.password:RabbitMQ 應用密碼 # auth.erlangCookie:Erlang cookie # global.storageClass:用于動態(tài)配置的全局存儲類,此處指定 ceph 存儲類
官方指南:
https://github.com/bitnami/charts/tree/master/bitnami/rabbitmq/#installing-the-chart
helm install my-rabbitmq \ > --set auth.username=admin,auth.password=admin,auth.erlangCookie=secretcookie,global.storageClass=rook-ceph-block \ > bitnami/rabbitmq > NAME: my-rabbitmq LAST DEPLOYED: Fri Jun 26 16:22:44 2020 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: ** Please be patient while the chart is being deployed ** Credentials: echo "Username : admin" echo "Password : $(kubectl get secret --namespace default my-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)" echo "ErLang Cookie : $(kubectl get secret --namespace default my-rabbitmq -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode)" RabbitMQ can be accessed within the cluster on port at my-rabbitmq.default.svc. To access for outside the cluster, perform the following steps: To Access the RabbitMQ AMQP port: echo "URL : amqp://127.0.0.1:5672/" kubectl port-forward --namespace default svc/my-rabbitmq 5672:5672 To Access the RabbitMQ Management interface: echo "URL : http://127.0.0.1:15672/" kubectl port-forward --namespace default svc/my-rabbitmq 15672:15672 $ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-rabbitmq-0 1/1 Running 0 24m 10.244.2.66 k8s-node3
卸載應用
卸載應用,并保留安裝記錄:
helm uninstall my-rabbitmq -n default ## -n, --namespace 參數(shù)指定安裝的命名空間, Helm3 可以在不同的命名空間中部署相同名稱的應用
卸載應用,不保留安裝記錄:
helm delete my-rabbitmq -n default
查看全部應用(包含安裝和卸載的應用)
$ helm list -n default --all NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION my-rabbitmq default 1 2020-06-26 16:22:44.57446662 +0800 CST deployed rabbitmq-7.2.1 3.8.5
升級應用
通過更新配置文件的方式來更新部署:
## values.yaml 參數(shù)配置文件 helm upgrade -f values.yaml my-rabbitmq bitnami/rabbitmq -n default ## 查看新配置是否生效 helm get values my-rabbitmq -n default
應用回滾
升級過程發(fā)生錯誤, 可以進行回滾, 操作過程為查看應用歷史版本, 獲取 REVISION 號后進行回滾操作
$ helm history my-rabbitmq -n default REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION 1 Tue Feb 25 11:30:06 2020 deployed rabbitmq-6.17.4 3.8.2 Install complete
回滾到 1 版本
helm rollback my-rabbitmq 1 -n default
Kubernetes
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。
版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。