Deckhouse Kubernetes Platform (DKP) uses PackageRepositoryOperation to scan package registries. Each scan operation discovers new package versions and creates or updates ApplicationPackageVersion objects. Operations are created automatically on a schedule or can be created manually when needed.
Viewing scan operations
To view all scanning operations, use the command (you can use pro as a shorthand for packagerepositoryoperations):
d8 k get pro
Example output:
NAME COUNT COMPLETED MSG COMPLETIONTIME
test-scan-1780052895 23 True 3h38m
test-scan-1780053890 23 True 3h22m
Output columns:
| Column | Description |
|---|---|
Count |
Total number of packages found during the scan |
Completed |
Whether the operation finished (True / False) |
MSG |
Message from the Completed condition |
CompletionTime |
Time when the operation completed |
To filter operations by a specific repository, use the following command:
d8 k get pro -l packages.deckhouse.io/repository=<REPO_NAME>
Inspecting a scan operation
For full scan results including per-package details, use the following command:
d8 k get pro <operation-name> -o yaml
Key status fields:
| Field | Description |
|---|---|
status.startTime |
When the operation started |
status.completionTime |
When the operation completed |
status.packages.total |
Total packages found |
status.packages.processedOverall |
Total packages successfully processed |
status.packages.newVersionsOverall |
Total new versions across all packages |
status.packages.processed[] |
Per-package results: name, type, foundVersions, newVersions |
status.packages.failed[] |
Packages with errors: name, errors[] with version and message |
status.packages.discovered[] |
Packages first seen in this operation |
An example command for viewing packages with errors:
d8 k get pro <operation-name> \
-o jsonpath='{range .status.packages.failed[*]}{.name}: {range .errors[*]}{.version} - {.message}{"\n"}{end}{end}'
Triggering a manual scan
By default, each PackageRepository creates a new scan operation 6 hours after the previous one completed (configurable via spec.scanInterval).
To scan immediately, create a PackageRepositoryOperation manually with the following example:
apiVersion: deckhouse.io/v1alpha1
kind: PackageRepositoryOperation
spec:
packageRepositoryName: my-registry
type: Update
update:
fullScan: true
timeout: 5m
Use generateName instead of name so you can create multiple operations without name conflicts.
Alternatively, to create a scan operation, you can use the following command:
d8 system package scan <REPO_NAME>
This command creates a PackageRepositoryOperation with spec.type: Update and spec.update.fullScan: true.
fullScan flag
| Value | Behavior |
|---|---|
true |
Re-checks all tags in the registry, including those already known |
false (default) |
Only processes tags added since the last scan (incremental) |
Use fullScan: true when you suspect the registry was modified outside the normal workflow, or when ApplicationPackageVersion objects are missing versions that exist in the registry.