Как перенаправить трафик с домена в route53 на модуль, используя вход nginx? - PullRequest
1 голос
/ 16 апреля 2019

Я развернул графану с помощью helm, и теперь он работает в модуле. Я могу получить к нему доступ, если я подключу прокси-порт 3000 к своему ноутбуку. Я пытаюсь указать домен grafana.something.com на этот модуль, чтобы я мог получить к нему внешний доступ. У меня есть домен в route53, который я могу подключить к балансировщику нагрузки (Application Load Balancer, Network Load Balancer, Classic Load Balancer). Этот балансировщик нагрузки может перенаправлять трафик с порта 80 на порт 80 группе узлов (оставим порт 443 на потом). Я действительно борюсь с этим. Я уверен, что чего-то не хватает, но я не знаю, что.

Базовая диаграмма выглядит так, как я себе представляю.

Интернет
↓↓
Домен в route53 (grafana.something.com)
↓↓
Балансировщик нагрузки от 80 до 80 (Балансировщик нагрузки приложений, Балансировщик сетевой нагрузки, Классический балансировщик нагрузки) Я предполагаю, что LB будет перенаправлять трафик на порт 80 на указанные ниже контроллеры входа (созданные при развертывании Grafana с использованием Helm)
↓↓
Группа рабочих узлов ЭКС
↓↓
Входной ресурс ?????
↓↓
Ingress Controllers - создается при развертывании Grafana с использованием Helm в тесте пространства имен.

kubectl get svc grafana -n test

grafana Type:ClusterIP ClusterIP:10.x.x.x Port:80/TCP

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 
  labels:
    app: grafana
    chart: grafana-
    heritage: Tiller
    release: grafana-release
  name: grafana
  namespace: test
  resourceVersion: "xxxx"
  selfLink: 
  uid: 
spec:
  clusterIP: 10.x.x.x
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: grafana
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

↓↓
Pod Grafana прослушивает порт 3000. Я могу успешно получить к нему доступ после прокси на порт моего ноутбука 3000.

1 Ответ

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

Учитывая, что у вас не установлен Ingress Controller , если в вашем кластере K8S настроен облачный провайдер aws, вы можете следовать этому руководству для установки Входной контроллер Nginx, использующий шлем.

К концу руководства у вас должен быть создан балансировщик нагрузки для вашего входного контроллера, укажите на него запись Route53 и создайте Ingress, который использует ваш сервис grafana. Пример:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/app-root: /
    nginx.ingress.kubernetes.io/enable-access-log: "true"
  name: grafana-ingress
  namespace: test
spec:
  rules:
  - host: grafana.something.com
    http:
      paths:
      - backend:
          serviceName: grafana
          servicePort: 80
        path: /

Окончательный путь трафика будет:

Route53 -> ELB -> Ingress -> Service -> Pods
...