Развертывание 1С-Битрикс в Kubernetes: полное руководство с кейсами

1С-Битрикс не проектировался для контейнерной оркестрации. Сессии в файлах, кеш на диске, загружаемые файлы в `upload/`, ядро в `bitrix/` — всё это stateful артефакты, которые в Kubernetes требуют специальной обработки. Тем не менее задача решаема, и в production работают нагруженные Битрикс-сайты в
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Развертывание 1С-Битрикс в Kubernetes: полное руководство с кейсами
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1458
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    806
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1163

1С-Битрикс не проектировался для контейнерной оркестрации. Сессии в файлах, кеш на диске, загружаемые файлы в upload/, ядро в bitrix/ — всё это stateful артефакты, которые в Kubernetes требуют специальной обработки. Тем не менее задача решаема, и в production работают нагруженные Битрикс-сайты в k8s-кластерах. Мы развернули Битрикс в Kubernetes для 15+ проектов, и наш опыт показывает: за 2-3 недели можно получить отказоустойчивую инфраструктуру с автоматическим масштабированием.

Правильная контейнеризация Битрикс позволяет добиться нулевого downtime при деплоях и легко переживать пиковые нагрузки. Наши клиенты экономят до 30% на инфраструктурных затратах, а проект окупается в течение полугода. В этой статье разберём ключевые проблемы и их решения на основе реальных кейсов.

Однако многие команды сталкиваются с типовыми ошибками: неправильная настройка сессий приводит к автоматическим разлогинам при масштабировании, а хранение кеша в файлах сводит на нет преимущества контейнеризации. Мы собрали best practices, которые помогут избежать этих граблей.

Почему Kubernetes для Битрикс — это вызов?

Главная проблема — Битрикс хранит состояние (сессии, кеш, загруженные файлы) локально на диске. В Kubernetes поды эфемерны: при пересоздании pod'а данные теряются. Без специальных настроек пользователь будет терять сессию при каждом запросе, а кеш станет бесполезен. Кроме того, лицензия Битрикс привязана к IP или домену — при облачном деплое нужно обеспечить стабильный внешний IP. Дополнительная сложность — обработка загруженных файлов: в классической схеме все upload-файлы лежат в общей папке, доступной всем веб-серверам. Интеграция с 1С через CommerceML требует временных файлов, которые должны быть доступны всем подам. Битрикс24 также может быть развёрнут в Kubernetes, но его архитектура отличается — требуется отдельная конфигурация агентов и событий. Документация Kubernetes рекомендует использовать PersistentVolume для stateful данных. Мы применяем этот подход уже в 15 проектах.

Как мы решаем проблему сессий и кеша?

Сессии. Переключаем хранение сессий на Redis. В .settings.php Битрикс прописываем:

'session' => [ 'value' => [ 'mode' => 'separated', 'handlers' => [ 'general' => [ 'type' => 'redis', 'host' => 'redis-service', 'port' => 6379, ], ], ], ], 

Кеш. Меняем CACHE_TYPE=A на Memcached:

'cache' => [ 'value' => [ 'type' => ['memcache' => 'memcache'], 'memcache' => [ 'host' => 'memcached-service', 'port' => 11211, ], ], ], 

Файлы. Директория upload/ монтируется через PersistentVolumeClaim с режимом ReadWriteMany (NFS, CephFS). Код же запекается в Docker-образ — это ускоряет деплой и упрощает управление версиями.

Как настроить хранение файлов upload?

Для хранения файлов upload мы используем PersistentVolumeClaim с режимом доступа ReadWriteMany. Рекомендуем NFS-сервер в кластере или облачный файловый сторадж (например, Яндекс Object Storage через FUSE). Важно: код сайта должен быть запечён в Docker-образ, а upload-директория исключена из образа через .dockerignore. Это гарантирует, что файлы не потеряются при пересоздании подов. На практике для каталога с 2 млн товаров upload занимает 50 ГБ — PV справляется без проблем.

