Skip to content

Enable digest-based image references in Kuadrant 1.5+ releases #177

Description

@mikenairn

Problem

Kuadrant currently uses tag-based image references in operator bundles. While this works for most scenarios, digest-based references provide better immutability guarantees and align with container security best practices.

Why Digests?

Using digest-based image references is recommended for container security and immutability:

  • Required for OpenShift/OKD disconnected environments: OpenShift documentation explicitly states relatedImages should use digests
  • Container security best practice: CNCF Cloud Native Security Whitepaper recommends "Immutable image binary and immutable URL of image" for secure distribution
  • Prevents tag mutation: Tags are mutable and can point to different images over time; digests are cryptographically immutable
  • Downstream RHCL builds already work this way successfully

Expected Outcome

Starting with Kuadrant 1.5.0, all operator releases should:

  • Use digest references in bundle relatedImages
  • Generate fully digest-based catalogs
  • Align upstream with downstream RHCL practices

Benefits:

  • ✅ Better support for disconnected environments (OpenShift/OKD)
  • ✅ Reproducible builds
  • ✅ Alignment with container security best practices
  • ✅ Upstream/downstream consistency
  • ✅ Immutable image references

Trade-offs:

  • Slightly less human-readable bundle manifests (digests instead of tags in relatedImages)
  • Commits to maintaining this for releases going forward

Implementation Status

The machinery already exists. PRs are open for all operator components adding USE_IMAGE_DIGESTS flag (off by default):

All PRs follow the same pattern:

  • Add USE_IMAGE_DIGESTS flag (default: false)
  • Generate bundles with --use-image-digests when enabled
  • Add post-generation steps to deduplicate relatedImages

Note: The OpenShift-specific features.operators.openshift.io/disconnected annotation is not included in these PRs. This can be revisited separately if needed, but the digest capability is valuable regardless of disconnected clusters.

Tasks

  • QE Review: Confirm test scripts and automation handle digest-based relatedImages
  • Documentation Review: Identify any docs beyond the disconnected install guide that need updates
  • Merge operator PRs: Merge the four operator PRs listed above
  • Enable for 1.5.0 release: Set USE_IMAGE_DIGESTS=true when building Kuadrant 1.5.0 bundles
  • Document the decision: Update release process documentation

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions