Index Detection is a feature that automatically discovers Nydus alternative manifests within OCI index manifests. This enables transparent fallback to optimized Nydus images when available while keeping the original index manifest OCI compliant, allowing non-Nydus clients to pull regular OCI images.
The Index Detection feature addresses several limitations of the existing Referrer API-based detection:
- Registry Support: Not all registries support the Referrer API
- Supply Chain Security: Referrer API relies on external changes to the manifest, creating potential supply chain risks
- Universal Compatibility: Index detection works with all OCI-compliant registries
Unlike referrer-based detection, Index Detection packages everything into a single manifest, eliminating supply chain concerns while maintaining universal registry support.
- Index Manifest Parsing: When a manifest digest is encountered, the system fetches and parses the original OCI index manifest
- Platform Matching: The system finds the original manifest descriptor within the index
- Nydus Alternative Search: It searches for platform-compatible manifests that contain:
platform.os.featurescontainingnydus.remoteimage.v1, orartifactTypeset toapplication/vnd.nydus.image.manifest.v1+json
- Validation: The found manifest is validated to ensure it's a valid Nydus manifest with metadata layers
- Caching: Results are cached to avoid repeated API calls for the same digest
Both platform.os.features and artifactType are looked at because index manifests built using merge-platform before acceleration-service: v0.2.19 or nydus: v2.3.5 will have platform.os.features configured while images built after will have artifactType configured.
When both Index Detection and Referrer Detection are available, Index Detection takes priority due to its superior supply chain security properties.
Index Detection is controlled by the EnableIndexDetect configuration option in the experimental features section:
[experimental]
enable_index_detect = trueTo create images compatible with Index Detection, use the nydusify convert command with the --merge-platform flag:
nydusify convert --merge-platform <source-image> <target-image>This creates an OCI index manifest containing both the original image and the Nydus alternative:
{
"schemaVersion": 2,
"manifests": [
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:a63dfddecc661e4ad05896418b2f3774022269c3bf5b7e01baaa6e851a3a4a23",
"size": 2320,
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:bb82dd8ee111bfe5fdf12145b6ed553da9c15de17f54b1f658d95ff26a65a01c",
"size": 3229,
"platform": {
"architecture": "amd64",
"os": "linux"
},
"artifactType": "application/vnd.nydus.image.manifest.v1+json"
}
]
}| Aspect | Index Detection | Referrer Detection |
|---|---|---|
| Registry Support | Universal | Limited |
| Supply Chain Security | Secure (single manifest) | Potential risks (external refs) |
| OCI Compliance | Full compliance | Requires Referrer API |
| Cache Behavior | Immutable (digest-based) | May require invalidation |
| Detection Priority | Higher | Lower |