Архивная Java/Spring-реализация OSA Proxy
Эта страница описывает архивную Java/Spring-реализацию OSA Proxy. Для новых установок используйте текущую реализацию: OSA Proxy.
Общее описание
OSA Proxy (repo-manager-proxy) — это прокси-сервис, выступающий посредником между пакетными менеджерами и их удалёнными репозиториями. Он интегрируется с платформой CodeScoring и обеспечивает автоматическое сканирование загружаемых компонентов и блокировку небезопасных пакетов в соответствии с политиками безопасности.
Сервис перехватывает запросы, выполняемые пакетными менеджерами, отправляет их в исходные репозитории, анализирует полученные пакеты, модифицирует ответы и управляет доступом к компонентам.
В основе сервиса используется асинхронная модель обработки и механизм автоматических повторов при временных ошибках.
Поддерживаемые пакетные менеджеры
OSA Proxy обрабатывает запросы к следующим репозиториям:
- Maven Central (
https://repo1.maven.org/maven2) - NPM Registry (
https://registry.npmjs.org) - PyPI (
https://pypi.org) - NuGet V3 (
https://api.nuget.org) - Go (
https://proxy.golang.org/) - Debian (
https://ports.ubuntu.com/ubuntu-ports) - Alpine/APK (
https://dl-cdn.alpinelinux.org/alpine) - RPM (
https://repo.almalinux.org/almalinux) - Docker Registry (
https://registry-1.docker.io)
Сервис также поддерживает альтернативные репозитории, реализующие официальные спецификации соответствующего пакетного менеджера (например Nexus Repository и JFrog Artifactory).
Основные возможности
Сканирование пакетов
Для каждой экосистемы реализованы два уровня сканирования:
- Сканирование манифестов — анализ и исключение заблокированных политиками безопасности версий из манифеста
- Сканирование пакетов — анализ загружаемых файлов пакета
Блокировка небезопасных компонентов
Если компонент нарушает правила политики безопасности:
- небезопасные версии исключаются из списка доступных в манифесте;
- скачивание соответствующих архивов блокируется;
- возвращается настраиваемый код состояния с сообщением о причине блокировки.
Модификация ответов
OSA Proxy автоматически модифицирует ответы от оригинальных репозиториев:
- перенаправляет все URL;
- удаляет заблокированные версии из метаданных;
- пересчитывает контрольные суммы изменённых манифестов, чтобы сохранить корректность формата.
Кэширование результатов проверки политик
Для ускорения обработки запросов и снижения нагрузки на платформу поддерживается кэширование результатов проверки политик (вердиктов сервиса Judge) в Redis. Поддерживается фоновое обновление устаревших записей.
Режимы работы
Поведение сканирования пакетов регулируется параметром work-mode. В зависимости от выбранного значения меняется логика обработки сканирования, ожидания и блокировки. Поддерживаются следующие режимы:
warmup– загрузка данных в кэш CodeScoring без блокировки компонентов;spectator– загрузка данных в кэш CodeScoring без блокировки компонентов, сохранение результатов запросов компонентов в платформе;moderate– блокировка компонентов, не прошедших проверку политик. Разрешена загрузка непросканированных компонентов;strict– блокировка компонентов, не прошедших проверку политик. Запрещена загрузка непросканированных компонентов;strict_wait– блокировка компонентов, не прошедших проверку политик. Ожидание проверки для непросканированных компонентов.
Развертывание
После настройки файла application.yml приложение может быть либо развернуто и выполнено в среде контейнера Docker, либо оркестрировано с помощью Helm-чарта в Kubernetes.
Развертывание в контейнере Docker
Чтобы запустить приложение как контейнер Docker, выполните следующую команду:
Развертывание в Kubernetes (Helm Chart)
Для сред Kubernetes приложение может быть развернуто с использованием предоставленного Helm-чарта, доступного по адресу https://{REGISTRY_URL}/repository/helm.
Порядок установки:
-
Создать namespace.
-
Создать secret для доступа к приватному реестру Docker-образов, используя адрес (
REGISTRY_URL), логин (USERNAME) и пароль (PASSWORD), полученные от вендора. -
Установить Helm предпочтительным способом.
-
Выполнить следующие команды для добавления актуального Helm-репозитория на локальную машину:
-
Создать файл
values.yamlсо следующим содержимым: -
Выполнить команду для установки чарта
Настройка сервиса
Основные параметры
Конфигурация OSA Proxy осуществляется через файл application.yml:
- Для JFrog Artifactory рекомендуется выставить
Custom Base URLи использовать его в полеregistryдля корректной замены ссылок на пакеты внутри манифестов; - В конфигурации
пакетный менеджер->jfrog->OSA proxy->internet, в дополнительных настройках репозитория JFrog необходимо выставить флагBypass HEAD requests. - Для Nexus Repository идентичного функционала нет, в манифестах будет использован хост и порт (если указан) из запроса. При наличии
reverse proxyрекомендуется использовать ссылку на него. Например:registry: https://nexushost.ru/repository/pypi-proxy.
Дополнительные настройки
Настройки уровня логирования
Просмотр заблокированных пакетов в логах
Чтобы найти заблокированные пакеты в логах приложения, убедитесь, что уровень логирования для ru.codescoring установлен на info или ниже. Компонент PolicyLogger выводит информацию о заблокированных пакетах в следующих форматах:
- Для пакетов, заблокированных политиками:
Policy '<policy_name>' blocked package '<package_name>' versions: [<versions>] - Для пакетов OSA, заблокированных платформой:
Policy blocked package '<purl>' for endpoint '<endpoint>': <reason>
Логирование внешних запросов
Внешние запросы в сторонние реестры можно логировать с помощью логгера ru.codescoring.proxy.logging.RegistryRequestResponseLogger. Для этого необходимо установить уровень логирования trace для данного компонента.
Режим обработки заблокированных версий в манифестах
Параметр codescoring.remove-blocked-versions управляет тем, как заблокированные версии пакетов отображаются в манифестах npm, PyPI и NuGet:
true(по умолчанию) — заблокированные версии полностью удаляются из манифеста. Пакетный менеджер не видит их и не предлагает пользователю.false— заблокированные версии остаются в манифесте, но помечаются как устаревшие с указанием имени сработавшей политики:- npm — поле
deprecatedверсии содержит имя политики; - PyPI — атрибут
data-yankedссылки на пакет содержит имя политики; - NuGet — поле
deprecation.messageзаписи содержит имя политики,listedустанавливается вfalse.
- npm — поле
Размер буфера для обработки больших манифестов
Политики повторных попыток и circuit breaker для запросов к платформе:
Настройка повторных попыток
Эта конфигурация определяет политику повторных попыток для сервиса codeScoringApi. Она настроена на обработку временных сбоев путем повторной попытки запроса до 3 раз.
Повторные попытки используют стратегию экспоненциального отступления, начиная с задержки в 1 секунду и удваивая ее с каждой попыткой. Эта политика применяется только к определенным исключениям, таким как WebClientRequestException.
Настройка Circuit Breaker
Circuit breaker (автоматический выключатель) для codeScoringApi действует как механизм быстрого отказа. Он отслеживает частоту сбоев и, если она достигает 50% (рассчитывается по последним 20 вызовам), он «открывается» и предотвращает дальнейшие запросы в течение 30 секунд. Это дает нижестоящему сервису время на восстановление. После периода ожидания он переходит в «полуоткрытое» состояние, позволяя пройти 5 пробным вызовам, чтобы определить, восстановился ли сервис.
Конфигурация Retry и Circuit Breaker может быть переопределена путем установки следующих свойств, например, для codeScoringApi.
Добавление truststore сертификатов
Добавление http proxy
Настройка Redis и кэширования
Для повышения производительности и снижения нагрузки на платформу CodeScoring поддерживается кэширование результатов работы политик (вердиктов сервиса Judge). Для работы кэширования требуется подключение к Redis.
Проактивное обновление не продлевает TTL (время жизни) записи в кэше. TTL продлевается только при чтении данных из кэша реальными запросами пользователей. Это позволяет автоматически удалять из Redis редко запрашиваемые пакеты и хранить только востребованные данные.
Swagger UI
OSA Proxy предоставляет Swagger UI для просмотра документации API и управления кэшем.
- URL:
http://<osa-proxy-host>:<port>/api/swagger - Доступные операции:
- Очистка кэша по PURL
- Очистка кэша по типу пакета
Поддерживаемые протоколы
Данный раздел содержит форматы данных и правила модификации ответов для каждого поддерживаемого пакетного менеджера в OSA Proxy.
Maven
Обрабатываемые файлы
maven-metadata.xml- манифест с информацией о версиях.jar,.war,.ear- файлы пакетов
Модификация полей в maven-metadata.xml
NPM
Обрабатываемые файлы
- JSON манифест пакета (путь
/{repository}/*) .tgz- архивы пакетов
Модификация полей в NPM манифесте
PyPI
Обрабатываемые файлы
- HTML страницы Simple API (путь
/{repository}/simple/*) .zip,.tar,.tgz,.tar.gz,.tar.bz2,.egg,.whl- файлы пакетов
Модификация HTML страниц
- Удаляются ссылки для заблокированных версий
- Перезаписываются URL для скачивания через прокси
NuGet
Обрабатываемые файлы
index.json- сервисный индекс- Registration index JSON
.nupkg- файлы пакетов
Модификация registration индекса
Go
Обрабатываемые файлы
- Список версий (
/@v/list) .zip— архивы модулей
Модификация списка версий
- Из списка версий удаляются заблокированные версии.
Debian
Обрабатываемые файлы
.deb— файлы пакетов
Для Debian поддерживается только сканирование пакетов. Модификация манифестов (файлов Packages) не производится.
Alpine
Обрабатываемые файлы
.apk— файлы пакетов
Для Alpine поддерживается сканирование пакетов. Модификация индексов (APKINDEX) не производится.
RPM
Обрабатываемые файлы
.rpm— файлы пакетов
Для RPM поддерживается сканирование пакетов. Модификация метаданных (repodata) не производится.
Docker
Обрабатываемые файлы
- Manifests (v2 API)
- Слои образов (Blobs)
Модификация манифестов
- Из мультиархитектурных манифестов (Manifest Lists) удаляются дайджесты заблокированных образов.
Поведение при полной блокировке пакета
В случае, когда все доступные версии запрашиваемого пакета заблокированы политиками безопасности, OSA Proxy возвращает сообщение о блокировке всех версий.
Поскольку некоторые клиенты пакетных менеджеров могут не отображать это специфическое сообщение о блокировке в пользовательском интерфейсе, рекомендуется использовать утилиту curl для прямой диагностики статуса пакета. Ниже представлены примеры запросов с использованием curl для проверки статуса блокировки для различных типов пакетов:
Pip
Maven
npm
NuGet
Хотя NuGet-клиент может выводить причину блокировки всех пакетов в консоли, прямой запрос через curl также позволяет получить подтверждение статуса:
Go
Cбор метрик
Метрики доступны в OSA Proxy по адресу {osa-proxy-url}/actuator/metrics в формате JSON, а также в формате для prometheus {platform-url}/actuator/prometheus.
Эти метрики собираются для каждого типа репозитория (maven, pypi, nuget, npm, go, debian, alpine, rpm, docker) и позволяют детально отслеживать входящие запросы к прокси-репозиториям.
Доступные метрики
gateway_route_<package-type>_requests_seconds_count– общее количество обработанных запросов;gateway_route_<package-type>_requests_seconds_sum– суммарное время обработки запросов, используется для расчета среднего времени ответа;gateway_route_<package-type>_requests_seconds_max– максимальное время обработки запроса;gateway_route_<package-type>_requests_seconds_bucket– SLO (Service Level Objective) метрики времени ответа с бакетами: 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s, 2s, 5s.
В рамках сбора метрик <package-type> заменяется на соответствующий тип репозитория: maven, pypi, nuget, npm, debian, alpine, rpm, docker. Например, для Maven-репозитория метрика будет называться gateway_route_maven_requests_total.
Данные метрики можно отфильтровать по следующим лейблам:
operation– тип операции, выполняемой с пакетом;scan_package– сканирование пакета;scan_manifest– сканирование манифеста;other– другие операции (например передача файлов не подпадающих под анализ).
method– HTTP-метод запроса (GET,POST,PUT, и т.д.);repository– имя репозитория, к которому был выполнен запрос;status– код статуса HTTP-ответа (например,200,403,500);outcome– результат обработки запроса;success– запрос успешно обработан;error– произошла ошибка при обработке (статус 400 и выше, кроме кода блокировки);blocked_by_policies– запрос был заблокирован политиками безопасности.
Метрики обращений в CodeScoring
Для мониторинга взаимодействия с платформой CodeScoring доступны следующие метрики:
codescoring_api_requests_seconds_count– общее количество запросов к API CodeScoring;codescoring_api_requests_seconds_sum– суммарное время выполнения запросов к API;codescoring_api_requests_seconds_max– максимальное время выполнения запроса к API;codescoring_api_requests_seconds_bucket– SLO метрики времени ответа API с бакетами: 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s, 2s, 5s.
Данные метрики позволяют отслеживать:
- Производительность взаимодействия с платформой CodeScoring
- Количество запросов на сканирование компонентов
- Время отклика API для выявления проблем связи
- Нагрузку на платформу со стороны OSA Proxy
Параметры в URL в формате Base64
Применение параметров в URL в формате Base64 для osa-proxy
Взаимодействие с osa-proxy в некоторых сценариях требует явного указания дополнительных параметров в пути URL. Это достигается путём кодирования требуемой информации в формате Base64 (URL-safe).
Основная цель использования Base64-кодированных параметров — предоставление osa-proxy необходимого контекста для корректного применения политик безопасности, особенно когда osa-proxy выступает в роли посредника для внешних репозиториев.
Автоматическое определение контекста
Когда osa-proxy размещён между клиентом (пакетным менеджером) и внутренним менеджером репозиториев (например, JFrog Artifactory или Nexus Repository Manager), osa-proxy может автоматически извлечь информацию о хосте и имени репозитория из настроек конечного репозитория.
Пример конфигурации, где контекст определяется автоматически:
Явное указание контекста через Base64-параметры
В случаях, когда osa-proxy напрямую взаимодействует с внешними, общедоступными репозиториями (например, https://registry.npmjs.org), он не имеет возможности самостоятельно получить информацию о внутреннем хосте и имени репозитория. В такой ситуации для osa-proxy критически важно получить эти данные для применения привязанных политик безопасности и правильной обработки запроса.
Для этого используется строка, закодированная в Base64, которая содержит JSON-объект с параметрами, такими как repoManagerHost и repoName. Эта строка встраивается непосредственно в URL запроса, позволяя osa-proxy получить необходимый контекст.
Пример конфигурации, требующей явного указания контекста:
Механизм работы:
Закодированная строка параметров в формате Base64 размещается в пути URL сразу после имени репозитория. osa-proxy декодирует эту строку, извлекает параметры и использует их для выполнения своих функций, включая применение политик безопасности, ассоциированных с конкретным внутренним репозиторием.
Общая структура URL:
https://<osaproxy-host>/<repository-name>/<base64-parameters>/<rest-of-path>
Передача контекста для корректной работы политик безопасности, привязаных к репозиториям Nexus и Artifactory
Клиент разработчика -> Nexus / Artifactory -> osa-proxy -> Интернет
Для передачи контекстной информации, включающей хост и имя репозитория вашего менеджера репозиториев, эти данные следует интегрировать в Base64-кодированную строку параметров. Важно строго соблюдать правило, согласно которому данная Base64-строка должна располагаться непосредственно после имени репозитория в URL-адресе.
Обновление конфигурации
Необходимо пометить репозиторий, как совместимый с Base64 параметрами url-encoded-config: true
Nexus
- Перейдите в Server Administration -> Repositories.
- Выберите желаемый тип (например,
maven2 (proxy)). - В поле Remote storage введите URL вашего экземпляра
osa-proxy, включая имя репозитория и параметры, закодированные в Base64.
Пример для прокси-репозитория Maven:
https://osaproxy.example.com/internet-maven/eyJyZXBvTWFuYWdlckhvc3QiOiJodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIiLCJyZXBvTmFtZSI6ImludGVybmV0LW1hdmVuIn0/maven2
Artifactory
- Перейдите в Administration -> Repositories -> Remote.
- В конфигурации установите поле URL на URL
osa-proxy. Этот URL должен включать имя репозитория и строку, закодированную в Base64.
Пример для удаленного репозитория PyPI:
https://osaproxy.example.com/internet-pypi/eyJyZXBvTWFuYWdlckhvc3QiOiJodHRwczovL3B5cGkub3JnL3NpbXBsZSIsInJlcG9OYW1lIjoiaW50ZXJuZXQtcHlwaSJ9
Правило
Закодированная строка параметров в формате Base64 должна быть размещена в пути URL сразу после имени репозитория.
Общая структура URL выглядит следующим образом:
https://<osaproxy-host>/<repository-name>/<base64-parameters>/<rest-of-path>
Где:
<osaproxy-host>: Имя хоста экземпляраosa-proxy.<repository-name>: Имя репозитория, к которому осуществляется доступ.<base64-parameters>: Закодированная в URL-safe Base64 JSON-строка, содержащая параметры.<rest-of-path>: Оставшаяся часть пути из настроек пакетного менеджера.
Пример
Например, нужно передать следующие параметры в виде JSON-объекта.
Для этого следует:
- Преобразовать JSON-объект в строку.
- Закодировать строку с использованием URL-safe Base64.
Результат кодирования JSON-объекта выше в Base64:
eyJyZXBvTWFuYWdlckhvc3QiOiJodHRwczovL25leHVzLnRlc3QucnUiLCJyZXBvTmFtZSI6Im5wbS1wcm94eSJ9
Настройка менеджеров пакетов
Чтобы постоянно использовать URL с параметрами в формате Base64 для всех запросов, необходимо обновить конфигурационный файл вашего менеджера пакетов.
NPM
Для NPM нужно отредактировать файл .npmrc и установить ключ registry.
URL должен включать имя репозитория и строку, закодированную в Base64.
Maven
Для Maven нужно отредактировать файл settings.xml. Вы можете добавить новое <mirror> в секцию <mirrors>.
Тег <url> должен содержать полный URL, включая имя репозитория и строку, закодированную в Base64.
Убедитесь, что значение <mirrorOf> соответствует репозиториям, которые вы хотите проксировать.
Go
Для Go установите переменную окружения GOPROXY, чтобы она включала имя репозитория и строку, закодированную в Base64.
Debian
Для Debian нужно отредактировать файл /etc/apt/sources.list или файл в /etc/apt/sources.list.d/. Обновите поле URIs.
NuGet
Для NuGet отредактируйте файл NuGet.config и добавьте новый источник пакетов. Атрибут value тега <add> должен содержать полный URL.
PyPI
Для PyPI отредактируйте файл pip.conf (Linux/macOS) или pip.ini (Windows) и установите index-url.
Конфигурация Maven
Миграция URL репозитория
Сценарий использования: миграция репозитория Maven с Artifactory на OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для Maven. Параметры аутентификации и другие настройки, такие как имя пользователя и пароль, остаются без изменений.
Миграция Maven репозитория
Исходный файл .m2/settings.xml:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию maven. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
Обновлённый файл .m2/settings.xml:
Конфигурация NPM
Миграция URL репозитория
Сценарий использования: миграция репозитория npm с Artifactory на OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для NPM. Параметры аутентификации и другие настройки, такие как имя пользователя и пароль, остаются без изменений.
Миграция NPM репозитория
Исходный файл .npmrc:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию npm. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
Обновлённый файл .npmrc:
Конфигурация NuGet
Миграция URL репозитория
Сценарий использования: миграция репозитория NuGet с Artifactory на OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для NuGet. Параметры аутентификации и другие настройки, такие как имя пользователя и пароль, остаются без изменений.
Миграция NuGet репозитория
Исходный файл NuGet.config:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию nuget. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
Обновлённый файл NuGet.config:
Конфигурация PyPI
Миграция URL репозитория
Сценарий использования: миграция репозитория PyPI с Artifactory на OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для PyPI. Параметры аутентификации и другие настройки, такие как имя пользователя и пароль, остаются без изменений.
Миграция PyPI репозитория
Исходный файл pip.conf (Linux/macOS) или pip.ini (Windows):
Или с аутентификацией:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию pypi. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
Пример настройки для GitLab в application.yml:
Обновлённый файл pip.conf (Linux/macOS) или pip.ini (Windows):
Или с аутентификацией:
Настройка нескольких реестров пакетов
Некоторые PyPI-репозитории могут отдавать пакеты с нескольких хостов. Например, индекс download.pytorch.org содержит ссылки как на собственные CDN-хосты, так и на стандартный files.pythonhosted.org.
Для корректного проксирования таких репозиториев используется параметр additional-packages-registries — словарь, где ключ задаёт хост источника, а значение — URL реестра пакетов, на который нужно перенаправлять запросы.
Пример настройки для репозитория PyTorch:
Расположение конфигурационных файлов
- Linux/macOS:
~/.config/pip/pip.confили~/.pip/pip.conf - Windows:
%APPDATA%\pip\pip.iniили%HOME%\pip\pip.ini - Для virtualenv:
$VIRTUAL_ENV/pip.conf
Конфигурация Go
Миграция прокси для Go
Сценарий использования: миграция Go для использования OSA Proxy вместо прямого доступа или внешних публичных прокси.
Следующая таблица содержит сводку по перенаправлению URL для прокси Go. Параметры аутентификации и другие настройки (если применимы, например, для частных репозиториев, требующих специфических учетных данных) должны быть настроены отдельно в соответствии с вашими корпоративными политиками (например, через .netrc или SSH-ключи).
Checksum DB не является отдельным GOPROXY-эндпоинтом. Вместо этого он настраивается через переменную GOSUMDB. Подробнее — в разделе ниже.
Детали миграции прокси Go
Настройка окружения до миграции
До миграции ваш GOPROXY мог быть установлен на публичный прокси Go (https://proxy.golang.org) или не задан вовсе, что приводило к использованию proxy.golang.org по умолчанию.
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию go. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
Пример текущей конфигурации переменных окружения (например, в файле .bashrc, .zshrc или в CI/CD пайплайне):
Настройка Checksum Database
Для проксирования запросов к sum.golang.org через OSA Proxy используется переменная GOSUMDB. Её значение задаётся в формате <имя-базы> <url-прокси>, где URL строится как {osa-proxy-url}/{repo-name}/sumdb/sum.golang.org:
Полный пример запуска:
Конфигурация Debian пакетов
Миграция URL репозитория
Сценарий использования: миграция репозиториев Debian с прямых источников на прокси-сервер OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для Debian. Обратите внимание, что формат строк репозитория deb или deb-src (дистрибутив, компоненты) остается без изменений, меняется только базовый URL репозитория.
Миграция APT репозитория
Исходный файл /etc/apt/sources.list или /etc/apt/sources.list.d/*.list:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию debian. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
После настройки прокси-сервера и добавления его в application.yml, ваш sources.list будет выглядеть так:
Конфигурация Docker Registry
Миграция URL реестра
Сценарий использования: миграция Docker реестров с прямых источников на прокси-сервер OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL для Docker.
Миграция Docker клиента
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию docker. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
После настройки прокси-сервера и добавления его в application.yml, команда для загрузки образа будет выглядеть так:
Использование поддоменов для доступа
При использовании более одного Docker-репозитория необходимо включить поддержку поддоменов. Имена поддоменов должны соответствовать именам репозиториев из конфигурации docker.repository.
В этом случае команда для загрузки образа будет выглядеть так:
Если настроен только один репозиторий, использование поддоменов не требуется — Docker-реестр будет доступен напрямую через хост OSA Proxy:
Конфигурация Alpine пакетов
Миграция URL репозитория
Сценарий использования: миграция репозиториев Alpine с прямых источников на прокси-сервер OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для Alpine.
Миграция APK репозитория
Исходный файл /etc/apk/repositories:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию alpine. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
После настройки прокси-сервера и добавления его в application.yml, ваш файл репозиториев будет выглядеть так:
Конфигурация RPM пакетов
Миграция URL репозитория
Сценарий использования: миграция репозиториев RPM (YUM/DNF) с прямых источников на прокси-сервер OSA Proxy.
Следующая таблица содержит сводку по перенаправлению URL репозиториев для RPM.
Миграция YUM/DNF репозитория
Исходный файл /etc/yum.repos.d/almalinux.repo:
Следующее определение репозитория необходимо добавить в YAML-конфигурацию сервиса (файл application.yml) в секцию rpm. Для применения изменений требуется перезапуск сервиса.
Конфигурация в файле application.yml
После настройки прокси-сервера и добавления его в application.yml, конфигурация репозитория будет выглядеть так:
