Входной ресурс против входного контроллера NGINX в Куберне - PullRequest
0 голосов
/ 28 февраля 2019

Я устанавливаю входной контроллер NGINX на AWS EKS.

Я просмотрел ресурс Ingress на k8s, и очень полезно понять, что мы сопоставляем LB-порты с сервисными портами k8s, например, с помощью файла def.Я установил контроллер nginx до необходимого шага .Затем учебник направляет меня на создание ресурса ingress .

https://kubernetes.io/docs/tasks/access-application-cluster/ingress-minikube/#create-an-ingress-resource

Но ниже он подсказывает мне применить конфигурацию service .Я запутался с этим специфическим для провайдера шагом.Что отличается с точки зрения определения kind, version, spec (Сервис или Вход).

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/aws/service-l7.yaml

Я что-то здесь упускаю?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Эта концепция поначалу немного сложна, чтобы обернуть голову.Входной контроллер Nginx - это не что иное, как сервис типа LoadBalancer.Что значит быть публичной конечной точкой для ваших услуг.IP-адрес, назначенный этой службе, может направлять трафик нескольким службам.Таким образом, вы можете пойти дальше и определить свои сервисы как ClusterIP и выставить их через входной контроллер Nginx.

Вот схема, чтобы немного лучше представить концепцию: nginx-ingress источник изображения

В этой заметке, если вы приобрели статический IP-адрес для своего сервиса, вам необходимо назначить его на свой входной контроллер Nginx.Так что же такое вход?Ingress - это, по сути, способ сообщить своему входящему контроллеру Nginx, как направлять трафик, поступающий на ваш публичный IP-адрес LB.Итак, как теперь понятно, у вас есть один сервис loadbalancer и несколько входных ресурсов.Каждый вход соответствует одному сервису, который может меняться в зависимости от того, как вы определяете свои сервисы, но вы понимаете, что это такое.

Давайте разберемся с кодом yaml.Как уже упоминалось, вам понадобится служба контроллера входа независимо от того, сколько ресурсов у вас есть.Итак, примените этот код к вашему кластеру EKS.

Теперь давайте посмотрим, как вы можете представить свой модуль миру через Nginx-вход.Скажем, у вас есть wordpress развертывание.Вы можете определить простую службу ClusterIP для этого приложения:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: ${WORDPRESS_APP}
  namespace: ${NAMESPACE}
  name: ${WORDPRESS_APP}
spec:
  type: ClusterIP
  ports:
  - port: 9000
    targetPort: 9000
    name: ${WORDPRESS_APP}
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    targetPort: 443
    protocol: TCP
    name: https
  selector:
    app: ${WORDPRESS_APP}

Это создаст службу для вашего приложения wordpress, которая недоступна за пределами кластера.Теперь вы можете создать входной ресурс для предоставления этой услуги:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: ${NAMESPACE}
  name: ${INGRESS_NAME}
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - ${URL}
    secretName: ${TLS_SECRET}
  rules:
  - host: ${URL}
    http:
      paths:
      - path: /
        backend:
          serviceName: ${WORDPRESS_APP}
          servicePort: 80

Теперь, если вы запустите kubectl get svc, вы увидите следующее:

NAME                      TYPE          CLUSTER-IP      EXTERNAL-IP    PORT(S)                   AGE
wordpress                 ClusterIP     10.23.XXX.XX   <none>         9000/TCP,80/TCP,443/TCP   1m
nginx-ingress-controller  LoadBalancer  10.23.XXX.XX    XX.XX.XXX.XXX  80:X/TCP,443:X/TCP   1m

Теперь вы можете получить доступ к вашему wordpress служба через определенный URL-адрес, который сопоставляется общедоступному IP-адресу вашего LB-сервиса входного контроллера.

0 голосов
/ 28 февраля 2019

входной контроллер NGINX - это фактический процесс, который формирует ваш трафик к вашим услугам.в основном, как установка nginx или loadbalancer на традиционном vm.Входящий ресурс (вид: Ingress) больше похож на nginx-config на вашей старой виртуальной машине, где вы определяете сопоставления хоста, пути и прокси.

...