1. 程式人生 > 其它 >helm 安裝 rabbitmq 叢集

helm 安裝 rabbitmq 叢集

目錄

資源清單

本文安裝 rabbitmq 依賴 K8S叢集helm ,本文不提供 K8S叢集helm 安裝方式

使用此文件部署,需要自行解決 storageClass 問題 ( NFS, ceph, openebs等 )

使用此文件部署,需要自行解決 ingress nginx 問題,部署服務會定義ingress nginx ( 也可以不啟用 ingress,使用 NodePort 進行訪問 )

軟體 版本
chart 9.0.8
rabbitmq 3.9.17
kubernetes v1.19.3
helm v3.8.1
ingress nginx 3.15.2

helm 安裝 rabbitmq 叢集

1. 新增 rabbitmq helm 倉庫

$ helm repo add bitnami https://charts.bitnami.com/bitnami

2. 查詢 rabbitmq 資源

$ helm repo update

$ helm search repo rabbitmq
NAME                             	CHART VERSION	APP VERSION 	DESCRIPTION                                       
bitnami/rabbitmq                 	9.0.8        	3.9.17      	RabbitMQ is an open source general-purpose mess...

3. 拉取 rabbitmq chart 到本地

$ mkdir /root/rabbitmq && cd /root/rabbitmq

# 拉取 chart 到本地 /root/rabbitmq 目錄
$ helm pull bitnami/rabbitmq --version 9.0.8

$ tar -xvf rabbitmq-9.0.8.tgz
$ cp rabbitmq/values.yaml ./values-test.yaml

# 檢視當前目錄層級
$ tree -L 2
.
├── rabbitmq
│   ├── Chart.lock
│   ├── charts
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates
│   ├── values.schema.json
│   └── values.yaml
├── rabbitmq-9.0.8.tgz
└── values-test.yml

4. 對本地 values-test.yaml 修改

  • 檢視叢集 storageclasses
$ kubectl get storageclasses.storage.k8s.io 
NAME                   PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
openebs-jiva-default   jiva.csi.openebs.io   Delete          Immediate              true                   33d
  • 修改配置

如需定義其他配置,可以檢視 rabbitmq/values.yaml 檔案配置,然後複製到 values-test.yaml 中進行定義

$ cat values-test.yaml 

## 全域性配置定義 storageClass: "",會使用叢集配置的 openebs 提供的 storageClass,
## 使用此文件部署,需要自行解決 storageClass 問題 (ceph, nfs, 公有云提供的 nfs)

# 全域性定義:定義 storageClass
global:
  storageClass: "openebs-jiva-default"

# 定義登陸 web 介面的賬號定義
auth:
  username: admin
  password: "admin123"

# 需要額外外掛
plugins: "rabbitmq_management rabbitmq_peer_discovery_k8s"
extraPlugins: "rabbitmq_auth_backend_ldap"

# 定義叢集
clustering:
  enabled: true
  addressType: hostname

# 定義容器埠
containerPorts:
  amqp: 5672
  amqpTls: 5671
  dist: 25672
  manager: 15672
  epmd: 4369
  metrics: 9419

# 定義叢集中服務個數
replicaCount: 3

# 定義 pv pvc 
persistence:
  enabled: true
  size: 10Gi

#定義 Ingress 資訊
ingress:
  enabled: true
  path: /
  pathType: ImplementationSpecific
  hostname: rabbitmq.evescn.com

5. 安裝 rabbitmq 叢集

# 建立 test-middleware 名稱空間
$ kubectl create ns test-middleware

# 安裝 rabbitmq 叢集
$ helm -n test-middleware install rabbitmq-cluster rabbitmq -f values-test.yaml

## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE
-n 指定 kubernetes 叢集名稱空間
-f 指定使用的配置檔案,檔案中定義的配置可以覆蓋 mysql/values.yaml 檔案中配置


NAME: rabbitmq-cluster
LAST DEPLOYED: Sat May 14 22:37:15 2022
NAMESPACE: test-middleware
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: rabbitmq
CHART VERSION: 9.0.8
APP VERSION: 3.9.17** Please be patient while the chart is being deployed **

Credentials:
    echo "Username      : admin"
    echo "Password      : $(kubectl get secret --namespace test-middleware rabbitmq-cluster -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)"
    echo "ErLang Cookie : $(kubectl get secret --namespace test-middleware rabbitmq-cluster -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode)"

Note that the credentials are saved in persistent volume claims and will not be changed upon upgrade or reinstallation unless the persistent volume claim has been deleted. If this is not the first installation of this chart, the credentials may not be valid.
This is applicable when no passwords are set and therefore the random password is autogenerated. In case of using a fixed password, you should specify it when upgrading.
More information about the credentials may be found at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases.

RabbitMQ can be accessed within the cluster on port  at rabbitmq-cluster.test-middleware.svc.cluster.local

To access for outside the cluster, perform the following steps:

To Access the RabbitMQ AMQP port:

1. Create a port-forward to the AMQP port:

    kubectl port-forward --namespace test-middleware svc/rabbitmq-cluster 5672:5672 &
    echo "URL : amqp://127.0.0.1:5672/"

2. Access RabbitMQ using using the obtained URL.

To Access the RabbitMQ Management interface:

1. Get the RabbitMQ Management URL and associate its hostname to your cluster external IP:

   export CLUSTER_IP=$(minikube ip) # On Minikube. Use: `kubectl cluster-info` on others K8s clusters
   echo "RabbitMQ Management: http://rabbitmq.evescn.com/"
   echo "$CLUSTER_IP  rabbitmq.evescn.com" | sudo tee -a /etc/hosts

2. Open a browser and acchelm uninstall rabbitmq

6. 驗證 rabbitmq 叢集

  • 檢視 pod
$ helm -n test-middleware list
NAME            	NAMESPACE      	REVISION	UPDATED                                	STATUS  	CHART         	APP VERSION
rabbitmq-cluster	test-middleware	1       	2022-05-14 22:37:15.184660083 -0400 EDT	deployed	rabbitmq-9.0.8	3.9.17


$ kubectl -n test-middleware get pods -l app.kubernetes.io/name=rabbitmq
NAME                 READY   STATUS    RESTARTS   AGE
rabbitmq-cluster-0   1/1     Running   0          6m22s
rabbitmq-cluster-1   1/1     Running   0          5m12s
rabbitmq-cluster-2   1/1     Running   0          3m40s
  • 檢視 pvc
$ kubectl -n test-middleware get pvc
NAME                                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS           AGE
data-rabbitmq-cluster-0             Bound    pvc-d6c5392f-889c-47e9-80cc-168d2408b8fa   10Gi       RWO            openebs-jiva-default   6m43s
data-rabbitmq-cluster-1             Bound    pvc-051edb44-af96-465b-b325-f829b10d195a   10Gi       RWO            openebs-jiva-default   5m33s
data-rabbitmq-cluster-2             Bound    pvc-04905017-80ae-4ec8-87c9-2aee18d00fe8   10Gi       RWO            openebs-jiva-default   4m1s
  • 登陸 web 頁面檢視

http://rabbitmq.evescn.com/

  • 獲取登陸 web 的賬號密碼
$ echo "Username      : admin"
Username      : admin

$ echo "Password      : $(kubectl get secret --namespace test-middleware rabbitmq-cluster -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)"

Password      : admin123

參考文件

https://artifacthub.io/packages/helm/bitnami/rabbitmq