Переход на istio / envoy с nginx с помощью sub_filter - PullRequest
2 голосов
/ 09 мая 2020

Интересно, могу ли я перенести конфигурацию nginx, подобную этой, в istio.

Неопределенная формулировка проблемы, как предоставить aws vp c elasticsearch через c loadbalancer publi. Экземпляр aws -es защищен с помощью конечной точки когнитивного доступа. Хотя я могу работать с перенаправлением когнитивных данных, он создает URL-адрес перенаправления, например

https:/mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=6rn9ch5reoehhle1gmfgv238k0&redirect_uri=https://vpc-mykibana-111xxx.us-east1.es.amazonaws.com/_plugin/kibana/app/kibana&state=7781cfab-838b-4473-9b7f-3ba2b3238528. Этот URL-адрес перенаправления не настраивается в когнитивном режиме и, вероятно, выходит из конфигурации es из коробки.

Это из руководства https://aws.amazon.com/premiumsupport/knowledge-center/kibana-outside-vpc-nginx-elasticsearch/.

server {
    listen 443;
    server_name $host;

    location ^~ /_plugin/kibana {
        # Forward requests to Kibana -> done using route
        proxy_pass https://vpc-mykibana-111xxx.us-east1.es.amazonaws.com/_plugin/kibana;

        # Handle redirects to Amazon Cognito -> seems working out of box
        proxy_redirect https://mydomain.auth.us-east-1.amazoncognito.com https://$host;

        # Update cookie domain and path
        proxy_cookie_domain vpc-mykibana-111xxx.us-east1.es.amazonaws.com $host;

        proxy_set_header Accept-Encoding "";
        sub_filter_types *;
        sub_filter vpc-mykibana-111xxx.us-east1.es.amazonaws.com $host;  <- main reason why the redirects are not correct for us
        sub_filter_once off;

        # Response buffer settings <- not important
        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;
    }

    location ~ \/(log|sign|error|fav|forgot|change|confirm) {
        # Forward requests to Cognito
        proxy_pass https://mydomain.auth.us-east-1.amazoncognito.com;

        # Handle redirects to Kibana
        proxy_redirect https://vpc-mykibana-111xxx.us-east1.es.amazonaws.com https://$host;

        # Handle redirects to Amazon Cognito
        proxy_redirect https://mydomain.auth.us-east-1.amazoncognito.com https://$host;

        # Update cookie domain
        proxy_cookie_domain mydomain.auth.us-east-1.amazoncognito.com $host;
    }
}

Пробовал использовать простой виртуальный сервис, но не знаю, как перейти дальше

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: siem-route
  namespace: siem
spec:
  hosts:
    - siem.jupiter.money
  gateways:
    - istio-system/http-gateway
  http:
    - match:
      - uri:
          match: /_plugin/kibana
      route:
        - destination:
            host: vpc-mykibana-111xxx.us-east1.es.amazonaws.com

1 Ответ

0 голосов
/ 14 мая 2020

Интересно, смогу ли я перенести такую ​​конфигурацию nginx на istio.

Как я уже упоминал в комментариях, вам лучше использовать их вместе, это невозможно делать такие вещи, как proxy_pass в виртуальном сервисе.

Как упоминалось здесь

Разве нельзя позволить ISTIO делать обратный прокси-сервер, чтобы никому не нужен веб-сервер (httpd / nginx / lighthttpd /…) для выполнения задания обратного прокси?

И ответ.

Задача плоскости управления Istio - настроить флот обратных прокси. Цель веб-сервера - обслуживать контент, а не обратный прокси. Технология обратного прокси, лежащая в основе Istio, - это Envoy, а Envoy можно использовать в качестве замены HAProxy, nginx, Apache, F5 или любого другого компонента, который используется в качестве обратного прокси.


Вместо этого вы можете создать модуль nginx со своей конфигурацией и создать виртуальную службу с nginx в качестве хоста маршрута.

Так это будет выглядеть, как в примере ниже.

ПРИМЕР

входной шлюз -> шлюз -> Виртуальная служба -> nginx (обратный прокси и прочее настроено на nginx) -> кибана, когнито

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: test
spec:
  hosts:
    - siem.jupiter.money
  gateways:
    - gateway_test
  http:
    - match:
      - uri:
          match: /_plugin/kibana
      route:
        - destination:
            host: nginx.default.svc.cluster.local
...