用helm创建rabbitmq集群
创建一个chart
[root@k8s-master helm_soft]# helm search repo rabbitmq-ha --versions
NAME CHART VERSION APP VERSION DESCRIPTION
.......
kaiyuanshe/rabbitmq-ha 1.37.0 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.5 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.4 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.3 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.2 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.1 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.36.0 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.35.0 3.8.0 Highly available RabbitMQ cluster, the open sou...
kaiyuanshe/rabbitmq-ha 1.34.1 3.7.19 Highly available RabbitMQ cluster, the open sou..
........
[root@k8s-master helm_soft]# helm pull kaiyuanshe/rabbitmq-ha --version=1.34.1
[root@k8s-master helm_soft]# tar xf rabbitmq-ha-1.34.1.tgz
创建namespaces
[root@k8s-master rabbitmq-ha]# kubectl create ns stj-ns
拉取的镜像地址
[root@k8s-master rabbitmq-ha]# crictl pull rabbitmq:3.7.19-alpine
部署rabbitmq
`修改自己的domian`
[root@k8s-master rabbitmq-ha]# vim values.yaml
.....
## Kubernetes Cluster Domain
clusterDomain: stangjedu.local
.....
[root@k8s-master rabbitmq-ha]# helm install rabbitmq-cluster --namespace stj-ns --set rabbitmqUsername=stj,rabbitmqPassword=rabbitmq,managementPassword=rabbitmq,rabbitmqErlangCookie=secretcookie .
验证pod状态
[root@k8s-master rabbitmq-ha]# kubectl get pod -n stj-ns
NAME READY STATUS RESTARTS AGE
rabbitmq-cluster-rabbitmq-ha-0 1/1 Running 0 3m18s
rabbitmq-cluster-rabbitmq-ha-1 1/1 Running 0 2m38s
rabbitmq-cluster-rabbitmq-ha-2 1/1 Running 0 47s
[root@k8s-master rabbitmq-ha]# kubectl get svc -n stj-ns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rabbitmq-cluster-rabbitmq-ha ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 12m
rabbitmq-cluster-rabbitmq-ha-discovery ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 12m
通过helm查看
[root@k8s-master rabbitmq-ha]# helm list -n stj-ns
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
rabbitmq-cluster stj-ns 1 2024-02-19 15:17:42.050864816 +0800 CST deployed rabbitmq-ha-1.34.1 3.7
helm install rabbitmq-cluster --namespace stj-ns --set ingress.enabled=true,ingress.hostName=rabbitmq.stj.net --set rabbitmqUsername=aka,rabbitmqPassword=rabbitmq,managementPassword=rabbitmq,rabbitmqErlangCookie=secretcookie .
注意因为这里service用的ClusterIP外界不能访问k8s内部资源
通过ingress访问rabbitmq
修改helm的ingree配置
[root@k8s-master rabbitmq-ha]# cat templates/ingress.yaml
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ template "rabbitmq-ha.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
app: {{ template "rabbitmq-ha.name" . }}
chart: {{ template "rabbitmq-ha.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
{{- range $key, $value := .Values.ingress.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
ingressClassName: nginx
rules:
{{- if .Values.ingress.hostName }}
- host: {{ .Values.ingress.hostName }}
http:
{{- else }}
- http:
{{- end }}
paths:
- pathType: Prefix
path: {{ .Values.ingress.path }}
backend:
service:
name: {{ template "rabbitmq-ha.fullname" . }}
port:
number: {{ .Values.rabbitmqManagerPort }}
{{- if .Values.ingress.tls }}
tls:
- secretName: {{ .Values.ingress.tlsSecret }}
{{- if .Values.ingress.hostName }}
hosts:
- {{ .Values.ingress.hostName }}
{{- end }}
{{- end }}
{{- end }}
重新部署rabbitmq
`删除helm部署的rabbitmq`
[root@k8s-master rabbitmq-ha]# helm list -n stj-ns
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
rabbitmq-cluster stj-ns 1 2024-02-19 16:57:46.182486272 +0800 CST deployed rabbitmq-ha-1.34.1
[root@k8s-master rabbitmq-ha]# helm uninstall rabbitmq-cluster -n stj-ns
[root@k8s-master rabbitmq-ha]# helm install rabbitmq-cluster --namespace stj-ns --set ingress.enabled=true,ingress.hostName=rabbitmq.stj.net --set rabbitmqUsername=stj,rabbitmqPassword=rabbitmq,managementUsername=admin,managementPassword=rabbitmq123,rabbitmqErlangCookie=secretcookie .
查看部署情况
[root@k8s-master rabbitmq-ha]# kubectl get pod,svc,ingress -n stj-ns
NAME READY STATUS RESTARTS AGE
pod/rabbitmq-cluster-rabbitmq-ha-0 1/1 Running 0 119s
pod/rabbitmq-cluster-rabbitmq-ha-1 1/1 Running 0 99s
pod/rabbitmq-cluster-rabbitmq-ha-2 1/1 Running 0 73s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/rabbitmq-cluster-rabbitmq-ha ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 119s
service/rabbitmq-cluster-rabbitmq-ha-discovery ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 119s
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/rabbitmq-cluster-rabbitmq-ha nginx rabbitmq.stj.net 192.168.139.33 80 119s
配置window的hosts文件
通过web验证rabbitmq
可以看到三个节点加入到了集群
扩容rabbitmq
[root@k8s-master rabbitmq-ha]# vim values.yaml
# 修改副本数为4
....
replicaCount: 4
....
更新升级rabbitmq
[root@k8s-master rabbitmq-ha]# helm upgrade rabbitmq-cluster -n stj-ns .
验证
[root@k8s-master rabbitmq-ha]# kubectl get pod,svc,ingress -n stj-ns
NAME READY STATUS RESTARTS AGE
pod/rabbitmq-cluster-rabbitmq-ha-0 1/1 Running 0 10m
pod/rabbitmq-cluster-rabbitmq-ha-1 1/1 Running 0 10m
pod/rabbitmq-cluster-rabbitmq-ha-2 1/1 Running 0 10m
pod/rabbitmq-cluster-rabbitmq-ha-3 1/1 Running 0 75s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/rabbitmq-cluster-rabbitmq-ha ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 10m
service/rabbitmq-cluster-rabbitmq-ha-discovery ClusterIP None <none> 15672/TCP,5672/TCP,4369/TCP 10m
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/rabbitmq-cluster-rabbitmq-ha nginx rabbitmq.stj.net 192.168.139.33 80 10m
我这里没有考虑rabbitmq数据持久化,如果有需要在values.yaml 文件配置即可,如果你对go语言比较熟悉,更改起来更加容易





文章评论