Рейтинг:1

Как направить трафик в службу Compute или Cloud Run на основе URL-адреса

флаг jp

В настоящее время у нас есть веб-приложение, работающее на виртуальной машине вычислений, и мы работаем над его постепенным переносом в Cloud Run. (Мы делаем это постепенно, потому что текущий бэкенд написан на PHP, а мы переписываем его на Go, по одной конечной точке за раз)

Наш сайт в настоящее время доступен, например, по адресу:
https://www.myapp.com
и API по адресу:
https://www.myapp.com/books

Наш план состоит в том, чтобы новый Cloud Run/Go API был доступен либо по пути v2:
https://www.myapp.com/v2/books
или на поддомене
https://v2.myapp.com/books
а затем решите, какой API использовать в клиенте, исходя из того, что уже было перенесено.

Мне было интересно, какой хороший способ сделать это.

Вещи, которые я рассматривал (как новичок в GCP)

  • У нас уже есть nginx, работающий на вычислительной виртуальной машине, поэтому настройка обратного прокси-сервера для https://www.myapp.com/v2 сначала казалось хорошей идеей, но кажется, что в настоящее время нет способа получить доступ к Cloud Run из Compute через частный IP-адрес, поэтому запрос должен будет отправляться через Интернет, что замедляет работу (также не уверен, что обратное проксирование на внешний URL вызовет проблемы с аутентификацией и т. д.?)

  • С https://v2.myapp.com/books вариант, кажется, что сопоставление пользовательских доменов для Cloud Run все еще находится в стадии разработки. предварительный выпуск поэтому я не решаюсь использовать его в производственной системе, также в идеале мы хотели бы использовать наш собственный сертификат SSL, который, похоже, не поддерживается.

  • Вариант хостинга Firebase кажется немного сложным, а также имеет время ожидания запроса 60 с, что слишком мало для некоторых загрузок видео и т. Д., Которые мы получаем.

  • Балансировщик нагрузки для NEG добавит немного сложности/стоимости, но, похоже, это другой вариант. Похоже, что бессерверные NEG не могут подключаться к вычислительным ресурсам, а NEG управляемых виртуальных машин не могут подключаться к Cloud Run, так что мне понадобится по одному в этом случае?

Goli Nikitha avatar
флаг ng
См. эту [документацию] (https://cloud.google.com/run/docs/configuring/connecting-vpc) для использования облачного запуска и частного IP-адреса GCE (вычислительного движка) через общий VPC.
Рейтинг:0
флаг br

Комментируя ниже все 4 варианта, которые вы упомянули

  • У нас уже есть nginx, работающий на вычислительной виртуальной машине, поэтому настройка обратный прокси для https://www.myapp.com/v2 казалось хорошей идеей в во-первых, но кажется, что в настоящее время нет возможности получить доступ к Cloud Запустите из Compute через частный IP-адрес, чтобы запрос должен был выйти через Интернет замедляет работу (также не уверен, что обратное проксирование на внешний URL вызовет проблемы с аутентификацией и т.д?)

Технически это правильно, вы можете настроить службу Cloud Run на прием трафика только из VPC (это называется параметрами Ingress, вы можете прочитать об этом в документе здесь [1]). И когда вы это сделаете, ваша служба Cloud Run продолжит работать с общедоступным URL-адресом (тот, который создается при развертывании службы).Но этот URL-адрес доступен только из VPC, и даже если кажется, что клиент будет звонить в интернет-сервис, этот трафик остается в нашей сети и никогда не покидает нашу магистраль, поэтому технически это не должно увеличивать задержку.

  • С https://v2.myapp.com/books вариант, кажется, что сопоставление пользовательские домены для Cloud Run все еще находятся в предварительной версии, поэтому я не решается использовать его в производственной системе, также в идеале мы бы хотели бы использовать наш собственный SSL-сертификат, который, похоже, не поддерживается.

Я бы не рекомендовал использовать функцию предварительного просмотра в производственной среде, поскольку существует риск того, что эта функция изменится несовместимым образом. Что касается использования ваших собственных SSL-сертификатов, вы можете развернуть HTTP LoadBalancer перед вашей службой Cloud Run (которая настроена как частная) и настроить LoadBalancer в соответствии со своими потребностями.

  • Вариант хостинга Firebase кажется немного сложным а также имеет тайм-аут запроса 60 с, что слишком мало для некоторых видео загрузки и т.д. мы получаем.

Я не очень хорошо знаком с Firebase.

  • Балансировщик нагрузки для NEG добавит немного больше сложности/стоимости, но это похоже другой вариант. Похоже, бессерверные NEG не могут подключаться к вычислительным ресурсам, а управляемые виртуальные машины NEG не могут подключаться к Cloud Run, поэтому мне нужен один из каждого в этом случае?

Параметр LoadBalancer выглядит сложным, но на самом деле это не так, вы можете использовать что-то вроде Terraform для предоставления LoadBalancer, вам нужно сделать это только один раз.

Надеюсь, это поможет пролить свет на ваши варианты [1] https://cloud.google.com/run/docs/securing/ingress

jezjez avatar
флаг jp
Спасибо за ответ, полезно знать ваше мнение о звонках через Интернет, я предполагал, что это сильно замедлит работу, но если нет, я думаю, что мы можем выбрать этот вариант. Я также рассмотрю балансировщик нагрузки и Terraform.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.