У меня проблемы с настройкой kubernetes ingress-nginx для внешней демонстрации моего приложения. Вот шаги, которые я сделал:
Развертывание приложения:
- Создано пространство имен с именем ingress
- Развернутый ресурс setfulset set, описывающий мое приложение (назовем его testapp) во входном пространстве имен
- Создан сервис ClusterIP, который делает мое приложение доступным в кластере kube.
(testapp) во входном пространстве имен
Настройка входа nginx:
- Создан контроллер ingress-nginx для входа в пространство имен
- Создан сервис ingress-nginx для входа в пространство имен
ingress-nginx NodePort 10.102.152.58 <none> 80:30692/TCP,443:32297/TCP 6d2h
- Создан тип входного ресурса в пространстве имен входа, который выглядит следующим образом
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:
- Создан ELB classic, который указывает на экземпляры кластера kubernetes и предоставляет порт 80
- Создана запись Route53 в существующей размещенной зоне (CNAME), которая указывает на ELB classic сверху.
- Настройка проверки работоспособности на ELB для указания на службу NodePort ingress-nginx на порту: 30692 , которая работает.
Когда я делаю:
curl http://testapp.k8s.myorg.io
Я не получил никакого ответа.
Вот что я пытался решить проблему:
Если я это сделаю:
telnet testapp.k8s.myorg.io 80
Будет разрешено мое классическое DNS-имя ELB
Если я зайду в любой контейнер / модуль, который существует во входном пространстве имен, и сделаю следующее:
curl http://testapp
Я получу соответствующий ответ.
Из этого я могу сделать вывод:
Приложение правильно развернуто и доступно через предоставляемую службу (ClusterIP) изнутри кластера kubernetes
DNS правильно разрешается в ELB
HealthCheck на ELB работает
Не уверен, что еще я могу сделать, чтобы выяснить причину, по которой я не могу получить доступ к своему сервису через Ingress?