Skip to content

Support for managing containers.isovalent.com credentials and registry mirror - #273

Open
simu wants to merge 5 commits into
masterfrom
feat/icr-credentials
Open

simu wants to merge 5 commits into
masterfrom
feat/icr-credentials

Conversation

@simu

@simu simu commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Container images for Cilium Enterprise (Isovalent Networking for Kubernetes) 1.19 and newer are only available from containers.isovalent.com with suitable registry credentials.

This PR enhances the component to enable users to manage credentials for the INK container registry and also support configuring a registry mirror on OpenShift via ImageTagMirrorSet and ImageDigestMirrorSet (so we don't need to find all Helm values that refer to containers.isovalent.com and modify them to point to the registry mirror).

TODO

Checklist

  • The PR has a meaningful title. It will be used to auto-generate the
    changelog.
    The PR has a meaningful description that sums up the change. It will be
    linked in the changelog.
  • PR contains a single logical change (to build a better changelog).
  • Update the documentation.
  • Categorize the PR by adding one of the labels:
    bug, enhancement, documentation, change, breaking, dependency
    as they show up in the changelog.
  • Link this PR to related issues or PRs.

@simu simu added enhancement New feature or request bump:minor labels Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown

🚀 Merging this PR will release v4.6.0

Merging will trigger workflows Release

🛠️ Auto tagging enabled with label bump:minor

@simu
simu force-pushed the feat/icr-credentials branch 5 times, most recently from 89cb1a8 to 946da77 Compare November 3, 2026 16:09
simu added 5 commits November 4, 2026 15:19
The component supports three different types of credentials: static,
direct-eso, and projectsyn.

The component adds the credentials to the OpenShift cluster-wide pull
secret via the Espejote ManagedResource defined in
component-openshift4-config.

For credential type `static`, the component deploys a Secret that's
populated with a static access token that's stored in Vault. Because we
can't pre-compute a valid `dockerconfigjson` value before revealing the
Vault references, the component deploys an Espejote ManagedResource
which takes the static credentials and renders them as a
`dockerconfigjson`.

For credential type `direct-eso`, the component requires that
component-external-secrets-operator is present on the cluster and
configures an ESO webhook generator which is configured to request new
access tokens from the Isovalent container registry and an
ExternalSecret which uses the generator to render the Cilium pull secret
that's merged into the cluster-wide pull secret. For this credential
type, the component requires that parameter
`enterprise.registry.hostname` is set to `containers.isovalent.com`.

For credential type `projectsyn`, the component deploys an Espejote
ManagedResource which takes the provided registry hostname and username,
and configures the registry password as the SHA-256 hash of the
cluster's Steward token. For this credential type, the component
requires that parameter `enterprise.registry.hostname` is set to
something other than `containers.isovalent.com`.
Rendered from template version: main (d0e9f8d)
Deploy a `ImageTagMirrorSet` and `ImageDigestMirrorSet` custom resource
with `mirrorSourcePolicy: NeverContactSource` to ensure that all image
pulls for containers.isovalent.com are redirected to the mirror when
parameter `enterprise.registry.hostname` is set to anything other than
`containers.isovalent.com`.
@simu
simu force-pushed the feat/icr-credentials branch from dad53ba to eee3fa3 Compare November 4, 2026 14:19
@simu
simu marked this pull request as ready for review November 4, 2026 14:19
@simu
simu requested a review from a team November 4, 2026 14:19
@simu

simu commented Nov 4, 2026

Copy link
Copy Markdown
Member Author

I've tested the manifests for the direct-eso method on the Lab, and the Lab is currently using the projectsyn method. I've verified that the static method works correctly with espejote render against the Lab (with a suitable isovalent-registry-config secret).

isovalent_registry_mirror_config: [
kube._Object(
'config.openshift.io/v1',
'ImageTagMirrorSet',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, this is cool!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump:minor enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants