Посланник Istio сбрасывает запросы с заголовком Host - PullRequest
0 голосов
/ 07 ноября 2018

У меня возникла проблема с попыткой заставить Istio работать на моем кластере. Моя инфраструктура выглядит так:

У меня есть Magento Store с лаком в качестве переднего кеша. Он работал до установки istio. Я уже включил инъекцию посланника. Varnish развернут в модуле и имеет собственную службу перенаправления, не кэшированную в службу magento.

Проблема возникает, когда я пытаюсь скручиваться из лака в пурпурный.

Если я закручиваю сервис magento из лака, я получаю перенаправление на URL magento (что является ожидаемым поведением)

root@varnish-6468d5958d-dvxhx:/# curl -v store-es    
* Rebuilt URL to: store-es/
*   Trying 10.32.97.229...
* TCP_NODELAY set
* Connected to store-es (10.32.97.229) port 80 (#0)
> GET / HTTP/1.1
> Host: store-es
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< server: envoy
< date: Wed, 07 Nov 2018 11:08:47 GMT
< content-type: text/html
< content-length: 185
< location: https://store-sta.xxxxx.yyy/
< myheader: store-es-6484d46d66-952xj
< x-envoy-upstream-service-time: 4
< 
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.13.8</center>
</body>
</html>
* Curl_http_done: called premature == 0
* Connection #0 to host store-es left intact

Но когда я пытаюсь сделать то же самое, но используя заголовок Host для пропуска перенаправления magento, я получаю 404:

root@varnish-6468d5958d-dvxhx:/# curl -v -H "Host: store-sta.xxxxx.yyy" store-es    
* Rebuilt URL to: store-es/
*   Trying 10.32.97.229...
* TCP_NODELAY set
* Connected to store-es (10.32.97.229) port 80 (#0)
> GET / HTTP/1.1
> Host: store-sta.xxxxx.yyy
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 404 Not Found
< date: Wed, 07 Nov 2018 11:11:59 GMT
< server: envoy
< content-length: 0
< 
* Curl_http_done: called premature == 0
* Connection #0 to host store-es left intact

Я проверил журналы и запросы, в которых заголовок хоста никогда не поступает в службу magento (в моем примере это store-es). И когда я проверяю, что журнал посланника лака возвращает 404:

[2018-11-07T11:11:50.548Z] "GET /HTTP/1.1" 404 NR 0 0 0 - "-" "curl/7.52.1" "e754b17f-ae2e-4734-beb4-f7a2d6e412da" "store-sta.xxxxx.yyy" "-" - - 10.32.97.229:80 10.32.67.5:45540

Знаете ли вы, почему это происходит? Почему заголовок хоста возвращает 404 без запроса службы magento?

Я также хочу отметить, что magento работает без лака и может подключаться к redis (в том же кластере) и mysql (вне кластера), поэтому я отказался от проблемы magento.

1 Ответ

0 голосов
/ 05 декабря 2018

У меня есть похожая проблема, когда заголовок хоста, обращающийся к посланнику, является внешним доменом, который не совпадает с внутренним именем записи службы (это никогда не будет). Поскольку он не совпадает, он получает 404, я думаю, что должен быть способ настроить это с VirtualService, но пока не уверен, как.

...