#kubernetes #openshift #aws-api-gateway #istio
Вопрос:
Я пытаюсь развернуть угловое приложение на Openshift с Istio в качестве сервисной сетки. Сервис yaml:
- apiVersion: v1
kind: Service
metadata:
labels:
app: angularapp
service: angularapp
version: v1
name: angularapp
spec:
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
selector:
name: angularapp
Пока все работает с http-соединением. Чтобы перейти на https-соединение, я настроил маршрут istio-ingressgateway, предоставленный установкой оператора сети Red Hat Openshift, для использования сквозной передачи
spec:
host: istio-ingressgateway-istio-system.apps.xxx.xx.xxxxxxx.opentlc.com
tls:
insecureEdgeTerminationPolicy: None
termination: passthrough
и ресурс шлюза istio:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: testnamespace-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: "router-certs"
hosts:
- "*"
с помощью VirtualService, указывающего на порт 8080 приложения angular:
route:
- destination:
host: angularapp
port:
number: 8080
Вопрос: Конфигурация TLS работает, и открытый URL-адрес шлюза входа istio имеет соединение https. Однако шлюз API выдает эту ошибку при отправке запроса по указанному URL-адресу istio:
Выполнение не удалось из-за ошибки конфигурации: Непризнанное сообщение SSL, соединение с открытым текстом?
Странно то, что это происходит только в половине случаев, другая половина работает, даже после очистки кэша браузера после каждого запуска. Обратите внимание, что только URL-адрес шлюза входа istio имеет соединение https, в то время как приложение angular как автономная служба имеет только http.
Извините за многословный вопрос и надеюсь получить здесь некоторую помощь. Спасибо!
Ответ №1:
При сквозном завершении зашифрованный трафик отправляется прямо в пункт назначения без маршрутизатора, обеспечивающего завершение TLS. Поэтому ключ или сертификат не требуются.
Поскольку ваша серверная служба является http, вы должны прервать SSL на границе с помощью
termination: edge
Ссылка: https://docs.openshift.com/container-platform/3.9/architecture/networking/routes.html
Комментарии:
1. Привет, Ракеш, я попытался переключить маршрут шлюза входа istio на edge, и я вообще не могу получить доступ к URL-адресу со следующей ошибкой: {«сообщение»: «Сетевая ошибка при подключении к конечной точке»}
Ответ №2:
Решил эту проблему, добавив сегмент:
port:
targetPort: https
tls:
termination: passthrough
для конфигурации маршрута входа istio, поскольку конфигурация службы входа istio по умолчанию прослушивает имя порта: https
name: https
port: 443
protocol: TCP
targetPort: 8080