Установка Битрикс
Битрикс — приложение, которое выполняет подготовку и развертывание окружений для стандартной установки продуктов компании «1С-Битрикс» в кластере Yandex Managed Service for Kubernetes.
Доступно два типа окружения:
-
Административное окружение, которое предназначено:
- для развертывания продуктов Битрикс с нуля или из резервной копии;
- для внесения изменений в компоненты Битрикс с помощью административной панели продукта;
- для тестирования и разработки.
Административное окружение поддерживает:
- клиент для работы с Git;
- выполнение агентов в cron-задачах;
- сервер очередей;
- морфологический поиск Sphinx;
- инструменты для сбора метрик PHP и Nginx.
Окружение можно установить как из Yandex Cloud Marketplace, так и с помощью Helm-чарта.
Вы можете использовать административное окружение для установки стабильных версий приложений Битрикс.
-
Продуктовое окружение, которое поддерживает все возможности административного окружения, но не предназначено для внесения каких-либо изменений в компоненты Битрикс. В продуктовом окружении отсутствует административная панель.
Вы можете запустить в продуктовом окружении несколько реплик
Deployment, что дает отказоустойчивость.Для установки продуктового окружения вам потребуется подготовить образы на базе поставляемых с добавлением необходимых файлов Битрикс.
Продуктовое окружение можно установить только с помощью Helm-чарта.
Примечание
Административное и продуктовое окружения совместно используют:
- базу данных MySQL®;
- бакет Object Storage.
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id. -
Создайте в кластере Managed Service for Kubernetes новое пространство имен
bitrix-spaceдля административного окружения иbitrix-prodдля продуктового окружения. -
Если вы хотите использовать собственный сертификат для сайта Битрикс, создайте в пространствах имен для обоих окружений ресурс
Secretвида:apiVersion: v1 kind: Secret metadata: name: bitrix-tls-secret namespace: <пространство_имен> type: kubernetes.io/tls data: tls.crt: <Base64_encoded_сертификат> tls.key: <Base64_encoded_приватный_ключ_сертификата> -
Создайте бакет, в котором будут размещаться общие папки проекта
uploadиbackup. -
Создайте сервисный аккаунт с ролью
storage.editorна каталог, в котором располагается бакет. -
Создайте статический ключ доступа для сервисного аккаунта и сохраните его идентификатор и секретный ключ.
-
Создайте кластер Managed Service for MySQL® с параметрами:
- Сеть — выберите сеть, в которой располагается кластер Managed Service for Kubernetes.
- В блоке Хосты проверьте, что опция Публичный доступ выключена для всех хостов.
- Настройки СУБД:
- Innodb Flush Log At Trx Commit —
2; - Innodb Strict Mode —
Выключено; - Sync Binlog —
1000; - Transaction Isolation —
read committed.
- Innodb Flush Log At Trx Commit —
-
Если вы хотите использовать сервер очередей (модуль Битрикс Push and Pull), создайте секретный ключ для него:
docker container run --rm \ --name push_server_key_generate alpine:3.21 \ sh -c "(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 128) && echo ''"Сохраните результат выполнения команды.
-
Если вы планируете использовать продуктовое окружение, подготовьте ресурсы Container Registry для загрузки необходимых Docker-образов:
-
Создайте реестр контейнеров:
yc container registry create --name yc-auto-cr -
Сконфигурируйте Docker Credential helper. Он позволяет работать с приватными реестрами Yandex Cloud, не выполняя команду
docker login.Для настройки Credential helper выполните команду:
yc container registry configure-docker
-
-
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
Установка с помощью Cloud Marketplace
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. -
Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. -
В разделе Доступные для установки приложения выберите Битрикс и нажмите кнопку Перейти к установке.
-
Задайте настройки приложения:
-
Пространство имен — выберите пространство имен, созданное ранее.
-
Название приложения — укажите название приложения.
-
Размер тома — укажите размер тома для хранения файлов Битрикс. Размер указывается в
Gi. -
Класс хранилища — выберите класс хранилища для тома.
-
Доменное имя проекта — укажите полное доменное имя проекта.
-
IP-адрес балансировщика — укажите IP-адрес балансировщика, если вы уже его зарезервировали.
-
Политика управления трафиком — выберите политику маршрутизации внешнего трафика
. -
Использовать certmanager — выберите опцию, чтобы автоматически получить сертификат от издателя Let's Encrypt.
Для успешного получения сертификата зарегистрируйте публичную доменную зону и делегируйте домен. Для домена в этой зоне будет выдан сертификат с прохождением проверки DNS-01.
-
Электронная почта для получения уведомлений от Let's Encrypt – если выбрана опция Использовать certmanager, укажите адрес электронной почты для получения уведомлений от издателя Let's Encrypt.
-
Имя издателя — если выбрана опция Использовать certmanager, укажите имя ресурса
ClusterIssuerилиIssuer, который будет использоваться для автоматического получения SSL/TLS-сертификатов. -
Секрет, содержащий tls.crt и tls.key — если certmanager не используется, укажите имя секрета, созданного ранее.
-
Настроить git — выберите опцию для работы с Git-репозиторием.
В этом случае укажите параметры Git-репозитория в полях:
- Адрес git-репозитория — адрес репозитория в формате протокола SSH.
- Ветка — рабочая ветка Git-репозитория.
- Пользователь — имя пользователя Git-репозитория.
- Электронная почта — электронная почта пользователя Git-репозитория.
- Ключ доступа — укажите Base64-закодированное содержимое публичного ключа доступа к репозиторию.
-
Использовать cron для запуска агентов — выберите опцию для запуска агентов Битрикс по расписанию, заданному в
ConfigMap<название_приложения>-bitrix-space-cron. По умолчанию вConfigMapнастроено выполнение заданий агентов раз в минуту и резервное копирование проекта раз в сутки. Также вы можете добавить собственные расписания. -
Использовать сервер очередей — выберите опцию для работы сервера очередей (модуль Битрикс Push and Pull). Ресурс
Deploymentдля развертывания сервера запускается в отдельном поде. -
Секретный ключ — если выбрана опция Использовать сервер очередей, укажите секретный ключ, созданный ранее.
-
Использовать Sphinx — выберите опцию для использования полнотекстового поиска Sphinx. Ресурс
Deploymentдля развертывания Sphinx запускается в отдельном поде. -
Хранить кеш в Redis — выберите опцию для хранения кеша Битрикс в Redis. В кластере будет развернут отдельный
StatefulSet<название_приложения>-redis-*в пространстве имен приложения. Не рекомендуется включать в административном окружении, так как это может привести к деградации производительности. -
Экспортировать метрики PHP — выберите опцию, чтобы включить метрики PHP.
-
Экспортировать метрики NGINX — выберите опцию, чтобы включить метрики NGINX.
-
Класс хранилища для S3 — по умолчанию
csi-s3. -
Идентификатор ключа S3, Секретный ключ S3 — укажите полученные ранее идентификатор и секретный ключ статического ключа.
-
S3-бакет — укажите имя созданного ранее бакета Object Storage.
-
Размер папки upload — укажите размер каталога для загрузок в бакете. Размер указывается в
Gi. -
Размер папки backup — укажите размер каталога для хранения резервных копий в бакете. Размер указывается в
Gi. -
SMTP-сервер, SMTP-порт, Пользователь почтового ящика, Пароль от почтового ящика — укажите параметры подключения к почтовому серверу.
-
MySQL-хост, Пользователь БД, Пароль пользователя БД, База данных — укажите параметры подключения к базе данных MySQL® в созданном ранее кластере Managed Service for MySQL®.
-
Версия NGINX — выберите версию NGINX для Битрикс.
-
Версия PHP — выберите версию PHP для Битрикс.
-
Использовать bitrixsetup.php — выберите опцию для установки Битрикс с нуля.
-
Использовать restore.php — выберите опцию для восстановления Битрикс из резервной копии.
-
-
Нажмите кнопку Установить.
-
Дождитесь перехода приложения в статус
Deployed. -
Откройте в браузере проект по указанному в настройках доменному имени и установите продукт Битрикс с помощью мастера установки.
-
Проверьте средства работы с Git-репозиторием.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с административным окружением Битрикс выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/bitrix-env/chart/bitrix-env \ --version 1.0.5 \ --untar && \ helm install \ --namespace bitrix-space \ --set volumeSize="<размер_тома_Битрикс>" \ --set fqdn="<доменное_имя_сайта_Битрикс>" \ --set loadBalancerIP="<IP-адрес_балансировщика>" \ --set features.cron=<использовать_cron_для_запуска_агентов> \ --set features.push=<использовать_сервер_очередей> \ --set features.sphinx=<использовать_поиск_Sphinx> \ --set features.phpExporter=<экспортировать_метрики_PHP> \ --set features.nginxExporter=<экспортировать_метрики_NGINX> \ --set features.git=<использовать_Git> \ --set git.repoUrl="<SSH_URL_репозитория>" \ --set git.name="<имя_пользователя_Git>" \ --set git.email="<электронная_почта_пользователя_Git>" \ --set git.secret="<Base64_ключ_доступа_пользователя_Git>" \ --set s3.secret.accessKey="<идентификатор_ключа_бакета>" \ --set s3.secret.secretKey="<секретный_ключ_бакета>" \ --set s3.bucket="<имя_бакета>" \ --set msmtprc.host="<FQDN_почтового_сервера>" \ --set msmtprc.port="<порт_почтового_сервера>" \ --set msmtprc.user="<имя_пользователя_почтового_сервера>" \ --set msmtprc.password="<пароль_пользователя_почтового_сервера>" \ --set push.key="<секретный_ключ_Push_сервера_Битрикс>" \ --set-json 'mysql={"host":"<FQDN_хоста_MySQL>","login":"<имя_пользователя_MySQL>","password":"<пароль_пользователя_MySQL>","database":"<имя_базы_данных_MySQL>"}' \ --set certmanager.enabled=false \ --set tls.existingSecret="<имя_секрета_с_сертификатом>" \ --set features.cache=<использовать_кеш_Redis> . bitrix ./bitrix/При использовании certmanager для выпуска сертификата вместо параметров
tls.existingSecretиcertmanager.enabled=falseукажите параметры:certmanager.issuer=<ресурс_Issuer_или_ClusterIssuer>certmanager.email=<электронная_почта_для_уведомлений_от_Lets_Encrypt>.
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm. -
Для установки Helm-чарта
с продуктовым окружением Битрикс:-
Создайте в кластере новое пространство имен
bitrix-prod. -
Создайте локально папку
bitrixили, если ваш проект загружен в Git-репозиторий, скачайте репозиторий в эту папку:git clone <SSH_URL_репозитория> bitrix -
Подготовьте образ приложения Битрикс с PHP:
-
Скачайте образ
bitrix-admin-php:docker pull cr.yandex/yc-marketplace/yandex-cloud/bitrix-env/bitrix/bitrix-admin-php1764089856329713384751806090650435327427957097722:8.2.29 -
Установите тег в реестре, созданном ранее:
docker tag cr.yandex/yc-marketplace/yandex-cloud/bitrix-env/bitrix/bitrix-admin-php1764089856329713384751806090650435327427957097722:8.2.29 cr.yandex/<идентификатор_реестра>/bitrix-env/bitrix/bitrix-admin-php -
Создайте в директории с папкой
bitrixфайлDockerfile-phpсо следующим содержимым:FROM cr.yandex/<идентификатор_реестра>/bitrix-env/bitrix/bitrix-admin-php COPY --chown=bitrix:bitrix bitrix/ /home/bitrix/www WORKDIR /home/bitrix/www -
Соберите Docker-образ для установки продуктового окружения с помощью команды:
docker build --platform linux/amd64 \ -f Dockerfile-php \ -t cr.yandex/<идентификатор_реестра>/bitrix-prod-php \ --no-cache . -
Отправьте полученный образ в реестр с помощью команды:
docker push cr.yandex/<идентификатор_реестра>/bitrix-prod-php
-
-
Аналогично выполненным шагам из п. 2, подготовьте образ Битрикс с NGINX
bitrix-prod-nginxна основе базового образаcr.yandex/yc-marketplace/yandex-cloud/bitrix-env/bitrix/bitrix-admin-nginx1764089856329713384751806090650435327427957097722:1.28. -
Выполните установку Helm-чарта:
helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/bitrix-env/chart/bitrix-env \ --version 1.0.5 \ --untar && \ helm install \ --namespace bitrix-prod \ --set environment=prod \ --set replicaCount=<количество_реплик_подов_Битрикс> \ --set fqdn="<доменное_имя_сайта_Битрикс>" \ --set loadBalancerIP="<IP-адрес_балансировщика>" \ --set features.cron=<использовать_cron_для_запуска_агентов> \ --set features.push=<использовать_сервер_очередей> \ --set features.sphinx=<использовать_поиск_Sphinx> \ --set features.phpExporter=<экспортировать_метрики_PHP> \ --set features.nginxExporter=<экспортировать_метрики_NGINX> \ --set s3.secret.accessKey="<идентификатор_ключа_бакета>" \ --set s3.secret.secretKey="<секретный_ключ_бакета>" \ --set s3.bucket="<имя_бакета>" \ --set msmtprc.host="<FQDN_почтового_сервера>" \ --set msmtprc.port="<порт_почтового_сервера>" \ --set msmtprc.user="<имя_пользователя_почтового_сервера>" \ --set msmtprc.password="<пароль_пользователя_почтового_сервера>" \ --set push.key="<секретный_ключ_Push_сервера_Битрикс>" \ --set mysql.host="<FQDN_хоста_MySQL>" \ --set mysql.login="<имя_пользователя_MySQL>" \ --set mysql.password="<пароль_пользователя_MySQL>" \ --set mysql.database="<имя_базы_данных_MySQL>" \ --set php.image="cr.yandex/<идентификатор_реестра>/bitrix-prod-php" \ --set nginx.image="cr.yandex/<идентификатор_реестра>/bitrix-prod-nginx" \ --set certmanager.enabled=false \ --set tls.existingSecret="<имя_секрета_с_сертификатом>" \ bitrix ./bitrix/При использовании certmanager для выпуска сертификата вместо параметров
tls.existingSecretиcertmanager.enabled=falseукажите параметры:certmanager.issuer="<ресурс_Issuer_или_ClusterIssuer>"certmanager.email="<электронная_почта_для_уведомлений_от_Lets_Encrypt>".
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
-
Работа с репозиторием Git
Работа с репозиторием возможна только в административном окружении.
-
Подключитесь к контейнеру пода в административном окружении:
kubectl -n bitrix-space exec \ <имя_пода_bitrix_main> \ -c git -it -- \ sh /home/bitrix/www $ -
В контейнере доступны команды
git, а также вспомогательный скрипт/scripts/commit-all.shдля загрузки изменений из папкиbitrixв настроенный ранее репозиторий. Для использования выполните команду:/scripts/commit-all.sh <описание commit>