Kodera Packages — репозиторий контейнеров и пакетов.

Продукт позволяет управлять репозиториями пакетов и контейнеров, в том числе обеспечивает бесперебойный доступ к публикации и скачиванию пакетов и контейнеров, поиску требуемого пакета; позволяет управлять правами доступа к содержимому. Решение распространяется в виде on-premise инсталляции.

Базовые принципы

Работа Системы и ее развитие опирается на набор базовых принципов:

  • Обеспечение высокой доступности системы (High availability);
  • Возможность масштабировать Систему горизонтально на стороне заказчика (horizontal scaling);
  • Фокус на производительности Системы при хранении большого количества данных и большом количестве пользовательских запросов
  • Фокус на автоматизации тестирования;
  • Приоритет в использовании компонент с исходным кодом из реестра российского ПО;
  • Нужный уровень прозрачности всем участникам процесса (Black boх transparency).
Функциональные возможности

Система поддерживает популярные форматы пакетов

  • Файлы (бинарный формат)
  • Контейнеры (Docker)
  • PyPi (Python)
  • Go
Для каждого из поддерживаемых форматов реализованы

  • Просмотр содержимого репозитория
  • Скачивание пакетов
  • Обновление и создание новых версий пакетов
  • Работа через стандартные для типа пакета утилиты.
Доступ на основе ролей

Система использует ролевую модель (RBAC) для управление доступам к ресурсам в Системе.

Система позволяет использовать следующие предопределенные пользовательские роли:

  • User: (роль по умолчанию)
  • Admin: дает доступ к разделу Администрирование
  • Guest: дает доступ без аутентификации
Сервисные аккаунты

Сервисные аккаунты позволяют удобно управлять секретами для доступа к содержимому репозитория Kodera Packages со стороны других программных продуктов.

Система поддерживает добавление нескольких токенов для использования одним сервисным аккаунтом.
Поиск

Система поддерживает следующие опции поиска.

  • Поиск репозиториев по имени, описанию и автору
  • Поиск пакетов по имени
  • Поиск содержимое файловых репозиториев по имени
Для поиска выделен раздел Repositories > Search
Так же поиск доступен через REST API.
API для интеграции с внешними системами

Все важные функции системы доступны через встроенный REST API.

Система поддерживает формат Open API. По адресу {server_url}/v3/api-docs предоставляется метаописание.

Так же Система предоставляет пользовательский интерфейс для работы с API, который доступен по адресу {server_url}/swagger-ui.html
Технические детали

Система реализована с использования современных языков программирования - Java, TypeScript.

В архитектуре Системы заложены актуальные принципы

  • работа в облачной инфраструктуре;
  • поддержка большого объема данных, генерируемых современными командами разработки;
  • поддержка гео-распределенной инфраструктуры на стороне заказчика.
Использование внешних хранилищ

Система использует внешние современные, надежные хранилища, такие как

  • PostgreSQL для хранения основной информации
  • MiniO для хранения содержимого пакетов и контейнеров
  • ElasticSearch для построения поискового индекса.
Это позволяет эффективно масштабировать Систему при использовании в больших командах разработки. А также дает дополнительный уровень надежности, сохранности данных.

Интеграции

Система интегрируется с внешними программными продуктами используя библиотеки и утилиты.

Для реализации функций репозитория Go пакетов Система создает и управляет внутренними Git репозиториями, используя библиотеку JGit.

Система поддерживает работу с LDAP протоколом для аутентификации пользователей, используя встроенные средства платформы Spring.
Инструкция по установке и настройке (on-premise)
Помощь при инсталляции

Архив с установочными файлами отправляется вендором по электронной почте, указанной при заполнении заявки на демо-доступ. Скачайте полученный архив с установочными файлами, распакуйте и следуйте инструкциям ниже.

При проверке on-premise инсталляции Kodera Packages и при возникновении вопросов по установке или эксплуатации можно связываться со специалистами ООО “КОДЭРА”: support@kodera.dev
Установка

Подготовка зависимостей

В качестве зависимостей для сервиса Kodera Packages выступают PostgreSQL, Object Storage MinIO, Elasticsearch. Ниже приведены минимальные требования к вычислительным ресурсам и ресурсам хрананения сервисов, а так же их версии.

База данных PostgreSQL
  • Версия PostgreSQL 16
  • Минимальные требования: одна мастер нода 1 vCPU, 2 ГБ RAM, Диск 40 ГБ

