Как разделить внутренние и внешние нагрузки с помощью Istio Ingress? - PullRequest
0 голосов
/ 15 февраля 2020

В моем кластере Kubernetes я хотел бы разделить доступ к внутренним и внешним приложениям. В моем примере ниже у меня app1 и app2 оба доступны для inte rnet, но хотелось бы, чтобы app1 только для inte rnet и app2 были доступны только для пользователей во внутреннем vnet.

My initial Я подумал о том, чтобы просто создать новую службу (синий ящик) и использовать атрибут «internal = true», и мой провайдер облачных услуг создает внутренний IP-адрес, и я в порядке. Проблема заключается в том, что шлюз указывает на развертывание (pods), поэтому создается впечатление, что для создания внутреннего входа мне нужно скопировать все 3 синих прямоугольника.

Есть ли простой путь к t ie в новом сервисе и шлюз без нового развертывания (синие ящики) или, может быть, ограничить внешний доступ с помощью политики?

enter image description here

1 Ответ

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

На основании моих знаний вы можете создать виртуальный сервис , чтобы сделать это

Зарезервированное слово me sh используется для обозначения всех колясок в me sh , Если это поле опущено, будет использоваться шлюз по умолчанию (me sh), который будет применять правило ко всем коляскам в me sh. Если указан список имен шлюзов, правила будут применяться только к шлюзовам. Чтобы применить правила и к шлюзам, и к коляскам, укажите меня sh в качестве одного из имен шлюзов.

Вы можете проверить мой другой ответ на stackoverflow , там есть полное воспроизведение кто-то проблема, когда я сделал виртуальный сервис со шлюзом для доступа (например, просто завиток) извне, и если вы хотите сделать это только внутри меня sh просто удалите этот шлюз и оставьте только мне sh один , как в примере ниже.

Специально для виртуального сервиса

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: nginxvirt
spec:
  gateways:
  - mesh #inside cluster
  hosts:
  - nginx.default.svc.cluster.local #inside cluster
  http:
  - name: match-myuid
    match:
    - uri:
        prefix: /
    rewrite:
      uri: /
    route:
    - destination:
        host: nginx.default.svc.cluster.local
        port:
          number: 80

И некоторые внешние и внутренние тесты

Внешний

  • с дополнительным шлюзом для разрешения внешнего трафика c

    curl -v -H "host: nginx .com" loadbalancer_istio_ingress_gateway_ip /

    HTTP / 1.1 200 OK

  • без дополнительного шлюза для разрешения внешнего трафика c, просто me sh one

    curl -v -H " хост: nginx .com "loadbalancer_istio_ingress_gateway_ip /

    HTTP / 1.1 404 Не найдено

Внутренний

Created some basic ubuntu pod for tests

kubectl exec -ti ubu1 -- /bin/bash
  • Со мной sh шлюз

    curl -v nginx /

    HTTP / 1.1 200 OK

  • Без меня sh шлюз

    curl -v nginx /

    HTTP / 1.1 404 Не найдено

Исходя из того, что вы можете использовать шлюз "me sh", который будет работать только внутри Я sh и не буду разрешать внешние запросы.

Я могу принести вам пачку ямлов, чтобы проверить, если вы хотите, если вы хотите проверить это.

Дайте мне знать, если этот ответ Ваш вопрос или у вас есть еще вопросы.

...