Yandex Cloud
Вся инфраструктура размещена в Yandex Cloud, регион ru-central1 (Москва), зоны a, b, d.
Используемые сервисы
| Сервис YC | Назначение |
|---|---|
| Managed Kubernetes | 5 K8s кластеров |
| Managed PostgreSQL | БД для всех сервисов |
| Managed Redis | Кэш и очереди |
| Object Storage | S3-совместимое хранилище (фото, логи, CI кэш) |
| Container Registry | Docker образы сервисов |
| KMS | Шифрование секретов |
| Cloud DNS | Управление DNS-зонами |
| VPC | Виртуальные сети |
| ALB / NLB | Load balancers |
| Compute (VM) | FTP серверы (autoscale группы), HAProxy |
Управление через Terraform + Terragrunt
Все ресурсы описаны кодом в репозитории infrastructure/terragrant.
infrastructure/terragrant/
├── terraform/modules/ # Переиспользуемые модули
│ ├── kubernetes/ # Managed K8s
│ ├── postgresql/ # Managed PostgreSQL
│ ├── redis/ # Managed Redis
│ ├── object-storage/ # Object Storage
│ ├── s3-bucket/ # S3 buckets
│ ├── alb/ # Application Load Balancer
│ ├── nlb/ # Network Load Balancer
│ ├── cloud-dns/ # DNS зоны
│ ├── kms/ # KMS ключи
│ ├── security-group/ # Security groups
│ ├── service-account/ # Service accounts
│ ├── vault/ # HashiCorp Vault
│ └── compute-instance/ # Виртуальные машины
└── terragrunt/
├── media/
│ ├── base/ # Базовые ресурсы (VPC, DNS, KMS, SA, SG)
│ ├── dev/ # Dev окружение
│ │ ├── compute/ # K8s кластер
│ │ ├── data/ # PostgreSQL, Redis, S3
│ │ └── security/ # Vault
│ └── prod/ # Prod окружение
│ ├── compute/ # K8s кластер
│ ├── data/ # PostgreSQL, Redis, S3
│ └── security/ # Vault
├── scount/
│ ├── base/
│ ├── dev/
│ └── prod/
└── prod-witisi/ # Witisi VM ресурсы (HAProxy, FTP autoscale)
Vault
HashiCorp Vault используется для управления секретами в prod-окружениях (media prod и scount prod). Vault развёрнут внутри кластера, данные хранятся в PostgreSQL (база vault).
infrastructure/terragrant/terragrunt/media/prod/security/vault/
infrastructure/terragrant/terragrunt/scount/prod/security/vault/
FTP и HAProxy (Witisi prod)
Для witisi-prod развёрнута группа FTP-серверов (autoscale, до 10 нод) с HAProxy для балансировки:
- HAProxy VM:
haproxy-ftp-service-prod-witisi - FTP autoscale group:
autoscale-ftp-service-prod-witisi
Управляется через Terragrunt модуль yandex в prod-witisi/.
Применение изменений
Изменения в инфраструктуре применяются через GitLab CI/CD — вручную terragrunt apply не запускается:
Создать ветку → внести изменения → открыть MR
↓
CI запускает terragrunt plan — результат виден в пайплайне MR
↓
Проверить план, смёрджить MR
↓
CI запускает terragrunt apply автоматически