Получение артефактов установки | On-Premise | 2GIS Documentation
On-Premise

Получение артефактов установки

  1. Убедитесь, что выполнена подготовка к установке.

  2. Соберите необходимые данные, полученные на предыдущем шаге:

    Объект Значение Как получить значение
    Лицензия на программный комплекс 2ГИС DEMO-KEY-DGCTL-AAAAAA-BBBBBB См. Подготовка к установке
  3. Убедитесь, что удовлетворены следующие требования к ресурсам:

    Общее количество ресурсов Хранилище
    Для S3-совместимого хранилища артефактов установки 800 Гб
    Для реестра Docker 100 Гб

Этот хост будет обслуживать реестр Docker. Хост должен быть доступен в публичной сети, см. Подготовка сетевой инфраструктуры.

Чтобы настроить хост:

  1. Установите Ubuntu 20.04 LTS.

  2. Установите Docker Registry 2.71.

    Реестр должен быть доступен по адресу https://docker.example.com:5000/.

  3. Настройте аутентификацию в реестре по имени пользователя и паролю.

    Пример:

    • Имя пользователя: registry
    • Пароль: DOCKERregistryP@ssW0rd

Этот хост будет обслуживать S3-совместимое хранилище артефактов установки. Хост должен быть доступен в публичной сети, см. Подготовка сетевой инфраструктуры.

Чтобы настроить хост:

  1. Установите Ubuntu 20.04 LTS.

  2. Установите подходящее для ваших задач S3-совместимое хранилище. Рекомендуется использовать Ceph 14.2.22.

    Хранилище должно быть доступно по адресу https://artifacts.example.com:443/.

  3. В установленном хранилище создайте бакет onpremise-artifacts нужного размера.

  4. Назначьте этому бакету сервисный аккаунт с правами на чтение и запись.

    Для этого сервисного аккаунта сгенерируйте ключ, с помощью которого можно будет получить доступ к бакету.

    Пример:

    • Идентификатор ключа: AKIAIOSFODNN7EXAMPLE
    • Секрет ключа: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY

Этот хост будет обслуживать утилиту 2GIS CLI. Хост должен быть доступен в публичной сети, см. Подготовка сетевой инфраструктуры.

Чтобы настроить хост:

  1. Установите Ubuntu 20.04 LTS.

  2. Установите Docker Engine 19.03.4.

  3. Организуйте доступ с этого хоста к сервисам, настроенным ранее:

    • https://docker.example.com:5000/
    • https://artifacts.example.com:443/
  1. Зайдите по SSH на хост example.com.

  2. Создайте конфигурационный файл dgctl-config.yaml. Подробное описание доступных параметров см. в документе здесь.

    dgctl-config.yaml
    key: DEMO-KEY-DGCTL-AAAAAA-BBBBBB
    log-format: json
    
    storage:
        type: s3
    
        host: artifacts.example.com:443
        bucket: onpremise-artifacts
        access-key: AKIAIOSFODNN7EXAMPLE
        secret-key: wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY
    
    docker:
        registry:
            username: registry
            password: DOCKERregistryP@ssW0rd
            server-address: https://docker.example.com:5000
            image-prefix: /
    
  3. Выполните команду для запуска утилиты 2GIS CLI.

    docker run --rm \
        -v $(pwd)/dgctl-config.yaml:/dgctl-config.yaml \
        -v /mnt/dgctl-source:/dgctl-source \
        -v /var/run/docker.sock:/var/run/docker.sock \
        2gis/dgctl:latest \
        pull --config=/dgctl-config.yaml --version=1.4.5 --apps-to-registry
    

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

    Пример:

    • manifests/1640661259.json

Создайте зеркала следующих ресурсов в приватной сети:

Ресурс Хост в публичной сети Хост-зеркало в приватной сети
Реестр Docker docker.example.com docker.storage.example.local
S3-совместимое хранилище артефактов установки artifacts.example.com artifacts.storage.example.local

Для зеркал в приватной сети эндпоинты будут отличаться от эндпоинтов в публичной сети:

Пример:

  • Эндпоинт зеркала реестра: docker.storage.example.local:5000
  • Эндпоинт зеркала хранилища: artifacts.storage.example.local:443

Этот секрет нужен, чтобы Helm, с помощью которого устанавливаются сервисы программного комплекса 2ГИС, мог получить доступ к Docker-образам, которые находятся в реестре. Без такого секрета любая операция, связанная с реестром, завершится неудачей.

Пример:

kubectl create secret docker-registry onpremise-registry-creds \
    --docker-server=docker.storage.example.local:5000 \
    --docker-username=registry \
    --docker-password=DOCKERregistryP@ssW0rd

Что дальше?