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
    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions