GCP - Развертывание API и веб-интерфейса на поддомене и домене соответственно - PullRequest
1 голос
/ 14 апреля 2020

Для начала я создаю Google App Engine, где развертываю на своем пользовательском домене (который мы будем называть: mysite.ms) и API, и внешний интерфейс. API написан на nodejs с Express и интерфейсом является React приложение. Это мой app.yml файл, который я использую для развертывания:

runtime: nodejs
env: flex

manual_scaling:
  instances: 1

resources:
  cpu: .5
  memory_gb: 0.5
  disk_size_gb: 10

handlers:
  - url: /
    static_files: www/build/index.html
    upload: www/build/index.html

  - url: /
    static_dir: www/build

Теперь я хочу разделить элемент. В домене mysite.ms разверните только приложение React, а на поддомене sub.mysite.ms - API. Поскольку домен перешел на freenom, для создания поддоменов я добавляю новый DNS типа CNAME со значением sub.mysite.ms и нацеливаю на исходный домен mysite.ms.

Возможно ли создать эти отдельные развертывания, использующие только Google App Engine и один файл app.yml, или вам нужно использовать какой-либо другой инструмент для разделения файлов?

Как вы посоветуете мне продолжить? Поскольку я не могу найти ничего понятного в Интернете, не могли бы вы дать мне несколько советов по решению этих проблем?

ОБНОВЛЕНИЕ

Я прочитал предоставленную вами документацию, и у меня есть некоторые сомнения по этому поводу. Прежде всего, как я могу создавать разные сервисы? Поскольку я создаю это (но, скорее всего, неправильно) dispatch.yml:

dispatch:
  - url: "mysite.ms/*"
    service: default

  - url: "sub.mysite.ms/*"
    service: api

, но при развертывании с этой командой gcloud app deploy dispatch.yaml я получаю сообщение об ошибке, потому что он не может найти модуль 'api'. В предыдущей версии, в моем server.js у меня есть этот код для обработки React:

app.use(express.static(path.resolve(__dirname, 'www', 'build')));
app.get('*', (req, res) => { res.sendFile(path.resolve(__dirname, 'www', 'build', 'index.html')); });
  1. Должен ли я сохранить эти две строки кода, даже если я разделю интерфейс а api на другом домене?

  2. Должен ли я добавить sub.mysite.ms в область пользовательского домена в разделе Google App Engine?

  3. Должен ли я сохранить файл app.yml даже если у меня есть dispath.yaml?

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

На данный момент невозможно развернуть более одной службы с использованием одного и того же файла yaml. Предположим, вы захотите развернуть две службы: api и frontend. Допустим, вы хотите, чтобы служба frontend была службой по умолчанию, поэтому каждый раз, когда все обращаются к mysite.ms, они видят службу frontend.

Допустим, у вас есть файл app.yaml, как показано ниже для frontend service:

runtime: nodejs
env: flex

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Как вы можете заметить, в вашем app.yaml нет свойства service. В app.yaml файле ссылка do c вы увидите следующее:

service: service_name

Требуется при создании службы. Необязательно для сервиса по умолчанию. Каждый сервис и каждая версия должны иметь имя. Имя может содержать цифры, буквы и дефисы. В гибкой среде общая длина службы и версии не может превышать 48 символов и не может начинаться или заканчиваться дефисом. Выберите уникальное имя для каждой услуги и каждой версии. Не используйте имена между службами и версиями повторно.

Поскольку свойство service отсутствует, для развертывания будет задана служба default. Теперь предположим, что у вас есть другой файл yaml, в частности api.yaml для развертывания службы api. Вот пример:

runtime: nodejs
env: flex
service: api

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Вы увидите, что я добавил свойство service, и при развертывании с использованием gcloud app deploy api.yaml развертывание создаст службу api.

Наконец, после создания служб вы сможете развернуть созданный вами файл dispatch.yaml.

Несколько советов для вас:

  • Рекомендуется назначать app.yaml файл для службы по умолчанию. Для других служб вам может потребоваться присвоить имена файлам в соответствии со службой для развертывания таким файлом, например api.yaml, backend.yaml, api_external.yaml, et c.
  • . сервисы, использующие gcloud app deploy path/to/service1 path/to/service2 path/to/service3 ..., или вы можете сделать это индивидуально для лучшей отладки в случае возникновения проблем.
  • Поскольку вы используете среду Flex, свойство handlers не поддерживается . Если вы добавите их, они будут проигнорированы.
  • Проверьте правильные документы для среды, которую вы используете. app.yaml, dispatch.yaml, общие документы .
0 голосов
/ 14 апреля 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...