Kubernetes на AWS: сохранение IP-адреса клиента с помощью nginx-ingress + cert-manager - PullRequest
0 голосов
/ 20 декабря 2018

Мы настроили Kubernetes с nginx-ingress в сочетании с cert-manager для автоматического получения и использования SSL-сертификатов для входящих доменов, используя LetsEncrypt, используя это руководство: https://medium.com/@maninder.bindra/auto-provisioning-of-letsencrypt-tls-certificates-for-kubernetes-services-deployed-to-an-aks-52fd437b06b0. В результате каждый Ingress определяет свой собственный SSL-сертификат, которыйавтоматически предоставляется cert-manager.

. Все это работает хорошо, но из-за одной проблемы исходный IP-адрес трафика теряется для приложений в модулях.

Существует аннотация, которую рекомендуется использовать для применения к nginx-ingress службе контроллера service.beta.kubernetes.io/aws-load-balancer-backend-protocol: '*'.Это приводит к сохранению исходных IP-адресов.Однако это нарушает SSL:

An error occurred during a connection to {my.domain.com}. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG

У меня начинает кружиться голова.Кто-нибудь знает какие-либо подходы к этому (мне кажется, что это будет общим требованием)?

Входная конфигурация:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-http-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
spec:
  rules:
  - host: my.host.com
    http:
      paths:
      - path: /
        backend:
          serviceName: my-http-service
          servicePort: 80
  tls:
  - hosts:
    - "my.host.com"
    secretName: malcolmqa-tls

Ответы [ 2 ]

0 голосов
/ 29 июля 2019
helm upgrade my-nginx stable/nginx-ingress --set rbac.create=true --set controller.service.externalTrafficPolicy=Local
0 голосов
/ 28 декабря 2018

Как упомянуто в комментариях @dom_watson, добавление параметра controller.service.externalTrafficPolicy=Local в конфигурацию установки Helm решило проблему из-за того, что значение Local сохраняет IP-адрес исходного клиента, таким образом сетевой трафик достигнет целевого Pod в кластере Kubernetes.Более подробную информацию вы найдете в официальных правилах Kubernetes .

...