Получение 502 Bad Gateway nginx/1.13.9 для моего углового приложения в k8

Я получаю 502 Bad Gateway nginx/1.13.9 для моего углового приложения при доступе в браузере в k8. Мой сервис и вход, как показано ниже.

Журналы модулей приложений Angular показывают, что все успешно, и на самом деле переадресация портов работает нормально. Этот же образ также отлично работает на моей локальной машине с докером.

Из журналов k8s я мог видеть это:

[ошибка] 1534#1534: *32272457 SSL_do_handshake() не удалось (SSL: ошибка: 1408F10B: подпрограммы SSL: ssl3_get_record: неверный номер версии) при квитировании SSL с восходящим потоком

Обслуживание:


Name:              test-portal
Namespace:         testproject
Labels:            app=test-portal
                   chart=test-portal-1.0.0
                   environment=dev
                   heritage=Tiller
                   release=test-portal
                   version=dev
Annotations:       <none>
Selector:          app=test-portal,release=test-portal
Type:              ClusterIP
IP:                x.x.x.x
Port:              <unset>  80/TCP
TargetPort:        4200/TCP
Endpoints:         x.x.x.x:4200
Session Affinity:  None
Events:            <none>

Вход:


Name:             test-portal
Namespace:        testproject
Address:
Default backend:  default-http-backend:80 (<none>)
TLS:
  SNI routes test-portal.us-west-2.xxxxx.xxxxxx.delivery
Rules:
  Host                                                       Path  Backends
  ----                                                       ----  --------
  test-portal.us-west-2.xxxxx.xxxxxx.delivery
                                                             /  test-portal:80 (<none>)
Annotations:
  secure-backends:  true
  ssl-redirect:     true
Events:             <none>

Карта входящей конфигурации


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/secure-backends: "false"
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"ingress.kubernetes.io/secure-backends":"false","kubernetes.io/ingress.class":"nginx"},"labels":{"app":"test-portal","chart":"test-portal-1.0.0","environment":"dev","heritage":"test-portal","release":"Helm","version":"1.0.0"},"name":"test-portal","namespace":"testproject"},"spec":{"rules":[{"host":"test-portal.us-west-2.xxxx.xxxxxxxxx.delivery","http":{"paths":[{"backend":{"serviceName":"test-portal","servicePort":80},"path":"/"}]}}],"tls":[{"hosts":["test-portal.us-west-2.xxxx.xxxxxxxxx.delivery"]}]}}
    kubernetes.io/ingress.class: nginx
  creationTimestamp: 2020-01-08T11:24:18Z
  generation: 1
  labels:
    app: test-portal
    chart: test-portal-1.0.0
    environment: dev
    heritage: test-portal
    release: Helm
    version: 1.0.0
  name: test-portal
  namespace: testproject
  resourceVersion: "2379156945"
  selfLink: /apis/extensions/v1beta1/namespaces/testproject/ingresses/test-portal
  uid: 6925819b-3209-11ea-80fb-02fb0c9060d8
spec:
  rules:
  - host: test-portal.us-west-2.xxxx.xxxxxxxxx.delivery
    http:
      paths:
      - backend:
          serviceName: test-portal
          servicePort: 80
        path: /
  tls:
  - hosts:
    - test-portal.us-west-2.xxxx.xxxxxxxxx.delivery
status:
  loadBalancer:
    ingress:
    - {}

person Karthik Reddy    schedule 07.01.2020    source источник
comment
Бэкэнд-модуль работает?   -  person Shashank V    schedule 07.01.2020
comment
Да, он работает   -  person Karthik Reddy    schedule 07.01.2020
comment
это входной контроллер Nginx или что-то еще?   -  person Arghya Sadhu    schedule 07.01.2020
comment
это только нгинкс   -  person Karthik Reddy    schedule 07.01.2020
comment
Пожалуйста, не могли бы вы поделиться своим полным журналом и kubectl get ingress test-portal -o yaml?   -  person Mark Watney    schedule 08.01.2020
comment
Пожалуйста, также добавьте выходные данные для configmap для этого входного контроллера.   -  person Mark Watney    schedule 08.01.2020
comment
извините, @mWatney, не могли бы вы дать мне команду   -  person Karthik Reddy    schedule 08.01.2020
comment
@mWatney добавлено в исходный вопрос   -  person Karthik Reddy    schedule 08.01.2020
comment
Какой тип и версию контроллера вы используете. Как вы настроили наш контроллер (пожалуйста, дайте ссылки на интернет-ресурсы). Отправьте выходные данные для kubectl get pods и service. Также проверьте, работает ли ваше приложение, обращаясь к нему непосредственно в модуле с помощью другого модуля (например, busybox) из сети kubernetes. Если это работает, попробуйте удалить tls из настроек входа и проверьте, как это работает.   -  person Mark Watney    schedule 14.01.2020


Ответы (1)


Кажется, вы используете сервер angular dev на порту 4200 в своей капсуле. Приложение angular обслуживается с использованием http, а не https, поэтому вы должны настроить вход так, чтобы он не использовал https (secure-backends: false) для взаимодействия с серверной частью.

Кроме того, сервер разработки angular не должен использоваться для обслуживания продукта. Создайте образ контейнера с помощью сборки angular prod, чтобы значительно повысить производительность.

person Thomas    schedule 07.01.2020
comment
Я изменил secure-backends: false, но не повезло. Все та же ошибка. - person Karthik Reddy; 08.01.2020
comment
Пожалуйста, используйте kubectl get ingresses,svc,pods,ep -n testproject -o wide, kubectl describe ingress -n testproject. Пожалуйста, начните без завершения tls (при условии, что вы пытаетесь настроить завершение tls на входном контроллере), убедитесь, что ваш сервер доступен из-за пределов кластера, а затем попробуйте настроить завершение tls на входном контроллере. Предоставьте дополнительную информацию о том, как вы настроили контроллер входящего трафика и используемую версию. - person Mark; 16.01.2020