我正在使用这个 Helm 图在 k8s 集群上配置 rabbitmq:
https://github.com/helm/charts/tree/master/stable/rabbitmq
如何使集群可以通过公共(public)端点访问?目前,我有一个具有以下配置的集群。我可以通过给定的主机名(公共(public)端点,这很好)访问管理门户。但是,当我在管理门户集群内部检查时,可以通过内部 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
希望这有帮助!