Object Storage MinIO
  • Версия MinIO 16 2024-06-29T01-20-47Z
  • Минимальные требования: Single-Node Single-Drive конфигурация 1 vCPU, 2 ГБ RAM, Диск 40 ГБ

Elasticsearch
  • Версия Elasticsearch 7
  • Минимальные требования: одна Elasticsearch нода 1 vCPU, 2 ГБ RAM, Диск 40 ГБ

Подготовка инфраструктуры

Kodera Packages сервис запускается в виде Docker образа на виртуальной(физической) машине.
  • Операционная система Ubuntu 24.04 LTS
  • Архитектура x86_64
  • Минимальные требования к вычислительным ресурсам: 2 vCPU, 4 ГБ RAM

Сторонние пакеты:
  • Docker Engine 24
  • Docker Compose Plugin 2.24

Развертывание сервиса

Подготовка
Создайте директорию скачайте туда Kodera Packages архив с Docker compose файлом и файлом с переменными окружения необходимыми для запуска
mkdir -p /usr/local/kodera/
cd /usr/local/kodera
curl -Lohttps://storage.yandexcloud.net/kodera/docker-compose-kodera-packages-latest.tar.gz
tar xvf docker-compose-kodera-packages-latest.tar.gz && rm docker-compose-kodera-packages-latest.tar.gz
Отредактируйте .env файл добавив туда значения для PostgreSQL, ObjectStorage MinIO и Elasticsearch.
#
# Postgres env variables
DB_HOST=[IP адресс/Доменое имя]
DB_PORT=[Порт]
DB_DATABASE=[База данных]
DB_USERNAME=[Пользователь]
DB_PASSWORD=[Пароль]
#
# Object Storage env variables
STORAGE_BUCKET=[Имя бакета]STORAGE_URL=[Object Storage URL]
STORAGE_AK=[Access Key]
STORAGE_SK=[Secret Key]
#
# Elasticsearch
ELASTICSEARCH_URL=[URL]
ELASTICSEARCH_USERNAME=[Пользователь]
ELASTICSEARCH_PASSWORD=[Пароль]
#
# Kodera packages env variables
KODERA_ADMIN_USERNAME=[Kodera packages пользователь]
KODERA_ADMIN_PASSWORD=[Kodera packages пароль]
Запуск
cd /usr/local/kodera
docker compose up -d
Проверка
/usr/local/kodera$ docker compose ls
NAME         STATUS            CONFIG FILES
кodera       running(1)        /usr/local/kodera/docker-compose.yml
Просмотр логов
cd /usr/local/kodera
docker compose logs
Подключение
Kodera Packages запущен на порту 8080 , web ссылка http://[IP адрес виртуальной машины]:8080 , Имя пользователя / Пароль - те, что установлены в .env файле
Решение проблем
При необходимости начать процесс установки с нуля нужно выполнить очистку томов.

Если на сервере с докером нет других контейнеров, кроме Kodera Packages, выполнить команду:
docker system prune --all --volumes
Если на сервере есть ещё другие проекты на docker

  1. остановить docker-compose
  2. выполнить команду:
docker ••••••volume rm PROJECT_NAME__db-data
Если проблема не решается, обратиться в службу поддержки: support@kodera.dev
Настройка и начало использования

Активация лицензии

Для работы системы необходимо её активировать с помощью ключа, который
передается клиенту вместе с инструкцией по установке в отдельном txt-файле.
Для ввода ключа необходимо перейти в раздел Administration -> Licensing, нажать Activate license, скопировать текст из файла в поле ввода без каких-либо изменений и нажать Activate.
Создание аккаунта пользователя
Сотрудники организации получают доступ к системе после создания для них аккаунтов пользователей.

Создание аккаунта пользователя происходит в разделе Administration > Users.
Создание репозитория
Репозиторий представляет собой хранилище пакетов или контейнеров.
Создание репозитория доступно на главной странице приложения.

При создании можно указать тип репозитория и уровень доступа к нему.
Создание персонального токена
Для доступа к содержимому репозиториев пользователь может создать один или несколько персональных токенов.

Создание персонального токена происходит в разделе Profile > Personal Tokens.
Подключение к репозиторию
Для подключения к репозиторию пользователь может воспользоваться инструкциями, доступными по нажатию кнопки Connect на странице репозитория сразу после его создания.

Инструкции зависят от типа репозитория. Ниже приведен пример подключения к репозиторию контейнеров.
Руководство пользователя
Репозитории

