Невозможно настроить kubernetes ingress-nginx

У меня проблемы с настройкой kubernetes ingress-nginx для внешнего доступа к моему приложению. Вот шаги, которые я сделал:

Развертывание приложения:

  1. Созданное пространство имен под названием ingress
  2. Развернутый ресурс набора statefulset, который описывает мое приложение (назовем его testapp) во входном пространстве имен
  3. Создана служба ClusterIP, которая делает мое приложение доступным в кластере kube (testapp) во входном пространстве имен.

Настройка Ingress nginx:

  1. Создан контроллер ingress-nginx в пространстве имен ingress
  2. Создан сервис ingress-nginx в пространстве имен ingress
ingress-nginx          NodePort    10.102.152.58   <none>      80:30692/TCP,443:32297/TCP   6d2h
  1. Создан тип входящего ресурса в пространстве имен входящего трафика, который выглядит следующим образом
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target:  /
  name: testappingress
spec:
  rules:
  - host: testapp.k8s.myorg.io
    http:
      paths:
      - backend:
          serviceName: testapp
          servicePort: 80
        path: /

Если я описываю входящий ресурс, я получаю следующее:

ubuntu@ip-10-0-20-81:~/ingress$ kubectl describe ingress testappingress -n ingress
Name:             testappingress
Namespace:        ingress
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                      Path  Backends
  ----                      ----  --------
  testapp.k8s.myorg.io
                            /   testapp:80 (<none>)
Annotations:
  kubernetes.io/ingress.class:                 nginx
  nginx.ingress.kubernetes.io/rewrite-target:  /
Events:
  Type    Reason  Age   From                      Message
  ----    ------  ----  ----                      -------
  Normal  CREATE  15m   nginx-ingress-controller  Ingress ingress/testappingress
  Normal  CREATE  15m   nginx-ingress-controller  Ingress ingress/testappingress
  Normal  UPDATE  14m   nginx-ingress-controller  Ingress ingress/testappingress
  Normal  UPDATE  14m   nginx-ingress-controller  Ingress ingress/testappingress

Если я проверю журналы с контроллера ingress-nginx, я получаю следующее:

I0317 15:06:00.029706       6 event.go:221] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"ingress", Name:"testappingress", UID:"2c8db73f-48c6-11e9-ae46-12bdb9ac3010", APIVersion:"extensions/v1beta1", ResourceVersion:"1185441", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress ingress/testappingress
I0317 15:06:00.039419       6 controller.go:177] Configuration changes detected, backend reload required.
I0317 15:06:00.508433       6 controller.go:195] Backend successfully reloaded.
I0317 15:06:00.568448       6 controller.go:212] Dynamic reconfiguration succeeded.

Классическая настройка Route53 / ELB:

  1. Создан классический ELB, который указывает на экземпляры кластера kubernetes и предоставляет порт 80
  2. Создана запись Route53 в существующей зоне хостинга (CNAME), которая указывает на классический ELB сверху.
  3. Настройте проверку работоспособности на ELB, чтобы указать на службу ingress-nginx NodePort на порту: 30692, который работает.

Когда я делаю:

curl http://testapp.k8s.myorg.io

Я не получаю ответа.

Вот что я пытался решить проблему:

If I do:

telnet testapp.k8s.myorg.io 80

Он будет преобразован в мое классическое DNS-имя ELB

Если я перейду в любой контейнер / модуль, который существует внутри входящего пространства имен, и сделаю следующее:

curl http://testapp 

Получу соответствующий ответ.

Из этого могу сделать следующие выводы:

  1. Приложение правильно развернуто и доступно через службу, которая предоставляется (ClusterIP) изнутри кластера kubernetes.

  2. DNS правильно разрешается в ELB

  3. HealthCheck на ELB работает

Не знаете, что еще я могу сделать, чтобы решить, почему я не могу получить доступ к своей службе через Ingress?


person Bakir Jusufbegovic    schedule 17.03.2019    source источник
comment
Можете ли вы проверить, доступен ли ваш экземпляр ec2 для elb в консоли aws?   -  person hd.deman    schedule 17.03.2019
comment
вы можете свернуть свое приложение из узла?   -  person A_Suh    schedule 18.03.2019


Ответы (2)


Это была ошибка с моей стороны. Недостающая часть была следующей:

На ELB я неправильно выставил слушателей. Итак, в основном, что было необходимо, так это указать порт 80/443 от ELB на NodePorts of Ingress Service.

ingress-nginx   ingress-nginx          NodePort    10.96.249.168    <none>        80:32327/TCP,443:30313/TCP   25h
person Bakir Jusufbegovic    schedule 20.03.2019

Попробуйте настроить входящий контроллер nginx с помощью этого

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

Это создаст входной контроллер nginx с именем пространства имен ingress-nginx, и вы сможете протестировать свой входящий файл-манифест.

person Harsh Manvar    schedule 18.03.2019