Настройка деплоя сайта на Selectel
Вы развернули сайт на 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.
Каждая проблема сопровождается конкретным решением, которое мы отрабатывали на десятках проектов.
Как организовать деплой для соответствия 152-ФЗ?
Selectel предоставляет аттестованную инфраструктуру. Мы настраиваем:
- Шифрование данных в покое через OpenStack Barbican.
- Логирование доступа к Object Storage через S3 Access Logs.
- Регулярное резервное копирование баз данных в отдельный проект.
Это гарантирует compliance без лишних затрат.
Почему Selectel выгоднее зарубежных облаков?
Selectel в 2–3 раза дешевле AWS/Azure для российских проектов, если считать задержки и compliance. Например, использование Managed Kubernetes на Selectel снижает затраты на администрирование на 40% по сравнению с ручным развёртыванием. К тому же, данные остаются в РФ, что критично для 152-ФЗ.
Как настроить деплой на Selectel с нуля?
Используем проверенный стек: Terraform 1.7 для описания инфраструктуры, Ansible для конфигурации, GitHub Actions для CI/CD. Один из проектов — интернет-магазин на Laravel 11: терраформили проект, настроили Object Storage для медиафайлов и Managed Kubernetes для фронта. Деплой занимает 3 минуты, роллбэк — 1 команда.
# Создание сервера через 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 дня |
Стоимость рассчитывается индивидуально под проект. Закажите индивидуальный расчёт стоимости деплоя — мы подберём оптимальную архитектуру. Получите консультацию — оценим ваш проект за один рабочий день. Обращайтесь, чтобы настроить деплой, который не подведёт.