Раздел содержит информацию по существующим в Системе репозиториям.
Репозиторий работает с одним из поддерживаемых типов пакетов.

В данный момент поддерживаются

  • Контейнеры
  • Файлы
  • PyPi пакеты
  • Go пакеты

По каждом репозиторию доступна следующая информация

  • Название
  • Краткое описание
  • Уровень доступа - private, public

Список проектов можно отфильтровать по имени.

По кнопке Edit можно перейти в настройки репозитория.
Тип репозитория: Контейнеры
Система поддерживает хранение и управление образами контейнеров (сокращенно - Контейнеры).
На странице содержимого репозитория доступен список опубликованных Контейнеров.

Для каждого контейнера доступен список опубликованных версий.

Для каждой версии Контейнера доступна информация о
  • Деталях
  • Конфигурации
  • Слоях

Система поддерживает публикацию, скачивание и просмотр содержимого репозитория через утилиты командной строки - Docker CLI, Helm CLI.

Инструкции по подключению доступны по кнопке Connect на странице содержимого репозитория.
Тип репозитория: Файлы
Система позволяет создавать репозитории для хранения файлов произвольного формата.

Страница содержимого репозитория показывает дерево загруженных файлов, детали по каждому файлу, а так же позволяет скачать и загрузить файлы.
Скачивание и загрузка возможно через пользовательский интерфейс или с помощью утилит командной строки.
Система позволяет искать загруженные файлы по имени. (см. раздел Поиск)
Тип репозитория: Python
Система позволяет управлять и хранить пакетами в формате Python Package Index (сокращенно - PyPi).
На странице содержимого репозитория доступен список опубликованных пакетов.

Для каждого пакета доступен список опубликованных версий.

Для каждой версии пакета доступна информация о
  • Деталях
  • Файлах

Важно! Система так же предоставляет доступ к стандартному PyPi индексу, доступному по адресу https://<hostname>/api/python/<repoName>/simple для каждого репозитория.

Система поддерживает публикацию, скачивание и просмотр содержимого репозитория через утилиты командной строки - pip, python3.

Инструкции по подключению доступны по кнопке Connect на странице содержимого репозитория.
Тип репозитория: Go
Система позволяет управлять и хранить пакетами для программ на языке Go.

Система поддерживает публикацию, скачивание и просмотр содержимого репозитория через утилиты командной строки - go, git.

Инструкции по подключению доступны по кнопке Connect на странице содержимого репозитория.
Поиск
Система поддерживает следующие опции поиска
  • Поиск репозиториев по имени, описанию и автору
  • Поиск пакетов по имени
  • Поиск содержимое файловых репозиториев по имени
Для поиска выделен раздел Repositories > Search

Так же поиск доступен через REST API.
Использование REST API
Все важные функции системы доступны через встроенный REST API,
Система поддерживает формат Open API. По адресу {server_url}/v3/api-docs предоставляется метаописание.

Так же Система предоставляет пользовательский интерфейс для работы с API, который доступен по адресу
{server_url}/swagger-ui.html

Для аутентификации запросов к API пользователь может использовать персональные токены.
Профиль пользователя
Пользователь может управлять данными своего профиля в разделе Profile.
В том числе
  • Устанавливать имя, email
  • Менять пароль
  • Управлять персональными токенами
Администрирование
Административные функции Системы собраны в разделе Administration.

Важно! Доступно только пользователю с ролью Admin.

Управление пользователями

Список зарегистрированных пользователей доступен на странице Administration > Users.

На той же странице можно создать нового пользователя. Поля формы
  • Никнейм
  • Полное имя
  • Email
  • Пароль
Так же возможно указать роли пользователя.
Доступ на основе ролей

Система позволяет использовать следующие предопределенные пользовательские роли:

  • User: (роль по умолчанию)
  • Admin: дает доступ к разделу Администрирование
  • Guest: дает доступ без аутентификации
Сервисные аккаунты

Сервисные аккаунты позволяют удобно управлять секретами для доступа к содержимому репозитория Kodera Packages со стороны других программных продуктов.

Управление сервисными аккаунтами доступно в разделе Administration > Services.
Система поддерживает добавление нескольких токенов для использования одним сервисным аккаунтом.
Лицензионный ключ

Для корректной работы Система требуется лицензионный ключ, который передается пользователю после приобретения Системы.

На странице Administration > Licensing есть возможность активировать лицензию и посмотреть детали используемого лицензионного ключа.