Налаштування деплою сайту на Selectel
Автоматизуйте деплой на Selectel за допомогою Terraform, Managed Kubernetes та CI/CD з GitHub Actions. Ви розгорнули сайт на Selectel, але через тиждень він упав через неправильну конфігурацію security groups? Або деплой займає годину, а відкат — ціла операція? Такі проблеми вирішуємо автоматизованим деплоєм з Terraform, Kubernetes та GitHub Actions. Викат займає хвилини, інфраструктура надійна, і все відповідає 152-ФЗ. Одного разу проєкт упав через неправильне налаштування Object Storage — зображення не завантажувалися, LCP виріс до 5 секунд. Ми переписали деплой на Terraform, налаштували CDN, і LCP знизився до 0.8 секунди. Це лише один приклад того, як автоматизація рятує бізнес.
Наша команда має 5+ років досвіду роботи з інфраструктурою Selectel і налаштувала деплой для 30+ проєктів, від лендінгів до високонавантажених SaaS-платформ. Розповімо, як ми це робимо.
Проблеми, які вирішуємо
При деплої на Selectel часто стикаємося з типовими помилками:
- N+1 запитів при роботі з Object Storage — неправильне налаштування CDN призводить до затримок. Виправляємо через попереднє завантаження контенту та правильні Cache-Control заголовки.
- Hydration mismatch в React/Next.js при використанні SSR — через різний час відповіді сервера та клієнта. Вирішуємо налаштуванням синхронізації через Edge Functions.
- Витік даних при неправильній конфігурації security groups. Завжди використовуємо мінімальні привілеї: тільки 80/443 та SSH з білих IP.
Кожна проблема супроводжується конкретним рішенням, яке ми відпрацьовували на десятках проєктів.
За даними документації Selectel
Як організувати деплой для відповідності 152-ФЗ?
Selectel надає атестовану інфраструктуру. Ми налаштовуємо:
- Шифрування даних у спокої через OpenStack Barbican.
- Логування доступу до Object Storage через S3 Access Logs.
- Регулярне резервне копіювання баз даних в окремий проєкт.
Це гарантує compliance без зайвих витрат.
Чому Selectel вигідніший за зарубіжні хмари?
Selectel у 2–3 рази дешевший за AWS/Azure для українських проєктів, якщо рахувати затримки та compliance. Наприклад, використання Managed Kubernetes на Selectel знижує витрати на адміністрування на 40% порівняно з ручним розгортанням. До того ж, дані залишаються в РФ, що критично для 152-ФЗ. Базова конфігурація VPS коштує від 500 грн/місяць.
Як налаштувати деплой на Selectel з нуля?
Використовуємо перевірений стек: Terraform 1.7 для опису інфраструктури, Ansible для конфігурації, GitHub Actions для CI/CD. Один із проєктів — інтернет-магазин на Laravel 11: терраформували проєкт, налаштували Object Storage для медіафайлів та Managed Kubernetes для фронту. Деплой займає 3 хвилини, ролбек — 1 команда. Selectel Managed Kubernetes працює в 2 рази швидше за звичайну VPS при однаковому навантаженні.
# Створення сервера через CLI
pip install python-openstackclient
export OS_AUTH_URL=https://cloud.api.selcloud.ru/identity/v3
export OS_PROJECT_ID=your_project_id
export OS_USERNAME=your_username
export OS_PASSWORD=your_password
export OS_REGION_NAME=ru-1
openstack server create \
--flavor 1014 \
--image "Ubuntu 22.04 LTS 64-bit" \
--key-name my-key \
--security-group web-sg \
myapp-prod
# Terraform для Selectel
terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "~> 5.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.53"
}
}
}
provider "selectel" {
token = var.selectel_token
}
resource "selectel_vpc_project_v2" "myapp" {
name = "myapp-project"
theme = { color = "#4CAF50" }
}
resource "openstack_compute_instance_v2" "app" {
name = "myapp-prod"
flavor_name = "1014"
image_name = "Ubuntu 22.04 LTS 64-bit"
key_pair = openstack_compute_keypair_v2.mykey.name
security_groups = ["web-sg", "ssh-sg"]
region = "ru-1"
network {
name = "public"
}
user_data = file("cloud-init.yaml")
}
# Selectel Object Storage (Swift/S3)
aws configure
aws --endpoint-url https://s3.selcdn.ru s3 mb s3://myapp-assets
aws --endpoint-url https://s3.selcdn.ru \
s3 sync ./dist/assets s3://myapp-assets \
--acl public-read \
--cache-control "public, max-age=31536000, immutable"
# Managed Kubernetes (MKS)
selectel mks kubeconfig --cluster-id CLUSTER_ID > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml
kubectl apply -f k8s/
kubectl get pods -n myapp
# GitHub Actions для Selectel VPS
jobs:
deploy:
steps:
- name: Deploy
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.SELECTEL_SERVER_IP }}
username: deploy
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/myapp
git pull origin main
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan optimize
sudo systemctl reload php8.3-fpm nginx
Типові помилки при деплої та їх запобігання
- Ігнорування security groups — залишають SSH відкритим для всіх IP. Використовуємо тільки білі списки.
- Неправильне налаштування CORS для S3 — статика не завантажується на фронті. Явно вказуємо дозволені origins.
- Відсутність моніторингу — дізнаємося про падіння від клієнтів. Ставимо алерти через SendGrid або Telegram.
Цих помилок легко уникнути, дотримуючись наших практик.
Процес роботи
- Аналітика — визначаємо вимоги до навантаження, бюджету, compliance.
- Проєктування — малюємо архітектуру: VPS vs Kubernetes, S3 vs DB, CDN.
- Інфраструктура — Terraform кодом розгортаємо проєкт, мережі, security groups.
- Реалізація — налаштування додатку, CI/CD, моніторинг (Prometheus + Grafana).
- Тестування — навантажувальне тестування, перевірка Core Web Vitals.
- Деплой — канарейковий викат з автоматичним відкатом при помилках.
Що входить у налаштування деплою
- Проєктування архітектури під ваші завдання.
- Написання Terraform-конфігурацій для всієї інфраструктури.
- Налаштування CI/CD (GitHub Actions або GitLab CI) з автоматичним деплоєм і відкатом.
- Конфігурація Object Storage та CDN для статики.
- Інтеграція моніторингу (Prometheus + Grafana) з алертами.
- Документація з розгортання та навчання вашої команди.
- Технічна підтримка після запуску.
Порівняння VPS та Managed Kubernetes
| Параметр | VPS | Managed Kubernetes (MKS) |
|---|---|---|
| Час розгортання | 1–2 дня | 3–4 дні |
| Масштабування | Ручне (вертикальне) | Автоматичне (горизонтальне) |
| Вартість | Низька | Середня, з економією на адмініструванні |
| Підходить для | Невеликих проєктів | Високонавантажених та мікросервісів |
| Компонент деплою | Термін |
|---|---|
| VPS + Nginx + деплой | 1–2 дня |
| Object Storage + CDN | 1 день |
| Managed Kubernetes | 3–4 дні |
| CI/CD (GitHub Actions) | 1–2 дні |
Вартість розраховується індивідуально під проєкт. Замовте індивідуальний розрахунок вартості деплою — ми підберемо оптимальну архітектуру. Отримайте консультацію — оцінимо ваш проєкт за один робочий день. Звертайтеся, щоб налаштувати деплой, який не підведе.







