Назад | Перейти на главную страницу

Шлюз API для микросервисов с функциями Google Cloud

Входы

Например, у нас есть несколько сервисов.

  1. Обслуживание аккаунта
  2. Обслуживание продукта
  3. Платежный сервис

Каждая служба представляет собой отдельную функцию Google Cloud. У каждой службы есть собственный HTTP API. Например, в сервисе аккаунта есть:

  1. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-up
  2. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/sign-in
  3. https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/account/reset-password
  4. и т.д

У каждой службы есть собственная конечная точка документации swagger /docs.

Вопрос

Как я могу сделать свои облачные функции частными (без публичного доступа) и разместить их за каким-либо шлюзом API?

Ноты

Google предлагает конечные точки для облачных функций (см. https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions ). Но, насколько я понимаю, Endpoints позволяют определять только файл yaml OpenAPI.

В этом yaml-файле я могу определить что-то вроде этого:

swagger: '2.0'
info:
  title: Cloud Endpoints + GCF
  description: Sample API on Cloud Endpoints with a Google Cloud Functions backend
  version: 1.0.0
host: HOST
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://REGION-FUNCTIONS_PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

Но в моем случае мне нужно иметь возможность проксировать свои облачные функции (например, обратный прокси).

Вы должны использовать Конечные точки Google Cloud.

Расширяемый сервисный прокси является одним из компонентов конечных точек и именно то, что нужно в вашем случае.

Extensible Service Proxy (ESP) - это высокопроизводительный масштабируемый прокси-сервер, который запускается перед серверной частью OpenAPI или gRPC API и предоставляет такие функции управления API, как аутентификация, мониторинг и ведение журнала.

Вы также можете найти эту ссылку полезной: Настройка и развертывание API