Настройте папку для создания приложения на Google Kubernetes - PullRequest
1 голос
/ 20 октября 2019

В настоящее время у меня есть репозиторий, который содержит и внутренний интерфейс Node.js Express, и внешний интерфейс React. Изображение репо находится в Реестре контейнеров Google и используется в кластере Google Kubernetes. URL-адрес, предоставленный балансировщиком нагрузки, является внутренним URL-адресом, обслуживающим статический сервер build. В будущем я хочу разделить backend / frontend на два разных репозитория (один для backend и один для frontend).

Я считаю, что внесение изменений в backend в кластере не составит труда, но яУ меня проблемы с выяснением того, как добавить к этому внешний интерфейс React, поскольку папка build будет находиться в другом репо, чем бэкэнд. Я читал в Интернете, что для обслуживания приложения React в GCP вы должны загрузить папку build в корзину и отправить ее в App Engine, которая предоставит URL для доступа к нему в Интернете.

Мне интересно, так ли это было бы в кластере Kubernetes или есть другой подход, поскольку он не использует App Engine, а Google Kubernetes.

Надеюсь, это имеет смысл (я до сих пордовольно новый для Google Cloud) и любые отзывы / советы будут оценены!

Спасибо!

1 Ответ

0 голосов
/ 20 октября 2019

Существуют разные подходы к этому.

Подход 1: обслуживайте свой интерфейс через облачное хранилище Google.

В документации GCP есть руководство: Размещение статического веб-сайта , чтобы установить это. После сборки скопируйте все файлы в облачное хранилище, и все готово.

Подход 2: Добавьте ваш фронт в бэкэнд при создании образа Docker

  1. Создайте свой фронтенд и упакуйтеэто в образе Docker что-то вроде этого:
FROM node AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM scratch
COPY --from=build /app/dist /app
Создайте свой бэкэнд и скопируйте внешний интерфейс:
FROM myapp/frontend as frontend

FROM node
// build backend
COPY --from=frontend /app /path/where/frontend/belongs

Это разъединяет обе сборки, но вам всегда нужно будет развернуть бэкэнд для изменения внешнего интерфейса.

Подход 3:Обслуживайте ваш веб-интерфейс с помощью nginx (или другого веб-сервера)

FROM node AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM nginx
COPY --from=build /app/dist /usr/share/nginx/html

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...