Pod не может свернуть внешний сайт после добавления выходного шлюза istio - PullRequest
0 голосов
/ 19 октября 2018

Я слежу за документом Istio (https://istio.io/docs/examples/advanced-egress/egress-gateway/) для настройки выходного шлюза. Полученные результаты отличаются от того, что описывает документ, и мне интересно, как я могу это исправить.

У меня есть простой докер-контейнер с добавленной коляской. После того, как я применил конфигурацию шлюза для google.com, аналогичную той, которая предоставлена ​​в документе:

cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: google
spec:
  hosts:
  - google.com
  ports:
  - number: 80
    name: http-port
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
EOF

Я все еще не могу добраться до него из контейнера:

$ kubectl exec -it $SOURCE_POD -c $CONTAINER_NAME -- curl -sL -o /dev/null -D - http://google.com
HTTP/1.1 301 Moved Permanently
location: http://www.google.com/
content-type: text/html; charset=UTF-8
... 

HTTP/1.1 404 Not Found
date: Thu, 18 Oct 2018 22:55:57 GMT
server: envoy
content-length: 0

однако, curl из istio-proxy работает:

$ kubectl exec -it $SOURCE_POD -c istio-proxy -- curl -sL -o /dev/null -D - http://google.com
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
...

HTTP/1.1 200 OK
Date: Thu, 18 Oct 2018 22:55:43 GMT
Expires: -1
...

Проверено, что шлюз существует:

$ kubectl describe serviceentry/google
Name:         google
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"networking.istio.io/v1alpha3","kind":"ServiceEntry","metadata":{"annotations":{},"name":"google","namespace":"default"},"sp...
API Version:  networking.istio.io/v1alpha3
Kind:         ServiceEntry
Metadata:
  Cluster Name:
  Creation Timestamp:  2018-10-18T22:36:34Z
  Generation:          1
  Resource Version:    2569394
  Self Link:           /apis/networking.istio.io/v1alpha3/namespaces/default/serviceentries/google
  UID:                 4482d584-...
Spec:
  Hosts:
    google.com
  Ports:
    Name:      http-port
    Number:    80
    Protocol:  HTTP
    Name:      https
    Number:    443
    Protocol:  HTTPS
  Resolution:  DNS
Events:        <none>

Есть идеи?

Ответы [ 2 ]

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

Вы можете просто добавить подстановочный знак, если не хотите с этим справляться.с HTTP это работает.Вы можете попробовать что-то вроде * .google.com, и теперь вы можете использовать все сервисы Google без блокировки в будущем.

0 голосов
/ 19 октября 2018

Ваша проблема в том, что запрос curl получает перенаправление 301 на www.google.com, но ваш ServiceEntry выставил только google.com.Вы можете исправить это, добавив www.google.com в качестве другого хоста в ServiceEntry, например:

cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: google
spec:
  hosts:
  - google.com
  - www.google.com
  ports:
  - number: 80
    name: http-port
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
EOF
...