Сделать кластер rabbitmq общедоступным - PullRequest
1 голос
/ 16 апреля 2019

Я использую эту таблицу управления для настройки rabbitmq на кластере k8s: 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"

Ответы [ 2 ]

1 голос
/ 16 апреля 2019

Меня не пробовали с Хелмом, но я собирал и развертывал в Kubernetes напрямую из .yaml файла конфигурации. Так что я следовал только за шаблоном шлема

Для публикации вашего сервиса 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 # IP-адрес, который вы получили от gcloud

service.port=5672

3, разверните и попробуйте подключиться к вашему серверу RabbitMQ

telnet 35.240.xxx.xxx 5672
Trying 35.240.xxx.xxx...
Connected to 149.185.xxx.xxx.bc.googleusercontent.com.
Escape character is '^]'.

Попался! Сработало

FYI:

Вот базовый шаблон, если вы хотите создать .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

Надеюсь, это поможет!

0 голосов
/ 16 апреля 2019

Из ваших переданных значений Helm я вижу, что вы настроили службу RabbitMQ для входа Nginx.

Вы должны создать DNS-запись с вашим ingress.hostName (rabbitmq.xxx.com), направленную на входящий IP-адрес (если GCP) или CNAME (если AWS) вашего балансировщика нагрузки nginx-ingress. Это имя хоста DNS (rabbitmq.xx.com) является вашей общедоступной конечной точкой для доступа к службе RabbitMQ.

Убедитесь, что контроллер nginx-ingress работает в кластере, чтобы входы работали. Если вы не знакомы с входами:
- Официальные документы для входа
- Руководство по установке Nginx Ingress
- Диаграмма рулевого Nginx

Надеюсь, это поможет!

...