Подготовка файла ответов
Файл ответов предназначен для описания конфигурации окружения. Чтобы подготовить и начать использовать файл ответов:
-
Запустите контейнер с образом
shepherd:26.2.0и скопируйте файл ответов из шаблона:docker run --rm -v $PWD/env:/shepherd/.env shepherd:26.2.0 cp playbooks/preparation/files/.answers_file.tmpl.yaml .env/answers_file.yamlВ текущей директории локального хоста появится файл ответов
env/answers_file.yaml. -
Задайте в скопированном файле ответов значения параметров:
-
(Опционально) Задайте в файле ответов дополнительные настройки.
-
Укажите абсолютный путь до файла ответов при запуске плейбука инициализации Inventory (подробнее — в разделе Генерация Inventory).
Обязательный параметр, который задает идентификатор окружения и используется в качестве имени Inventory.
Допустимые символы:
- Строчные латинские буквы от
aдоz. - Цифры от
0до9. - Подчеркивание
_. - Дефис или минус
-.
Пример:
answers_inventory_name: "my-new-prod-env"
Параметр, который задает топологию развертывания.
Принимает значения:
prod— продуктивное развертывание: Kubernetes для сервисов без сохранения состояния (stateless services) и отказоустойчивый кластер Gitaly на выделенных виртуальных машинах.dev— развертывание для тестов и разработки: все сервисы запускаются внутри Kubernetes.
Пример:
answers_deployment_type: "prod"
Параметр, который позволяет подключить S3-совместимое хранилище для хранения резервных копий.
Принимает значения false и true.
Параметр, который задает URL-адрес S3-совместимого эндпоинта.
Пример:
answers_s3_endpoint: "https://s3.example.com"
Параметр, который задает идентификатор региона, определенный провайдером S3-хранилища.
Пример для VK Cloud или VK Private Cloud:
answers_s3_region: "ru-msk"
Выберите подходящий параметр в зависимости от сценария сертификации по таблице 1.
В вашей конфигурации должен быть активен (в значении true) только один параметр.
Источник сертификатов определяют параметры answers_crt_use_cert_mngr и answers_crt_use_wildcard.
Если они оба принимают значение false, на этапе подготовки Inventory настройте отдельные сертификаты для каждого сервиса (подробнее — в разделе Добавление отдельных TLS-сертификатов).
Сценарии сертификации | Параметры | ||
|
|
| |
Let's Encrypt через cert-manager |
| — | — |
Wildcard-сертификат, подписанный публичным CA |
|
|
|
Wildcard-сертификат, подписанный корпоративным или частным CA |
|
|
|
Самоподписанные сертификаты для каждого сервиса |
|
|
|
Параметр, определяющий источник сертификатов, которые выдаются автоматически через cert-manager. При выборе этого источника внутри кластера Kubernetes должен быть установлен и настроен cert-manager, который не входит в состав Shepherd.
Принимает значения false и true. По умолчанию — false.
При указании true значения параметров answers_crt_use_wildcard и answers_crt_use_selfsigned игнорируются.
Параметр, определяющий источник wildcard-сертификата (*.example.com), общего для всех сервисов.
Принимает значения false и true. По умолчанию — true.
Атрибут, определяющий, каким корневым CA подписан сертификат: частным (Private) или публичным доверенным (Public trusted). При запуске инсталлятора этот параметр используется как централизованный флаг. Его значение по умолчанию передается во все компоненты для настройки корневого CA.
Принимает значения false и true. По умолчанию — true.
Эта категория параметров зависит от значения параметра answers_deployment_type:
prod— параметры кластера Gitaly обязательны для указания;dev— параметры кластера Gitaly игнорируются.
Для работы GitLab в режиме высокой доступности (HA) нужен кластер Gitaly. Этим кластером управляет компонент Praefect, который выполняет роль прокси для маршрутизации запросов и репликации данных. Оба компонента запускаются на выделенных виртуальных машинах вне Kubernetes.
При задании параметров используются ключи:
int_ip— обязательный ключ для указания внутреннего IP-адреса, который нужен для обмена данными внутри кластера.ext_ip— опциональный ключ для указания внешнего IP-адреса, который нужен для подключений по SSH.
Параметр, который задает IP-адреса виртуальных машин в кластере Gitaly.
Пример:
answers_gitaly_cluster_vms:gitaly-1:int_ip: "10.0.0.1"ext_ip: "100.0.0.1"gitaly-2:int_ip: "10.0.0.2"gitaly-3:int_ip: "10.0.0.3"ext_ip: "100.0.0.2"
Внешний IP-адрес используется для SSH-подключений Ansible к ВМ.
Если к виртуальным машинам Gitaly можно получить доступ из деплой-ноды через внутренний IP-адрес, ключ ext_ip можно не указывать.
Параметр, который задает IP-адреса виртуальных машин Praefect.
Пример:
answers_praefect_vms:praefect-1:int_ip: "10.0.1.1"ext_ip: "100.0.1.1"praefect-2:int_ip: "10.0.1.2"
Внешний IP-адрес используется для SSH-подключений Ansible к ВМ.
Если к виртуальным машинам Praefect можно получить доступ из деплой-ноды через внутренний IP-адрес, ключ ext_ip можно не указывать.
Параметр, который позволяет развернуть стек observability: агенты Vector, агрегатор Vector и VMAgent.
Принимает значения false и true. По умолчанию — true.
Параметр, который позволяет включить доставку логов через Vector (на каждом узле) и агрегатор Vector (центральный коллектор). Логи подов или ВМ сначала передаются в Vector (DaemonSet), а затем в агрегатор Vector.
Включение этого параметра позволит настроить доставку логов из агрегатора Vector в вашу систему управления логами.
Принимает значения false и true. По умолчанию — true.
Игнорируется, если параметр answers_observability_install принимает значение false.
Параметр, который задает базовый домен для всех DNS-записей сервисов, используемых в окружении.
Пример:
answers_domain: "example.com"
Параметр, который задает список пользователей, создаваемых в Keycloak во время первичной подготовки. Эти учетные записи можно использовать для входа в VK Dev Platform и в другие сервисы.
Каждая запись должна включать поля username, firstName, lastName и email.
Пример:
answers_keycloak_users:- username: "iivanov@example.com"firstName: "Ivan"lastName: "Ivanov"email: "iivanov@example.com"- username: "ppetrov@example.com"firstName: "Petr"lastName: "Petrov"email: "ppetrov@example.com"
Параметр, который задает доменное имя (или IP-адрес с пользовательским портом) OCI-совместимого реестра (Nexus, Harbor) для хранения Docker-образов и Helm-чартов.
Этот реестр используется при установке, а также в жизненном цикле окружения в Kubernetes.
Пример:
answers_oci_registry: "nexus.internal.example.com"
Параметр, который позволяет использовать Helm-реестр по протоколу HTTP вместо HTTPS.
Принимает значения false и true.
Установите true, если Helm-реестр не поддерживает HTTPS.
Пример:
answers_helm_plain_http: true
Параметр answers_raw_custom_params позволяет переопределять переменные ролей Ansible в формате ключ-значение.
Подробнее — в разделе Переменные ролей Ansible.
Примеры:
-
Настройка сбора логов:
answers_raw_custom_params:vector:vector_resources_limits_memory: "2Gi"vector_aggregator:vector_pvc_size: 100Gi -
Переопределение Helm-значений GitLab:
answers_raw_custom_params:gitlab_release_values:global:appConfig:terraformState:enabled: truegitlab:gitaly:nodeSelector:dev-platform-node/gitlab-gitaly: gitlab-gitalygitaly:gitaly:persistence:storageClass: local-path -
Увеличение лимитов ресурсов для узлов кластера PostgreSQL:
answers_raw_custom_params:zalando_pg_cluster_resources_limits_memory: 8Gizalando_pg_cluster_resources_limits_cpu: "8" -
Использование конструкции
{% raw %}...{% endraw %}для указания ссылок на другие переменные:answers_raw_custom_params:some_url: "{% raw %}https://{{ some_domain }}/path{% endraw %}" -
Добавление дополнительных репозиториев RPM-пакетов:
answers_raw_custom_params:common_gitlab_ha_extra_repos:- |[extra-repo1]name=extra-repo1baseurl="https://nexus.internal.example.com/path"repo_gpgcheck=0gpgcheck=0enabled=1sslverify=0metadata_expire=300