GKE / Istio: внешний мир не может подключиться к сервису в частном кластере - PullRequest
0 голосов
/ 20 февраля 2019

Я создал частный кластер GKE с Istio через пользовательский интерфейс Cloud Console.Кластер настроен с помощью VPC Peering, чтобы иметь возможность подключиться к другому частному кластеру GKE в другом облачном проекте Google.

Я создал развертывание (называемое website) со службой в Куберне в * 1004.* пространство имен.Моя цель - показать эту услугу внешнему миру вместе с Istio, используя прокси Envoy.Я создал необходимые VirtualService и Gateway для этого, следуя этому руководству .

При запуске "kubectl exec ..." для доступа к модулю в частном кластереЯ могу успешно подключиться к внутреннему IP-адресу службы website и увидеть вывод этой службы с помощью curl.

Я настроил шлюз NAT, чтобы можно было подключать модули частного кластера.в интернет.Я подтвердил это с помощью curl -на разных сторонних веб-страницах из модуля website.

Однако я не могу подключиться к сервису website извне, используя External IP услуги istio-ingressgateway, как указано в руководстве выше.Вместо этого curl, то есть External IP приводит к тайм-ауту.

Я поместил полную конфигурацию YAML для всех связанных ресурсов в частном Gist, здесь: https://gist.github.com/marceldegraaf/0f36ca817a8dba45ac97bf6b310ca282

Я задаюсь вопросом, не упускаю ли я что-то в моей конфигурации здесь, или мой вариант использования фактически невозможен?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

После проверки всех параметров единственный способ получить доступ к частному кластеру GKE с Istio - это использовать Cloud NAT .

, поскольку главный узел в GKE являетсяУправляемый сервис, существуют текущие ограничения при использовании Istio с частным кластером.Единственный обходной путь, который мог бы выполнить ваш вариант использования, - это использовать Cloud NAT.Я также приложил статью о том, как начать использовать Cloud NAT здесь .

0 голосов
/ 20 февраля 2019

Глядя на ваш гист, я подозреваю, что проблема заключается в соединении Gateway с istio-ingressgateway.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: website-gateway
  namespace: staging
  labels:
    version: v1
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - "*"

В частности, я не уверен, что часть selector верна.

Вы должны иметь возможность сделать что-то вроде
kubectl describe po -n istio-system istio-ingressgateway-rrrrrr-pppp
, чтобы узнать, что селектор пытается сопоставить в модуле Istio Ingress Gateway.

...