我正在使用这个 Helm 图在 k8s 集群上配置 rabbitmq:
https://github.com/helm/charts/tree/master/stable/rabbitmq

如何使集群可以通过公共(public)端点访问?目前,我有一个具有以下配置的集群。我可以通过给定的主机名(公共(public)端点,这很好)访问管理门户。但是,当我在管理门户集群内部检查时,可以通过内部 IP 和/或主机名访问,即:rabbit@rabbitmq-0.rabbitmq-headless.default.svc.cluster.localrabbit@<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 

希望这有帮助!


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!