У меня есть настройка кластера kubernetes с двумя настроенными службами.
Ссылки Service1 с Deployment1 и ссылки Service2 с Deployment2.
Deployment1 обслуживает модули, которые могут быть подключены только с использованием http.
Deployment2 обслуживает модули, к которым можно подключиться только с помощью https.
Используя kubectl port-forward и exe c, входящие в модули. Я знаю, что службы и развертывания реагируют должным образом, подключение внутренне между сервисами работает нормально.
У меня есть nginx входная настройка для разрешения внешних подключений к обеим службам. Службы должны быть подключены только по протоколу https, а любые входящие соединения с http должны быть перенаправлены на https. Вот входная настройка:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: master-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "true"
cert-manager.io/cluster-issuer: "letsencrypt-production"
spec:
tls:
- secretName: tls-secret-one
hosts:
- service1.domain.com
- service2.domain.com
rules:
- host: "service1.domain.com"
http:
paths:
- path: /
backend:
serviceName: service1
servicePort: 60001
- host: "service2.domain.com"
http:
paths:
- path: /
backend:
serviceName: service2
servicePort: 60002
Вот проблема. С помощью этого yaml я могу без проблем подключаться к service1 (бэкэнд http), но при подключении к service2 (бэкэнд https) получается неверный шлюз 502.
Если я добавлю аннотацию 'nginx .ingress.kubernetes. io / backend-protocol: "https" 'переключатели подключения. Я больше не могу подключиться к service1 (бэкэнд http), но могу подключиться к service2 (бэкэнд https)
Я могу понять, почему коммутатор делает это, но мой вопрос:
Можете ли вы установить бэкэнд-протокол для каждого правила в nginx -адрес?