kubernetes 12015 在集群中部署高可用rabbitmq暴露nodeport设置密码 配置文件写成 configmap 挂载方式。
下面是一个示例配置文件,可以部署高可用的rabbitmq并暴露nodeport和设置密码,使用configmap挂载方式:
创建configmap
首先,我们需要创建一个configmap来存储rabbitmq的配置文件。在命令行中执行以下命令:
$ kubectl create configmap rabbitmq-config --from-file=rabbitmq.conf
这将创建一个名为“rabbitmq-config”的configmap,并从本地文件“rabbitmq.conf”中加载配置。
rabbitmq.conf文件内容:
loopback_users.guest = false
listeners.tcp.default = 5672
management.listener.port = 15672
management.listener.ssl = false
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_classic_config
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq-0.rabbitmq-ha.default.svc.cluster.local
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq-1.rabbitmq-ha.default.svc.cluster.local
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq-2.rabbitmq-ha.default.svc.cluster.local
cluster_formation.node_cleanup.interval = 30
cluster_formation.node_cleanup.only_log_warning = true
这个配置文件指定了一些基本配置,例如禁用默认的“guest”用户,监听端口,管理界面端口,以及集群节点的配置。
创建rabbitmq服务和statefulset
接下来,我们需要创建一个rabbitmq服务和一个statefulset。在命令行中执行以下命令:
$ kubectl apply -f rabbitmq.yaml
rabbitmq.yaml文件内容:
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-ha
labels:
app: rabbitmq-ha
spec:
type: NodePort
ports:
- port: 5672
targetPort: 5672
name: amqp
- port: 15672
targetPort: 15672
name: http
selector:
app: rabbitmq-ha
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rabbitmq-ha
spec:
serviceName: rabbitmq-ha
replicas: 3
selector:
matchLabels:
app: rabbitmq-ha
template:
metadata:
labels:
app: rabbitmq-ha
spec:
containers:
- name: rabbitmq
image: rabbitmq:3.8.22-management-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5672
- containerPort: 15672
volumeMounts:
- name: rabbitmq-config
mountPath: /etc/rabbitmq/
env:
- name: RABBITMQ_ERLANG_COOKIE
valueFrom:
secretKeyRef:
name: rabbitmq-erlang-cookie
key: rabbitmq-erlang-cookie
- name: RABBITMQ_NODENAME
valueFrom:
fieldRef:
fieldPath: metadata.name
args: ["rabbitmq-server"]
volumes:
- name: rabbitmq-config
configMap:
name: rabbitmq-config
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
这个yaml文件定义了一个NodePort类型的rabbitmq服务,以及一个由3个Pod组成的statefulset。每个Pod都使用了相同的rabbitmq镜像,并加载了之前创建的configmap。
设置密码
为了设置rabbitmq的用户名和密码,我们可以使用kubectl exec命令进入任意一个Pod并使用rabbitmqctl命令进行设置。例如,要设置一个名为“admin”的用户和密码为“password”,可以执行以下命令:
$ kubectl exec -it rabbitmq-ha-0 -- rabbitmqctl add_user admin password
然后,我们需要授予这个用户管理员权限:
$ kubectl exec -it rabbitmq-ha-0 -- rabbitmqctl set_user_tags admin administrator
最后,我们将使用kubectl port-forward命令来暴露rabbitmq的管理界面,并访问http://localhost:15672/:
$ kubectl port-forward rabbitmq-ha-0 15672
现在,我们可以使用新创建的用户名和密码登录rabbitmq的管理界面。
原文地址: https://www.cveoy.top/t/topic/bHIS 著作权归作者所有。请勿转载和采集!