Мы настроили 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