helm 安裝 rabbitmq 叢集
阿新 • • 發佈:2022-05-15
目錄
1. 新增
2. 查詢
3. 拉取
4. 對本地
5. 安裝
6. 驗證
資源清單
本文安裝
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