Невозможно настроить kubernetes ingress-nginx - PullRequest
0 голосов
/ 17 марта 2019

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

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

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

Настройка входа nginx:

  1. Создан контроллер ingress-nginx для входа в пространство имен
  2. Создан сервис ingress-nginx для входа в пространство имен
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 classic setup:

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

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

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

Я не получил никакого ответа.

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

Если я это сделаю:

telnet testapp.k8s.myorg.io 80

Будет разрешено мое классическое DNS-имя ELB

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

curl http://testapp 

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 20 марта 2019

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

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

ingress-nginx   ingress-nginx          NodePort    10.96.249.168    <none>        80:32327/TCP,443:30313/TCP   25h
0 голосов
/ 18 марта 2019

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

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

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

...