Я использую незащищенный Kubernetes с nginx входом и metallb и некоторыми именами хостов, сопоставленными с внешним ip, предоставленным metallb.
Я создал развертывание nginx, выставил его через сервис и создал вход с именем хоста. Я создал с openssl самозаверяющий сертификат:
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout tls.key -out tls.crt -subj "/CN=fake.example.com" -days 365
Затем создал секрет в правильном пространстве имен:
kubectl -n demo create secret tls fake-self-secret --cert=tls.crt --key=tls.key
Затем создал вход:
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
name: demo-ingress
namespace: demo
spec:
rules:
- host: fake.example.com
http:
paths:
- backend:
serviceName: nginx
servicePort: 80
path: /
tls:
- hosts:
- fake.example.com
secretName: fake-self-secret
Http работает (из-за ложной аннотации ssl-redirect), https возвращает SSL_ERROR_RX_RECORD_TOO_LONG, в журнале входа контроллера nginx я вижу что-то вроде "\ x16 \ x03 \ x01 \ x00 \ xA8 \ x01 \ x00 \ x00 \ xA4 \ x03 \ x03 * \ x22 \ xA8 \ x8F \ x07q \ xAD \ x98 \ xC1! \
openssl s_client -connect fake.example.com:443 -servername fake.example.com -crlf
140027703674768:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
Nginx версия ингресс-контроллера равна 0,30, при конфигурации по умолчанию ssl-протоколы включены в configmap: TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 Любая помощь / новые идеи приветствуются :)