Инфраструктура Yandex Cloud
Инфраструктура Yandex Cloud
Стратегия: budget-вариант (MVP)
Для небольшой нагрузки (десятки пользователей) рекомендуется одна VM с Docker Compose. PostgreSQL и Redis работают в контейнерах на той же машине.
Преимущества:
- Стоимость ~3 000–4 000 ₽/мес (в 2× дешевле Managed-сервисов)
- Аналогично текущему stage-окружению (hstgr.cloud)
- Простое управление
Ограничения:
- Нет автоматических managed-бэкапов и failover
- При росте нагрузки — мигрировать PostgreSQL/Redis на Managed-сервисы
Managed-вариант (Managed PostgreSQL + Managed Redis) описан в разделе Оценка стоимости.
Конфигурация VM
| Параметр | Значение |
|---|---|
| Сервис | Compute Cloud |
| Platform | Intel Ice Lake (standard-v3) |
| CPU | 2 vCPU (100%, non-preemptible) |
| RAM | 8 GB |
| Диск | 50 GB SSD (network-ssd) |
| ОС | Ubuntu 22.04 LTS |
| Регион | ru-central1-a (или -b) |
| Публичный IP | 1 статический |
Важно: регион ru-central1 обязателен для соответствия 152-ФЗ — данные остаются на территории РФ.
Сетевые настройки
VPC
Сеть: terma-grand-net (10.0.0.0/16)Подсеть: terma-grand-subnet (10.0.1.0/24, зона ru-central1-a)Security Group: terma-grand-sg
| Направление | Протокол | Порты | Источник | Назначение |
|---|---|---|---|---|
| Ingress | TCP | 80 | 0.0.0.0/0 | HTTP |
| Ingress | TCP | 443 | 0.0.0.0/0 | HTTPS |
| Ingress | TCP | 22 | <whitelist IP> | SSH (только ваши IP) |
| Egress | Any | Any | 0.0.0.0/0 | Telegram API, Let’s Encrypt |
Важно: PostgreSQL (5432) и Redis (6379) не открываются в Ingress — только внутренняя Docker-сеть.
DNS
Тип: A-записьИмя: termagrand.ru + *.termagrand.ruTTL: 300Значение: <публичный IP VM>Используйте Yandex Cloud DNS или любой DNS-провайдер.
Хранилища
| Сервис | Назначение | Конфигурация |
|---|---|---|
| VM SSD | Docker volumes (PostgreSQL, Redis) | 50 GB |
| Yandex Object Storage | Бэкапы (pg_dump + шифрование) | bucket terma-grand-backups |
Создание ресурсов (YC CLI)
# Установить yc CLI: https://cloud.yandex.ru/docs/cli/
# Создать сетьyc vpc network create --name terma-grand-net
# Создать подсетьyc vpc subnet create \ --name terma-grand-subnet \ --network-name terma-grand-net \ --zone ru-central1-a \ --range 10.0.1.0/24
# Создать Security Groupyc vpc security-group create \ --name terma-grand-sg \ --network-name terma-grand-net \ --rule "direction=ingress,port=80,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \ --rule "direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \ --rule "direction=ingress,port=22,protocol=tcp,v4-cidrs=[<ВАШ IP>/32]" \ --rule "direction=egress,port=any,protocol=any,v4-cidrs=[0.0.0.0/0]"
# Создать VMyc compute instance create \ --name terma-grand-prod \ --zone ru-central1-a \ --platform standard-v3 \ --cores 2 \ --core-fraction 100 \ --memory 8GB \ --create-boot-disk image-family=ubuntu-2204-lts,size=50GB,type=network-ssd \ --network-interface subnet-name=terma-grand-subnet,nat-ip-version=ipv4,security-group-ids=<sg_id> \ --ssh-key ~/.ssh/id_rsa.pub
# Создать Object Storage bucketyc storage bucket create --name terma-grand-backups