使rabbitmq群集可公开访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使rabbitmq群集可公开访问相关的知识,希望对你有一定的参考价值。
我正在使用这个头盔图在k8s集群上配置rabbitmq:https://github.com/helm/charts/tree/master/stable/rabbitmq
如何通过公共端点使群集可访问?目前,我有一个具有以下配置的群集。我能够通过给定的主机名访问管理门户(公共端点,这很好)。但是,当我在内部检查时,管理门户集群可以通过内部IP和/或主机名访问,即:rabbit@rabbitmq-0.rabbitmq-headless.default.svc.cluster.local
和rabbit@<private_ip>
。我想让群集公开,所以VNET之外的所有其他服务都可以连接到它。
helm install stable/rabbitmq --name rabbitmq
--set rabbitmq.username=xxx
--set rabbitmq.password=xxx
--set rabbitmq.erlangCookie=secretcookie
--set rbacEnabled=true
--set ingress.enabled=true
--set ingress.hostName=rabbitmq.xxx.com
--set ingress.annotations."kubernetes.io/ingress.class"="nginx"
--set resources.limits.memory="256Mi"
--set resources.limits.cpu="100m"
我没有尝试使用Helm,但我是直接从.yaml
配置文件构建并部署到Kubernetes。所以我只跟着Template of Helm
用于从群集中发布RabbitMQ服务
1,你需要一个外部IP:
如果您使用Google Cloud,请运行以下命令:
gcloud compute addresses create rabbitmq-service-ip --region asia-southeast1
gcloud compute addresses describe rabbitmq-service-ip --region asia-southeast1
>address: 35.240.xxx.xxx
将rabbitmq-service-ip
更改为您想要的名称,并将region
更改为您自己的名称。
2,配置Helm
参数
service.type=LoadBalancer
service.loadBalancerSourceRanges=35.240.xxx.xxx/32
#您从gcloud
获得的IP地址
service.port=5672
3,部署并尝试telnet到您的RabbitMQ服务
telnet 35.240.xxx.xxx 5672
Trying 35.240.xxx.xxx...
Connected to 149.185.xxx.xxx.bc.googleusercontent.com.
Escape character is '^]'.
疑难杂症!它奏效了
供参考:
如果要创建.yaml
并在没有Helm的情况下部署,这是基本模板
service.yaml
---
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
labels:
name: rabbitmq
namespace: smart-office
spec:
type: LoadBalancer
loadBalancerIP: 35.xxx.xxx.xx
ports:
# the port that this service should serve on
- port: 5672
name: rabbitmq
targetPort: 5672
nodePort: 32672
selector:
name: rabbitmq
deployment.yaml
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: rabbitmq
labels:
name: rabbitmq
namespace: smart-office
spec:
replicas: 1
template:
metadata:
labels:
name: rabbitmq
annotations:
prometheus.io/scrape: "false"
spec:
containers:
- name: rabbitmq
image: rabbitmq:3.6.8-management
ports:
- containerPort: 5672
name: rabbitmq
securityContext:
capabilities:
drop:
- all
add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
readOnlyRootFilesystem: true
- name: rabbitmq-exporter
image: kbudde/rabbitmq-exporter
ports:
- containerPort: 9090
name: exporter
nodeSelector:
beta.kubernetes.io/os: linux
希望这有帮助!
从您传递的Helm值开始,我看到您已经使用Nginx Ingress配置了RabbitMQ服务。
您应该创建一个DNS记录,其中ingress.hostName(rabbitmq.xxx.com)指向您的nginx-ingress负载均衡器的入口IP(如果是GCP)或CNAME(如果是AWS)。 DNS主机名(rabbitmq.xx.com)是您访问RabbitMQ服务的公共端点。
确保您的nginx-ingress控制器在群集中运行,以使入口正常工作。如果您不熟悉入口: - Official Ingress Docs - Nginx Ingress installation guide - Nginx Ingress helm chart
希望这可以帮助!
以上是关于使rabbitmq群集可公开访问的主要内容,如果未能解决你的问题,请参考以下文章
使 Sonatype Nexus 存储库可公开访问,以便能够下载带有 maven Central 等 URL 的工件