Kubernetes Load Balancer EKS Проблемы терминации SSL - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь настроить SSL-завершение для моего балансировщика нагрузки EKS в Apache развертывании Openwhisk

kind: Service
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <arn>
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https-api
  creationTimestamp: "2020-03-17T19:06:28Z"
  labels:
    app: owdev-openwhisk
    chart: openwhisk-0.2.1
    heritage: Helm
    name: owdev-nginx
    release: owdev
  name: owdev-nginx
  namespace: openwhisk
  resourceVersion: "43288"
  selfLink: /api/v1/namespaces/openwhisk/services/owdev-nginx
  uid: 679858cf-6882-11ea-8746-02f532cfa957
spec:
  clusterIP: <ip>
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 31858
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https-api
    nodePort: 32653
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    name: owdev-nginx
  sessionAffinity: None
  type: LoadBalancer

При развертывании служба выглядит следующим образом. С этой конфигурацией, когда я посещаю конечную точку в моем браузере, я получаю:

400 Bad Request
The plain HTTP request was sent to HTTPS port

, но внутренне:

curl -k -v https://owdev-nginx

работает нормально.

Если я затем поменяю targetPort https-api на http, внешняя конечная точка работает, но внутренняя имеет похожую ошибку.

Любые предложения относительно того, что нужно настроить, чтобы получить как внешнюю, так и внутреннюю (сертификат игнорируется) запросы, проходящие через него?

Я понимаю, что это похоже на раздел «Общие ловушки»: https://kubernetes-on-aws.readthedocs.io/en/latest/user-guide/tls-termination.html Есть ли способ обойти это?

1 Ответ

0 голосов
/ 18 марта 2020

Причина, по которой вы видите эту ошибку, связана с легко решаемой проблемой конфигурации. Когда клиент пытается получить доступ к вашему сайту через HTTP , через порт 80 , запрос перенаправляется на HTTPS , через порт 443 . Однако nginx ожидает поступления исходного запроса с использованием SSL через порт 443 .

Пожалуйста, дайте мне знать, если это поможет.

Аналогичная проблема: плохой запрос .

...