многодоменная динамическая поддержка kubernetes c маршрутизация - PullRequest
0 голосов
/ 17 февраля 2020

Здравствуйте! Мне бы хотелось узнать, как динамически маршрутизировать несколько доменов в разные сервисы в Kubernetes. Я пытаюсь позволить моим пользователям добавлять домен в свои учетные записи и на основе этого маршрута домена указывать c сервис для рендеринга. их веб-страница, но с их доменом. Я не знаю, с чего начать, и хотел бы знать, возможно ли это с Kubernetes.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2020

Поскольку вы отметили вопрос в облаке Google, мой ответ направлен на облако Google.

Для типа трафика HTTP / HTTPS c вы можете создать входной ресурс и входной контроллер (nginx или GKE ingress) создаст HTTP Loadbalancer в облаке Google. Затем вы можете предоставить stati c IP для балансировщика нагрузки. Наконец, вы можете настроить свой домен в DNS для маршрутизации трафика c на этот IP-адрес c всякий раз, когда пользователь подключается к вашему домену.

Руководство о том, как создать входящую и предоставленную информацию c IP.

Руководство по настройке доменных имен с помощью stati c IP.

Полная инструкция по использованию nginx входного контроллера в Облако Google.

Ниже приведена архитектура nginx.

enter image description here

В случае использования нескольких доменов вы просто расширяете и настройте разные домены, используя одну и ту же конструкцию.

1 голос
/ 17 февраля 2020

при условии, что все эти сервисы основаны на HTTP (s), должно произойти 2 вещи:

  • должен быть создан ingress объект, который направляет данный домен к соответствующей услуге (см. https://kubernetes.io/docs/concepts/services-networking/ingress/)
  • надлежащие записи должны быть добавлены в конфигурацию DNS данного домена (вероятно, запись CNAME, указывающая на ваш кластер, но это зависит от того, все ли трафик c должен обрабатываться вашим сервисом или только его частью)
0 голосов
/ 17 февраля 2020

Вы можете создать входящий объект для маршрутизации трафика c на основе URL-адреса хоста.

 Ex:
 apiVersion: networking.k8s.io/v1beta1
 kind: Ingress
 metadata:
   name: name-virtual-host-ingress
 spec:
    rules:
    - host: foo.bar.com   
      http:
        paths:
        - backend:
            serviceName: service1
            servicePort: 80
    - host: bar.foo.com
      http:
        paths:
          - backend:
              serviceName: service2
              servicePort: 80
...