Deckhouse Platform (DP) использует PackageRepositoryOperation для сканирования реестров пакетов. Каждая операция сканирования обнаруживает новые версии пакетов и создаёт или обновляет объекты ApplicationPackageVersion. Операции создаются автоматически по расписанию или могут создаваться вручную при необходимости.

Просмотр операций сканирования

Для просмотра всех операций сканирования используйте команду (можно использовать pro — сокращенное имя для packagerepositoryoperations):

d8 k get pro

Пример вывода:

NAME                   COUNT   COMPLETED   MSG   COMPLETIONTIME
test-scan-1780052895   23      True              3h38m
test-scan-1780053890   23      True              3h22m

Колонки вывода:

Колонка Описание
Count Общее количество пакетов, найденных при сканировании
Completed Завершена ли операция (True / False)
MSG Сообщение из условия Completed
CompletionTime Время завершения операции

Для фильтрации операций по конкретному репозиторию используйте следующую команду:

d8 k get pro -l packages.deckhouse.io/repository=<REPO_NAME>

Детали операции сканирования

Для получения полных результатов сканирования с детализацией по пакетам используйте следующую команду:

d8 k get pro <имя-операции> -o yaml

Ключевые поля статуса:

Поле Описание
status.startTime Время начала операции
status.completionTime Время завершения операции
status.packages.total Всего найдено пакетов
status.packages.processedOverall Всего успешно обработано пакетов
status.packages.newVersionsOverall Суммарное количество новых версий по всем пакетам
status.packages.processed[] Результаты по каждому пакету: name, type, foundVersions, newVersions
status.packages.failed[] Пакеты с ошибками: name, errors[] с полями version и message
status.packages.discovered[] Пакеты, впервые обнаруженные в этой операции

Пример команды для просмотра пакетов с ошибками:

d8 k get pro <имя-операции> \
  -o jsonpath='{range .status.packages.failed[*]}{.name}: {range .errors[*]}{.version} - {.message}{"\n"}{end}{end}'

Запуск сканирования вручную

По умолчанию каждый PackageRepository создаёт новую операцию сканирования через 6 часов после завершения предыдущей (настраивается через spec.scanInterval).

Для немедленного сканирования создайте PackageRepositoryOperation вручную, по следующему примеру:

apiVersion: deckhouse.io/v1alpha1
kind: PackageRepositoryOperation
spec:
  packageRepositoryName: my-registry
  type: Update
  update:
    fullScan: true
    timeout: 5m

Используйте generateName вместо name, чтобы создавать несколько операций без конфликтов имён.

Альтернативно, для создания операции сканирования, можно использовать следующую команду:

d8 system package scan <REPO_NAME>

Эта команда создаёт PackageRepositoryOperation с spec.type: Update и spec.update.fullScan: true.

Флаг fullScan

Значение Поведение
true Повторно проверяет все теги в реестре, включая уже известные
false (по умолчанию) Обрабатывает только теги, добавленные с момента последнего сканирования (инкрементальное)

Используйте fullScan: true, если вы подозреваете, что реестр был изменён вне обычного рабочего процесса, или когда в объектах ApplicationPackageVersion отсутствуют версии, которые есть в реестре.

Дополнительные ресурсы