Развертывание веб-приложения на основе данных в Kubernetes - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время я запускаю управляемое данными веб-приложение в одном образе Docker, вместе с nginx, сервером приложений и Postgres. Он просто работает на виртуальной машине с Docker.

Мне нужно перенести весь этот стек, все в одном, в Kubernetes и найти стандартный рекомендуемый облачный способ развертывания.

  • Я знаю, что мне нужно будет запустить nginx как отдельное развертывание или модуль, а сервер приложений - как отдельный модуль / развертывание.

  • Мне нужно сделать выбор для базы данных: использовать ли мне службу внешней базы данных, работать за пределами Kubernetes или запускать свой собственный Postgres на Kubernetes в качестве набора с сохранением состояния.

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

  • О nginx, я должен просто использовать свой собственный nginx, работающий как отдельное развертывание, или мне следует использовать Ingress Controller? В чем может быть преимущество использования входа по сравнению с nginx, хотя nginx как развертывание может быть автоматически масштабирован, а контроллер входа - нет?

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

1 Ответ

0 голосов
/ 13 ноября 2018

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

Это строгое мнение, основанное на вопросе. Если вы не беспокоитесь о таких затратах, я бы использовал внешнюю базу данных, возможно, базу данных облачного провайдера, например Amazon RDS или Cloud SQL от GCP. IMO, вы бы разгрузили управление базой данных извне и было бы легче отладить, если что-то пойдет не так. Другой аспект заключается в том, что вы можете воспользоваться преимуществами чего-либо с лучшей производительностью / масштабируемостью, например Amazon Aurora .

Если вас беспокоят затраты, воспользуйтесь решением в Kubernetes, которое позволит вам использовать один и тот же набор компьютеров для вашей базы данных, вашего nginx и модулей приложения.

О nginx, я должен просто использовать свой собственный nginx, работающий как отдельное развертывание, или мне следует использовать Ingress Controller? В чем может быть преимущество использования входа по сравнению с nginx, хотя nginx в качестве развертывания можно автоматически масштабировать, а контроллер входа - нет?

На самом деле вы можете автоматически масштабировать входной контроллер nginx, который запускает nginx в том же контейнере и управляется развертыванием, вам нужно настроить автомасштабирование на основе некоторой метрики, такой как ЦП, на модулях входного контроллера nginx.

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