Решение Производительность Надёжность Стоимость
NFS Средняя Высокая Низкая
CephFS Высокая Очень высокая Средняя
Облачный сторадж (S3) Низкая-средняя Высокая Средняя

Типичные ошибки при контейнеризации Битрикс

Развернуть типичные ошибки
Ошибка Последствие Решение
Сессии в файлах Потеря сессии при масштабировании Использовать Redis
Кеш на диске Низкая производительность Memcached или Redis
upload в образе Размер образа, потеря данных PersistentVolume
Отсутствие .dockerignore Медленная сборка Исключить upload и bitrix

Почему базу данных стоит вынести за пределы кластера?

Хотя MySQL можно запустить в Kubernetes через StatefulSet, мы настоятельно рекомендуем использовать managed-решения (AWS RDS, Yandex Managed Service for MySQL). Это упрощает бэкапы, репликацию и обновления. Базы данных — самый критичный компонент, и их обслуживание в кластере требует отдельной экспертизы. Например, при сбое etcd восстановление базы может занять часы, а managed-решение гарантирует SLA 99.95%.

Структура Kubernetes-манифестов

namespace: bitrix-prod ├── Deployment: bitrix-app (PHP-FPM + Nginx sidecar) ├── Service: bitrix-app-svc ├── Ingress: bitrix-ingress (с TLS) ├── StatefulSet: redis ├── StatefulSet: memcached ├── PersistentVolumeClaim: bitrix-upload (RWX) ├── ConfigMap: php-fpm-config ├── ConfigMap: nginx-config └── Secret: db-credentials 

Deployment для PHP-FPM с Nginx sidecar, монтированием upload и конфигов — стандартный паттерн. Базу данных (MySQL) рекомендуем вынести в managed-решение — это надёжнее и проще в обслуживании.

Горизонтальное масштабирование

После настройки Redis и Memcached масштабирование — одна команда: kubectl scale deployment bitrix-app --replicas=5. Можно добавить HorizontalPodAutoscaler:

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: bitrix-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: bitrix-app minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 

CI/CD-пайплайн

Мы используем GitLab CI/CD: сборка Docker-образа, пуш в registry, rolling update через kubectl. Никакого downtime — pod'ы заменяются по одному.

Сроки

Этап Содержание Срок
Анализ и подготовка Аудит конфигурации Битрикс, выбор решений для сессий/кеша 2–3 дня
Dockerfile + образ Сборка, проверка работоспособности 2–3 дня
k8s-манифесты Deployment, Service, Ingress, PVC, ConfigMap, Secret 3–4 дня
Redis/Memcached Развёртывание и настройка session/cache 1–2 дня
CI/CD Пайплайн сборки и деплоя 2–3 дня
Тестирование Нагрузочные тесты, проверка sticky session 2–3 дня

Итого: 2-3 недели для боевого окружения. Для dev/staging — быстрее.

Что входит в работу

  • Аудит текущей конфигурации Битрикс и инфраструктуры.
  • Разработка Dockerfile и Docker Compose для локальной разработки.
  • Написание манифестов Kubernetes (Deployment, Service, Ingress, PVC, Secret).
  • Настройка Redis и Memcached для сессий и кеша.
  • Интеграция CI/CD (GitLab/GitHub Actions) с rolling update.
  • Нагрузочное тестирование и оптимизация (до 1000 RPS).
  • Документация по развёртыванию и эксплуатации.
  • Обучение вашей команды (1-2 сессии).

Наш опыт

Более 7 лет занимаемся инфраструктурой на Битрикс. Развернули 15+ проектов в Kubernetes, включая каталоги с миллионами товаров и высокой посещаемостью. Используем только стабильные технологии и best practices. Один из клиентов — интернет-магазин с 2 млн товаров и 50 000 уникальных посетителей в день. После миграции downtime снизился до нуля, а скорость загрузки страниц выросла на 40%.

Закажите аудит вашей инфраструктуры — мы оценим готовность к контейнеризации и предложим оптимальный план. Свяжитесь с нами для консультации.