Skip to content

Abstract cluster provider to add EKS (manual backport #169) - #192

Merged
alicefr merged 10 commits into
bootc-dev:release-0.1from
alicefr:backport-169
Sep 22, 2026
Merged

alicefr merged 10 commits into
bootc-dev:release-0.1from
alicefr:backport-169

Conversation

@alicefr

@alicefr alicefr commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Manual backport of #169 into the release branch release-0.1

The NodeProvider interface abstracts the actions for each provider and
will help to introduce additional cluster providers for running the test
suite. Examples are EKS in the near future, or Openshift in the long
run, but it is opened to other k8s platform as well.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Move bink in its own provider implementation. If no provider is set,
then we assume bink to be default one.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Rename environment variables to decouple e2e tests from the bink
provider:

- BINK_NODE_IMAGE_DIGEST -> E2E_NODE_IMAGE_DIGEST
- BINK_LOCAL_REGISTRY_NODE_IMAGE -> E2E_NODE_IMAGE_REGISTRY
- BINK_NODE_IMAGE_UPDATE_DIGEST -> E2E_NODE_IMAGE_UPDATE_DIGEST
- BINK_NODE_IMAGE_UPDATE2_DIGEST -> E2E_NODE_IMAGE_UPDATE2_DIGEST

Add E2E_PROVIDER=bink to explicitly select the provider.

Signed-off-by: Alice Frosi <afrosi@redhat.com>
For now, we are only targeting the TestPullSecretAuth for EKS since it
requires a pull secret for pulling the container images. Once, this
first work has been merged will tackle the rest of the test suite.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Implement EKSProvider that provisions e2e test nodes by launching
standalone EC2 instances that join an existing EKS cluster. The
provider discovers the Auto Scaling group for an eksctl node group
via tags, extracts its launch template, and uses it to launch new
instances.

EKSProvider implements the NodeProvider interface with:
- AddNode: launches an EC2 instance, waits for the k8s node to
  register (polling up to 10 min), and patches labels
- RemoveNode: terminates the EC2 instance and deletes the k8s node

Required env vars: EKS_CLUSTER_NAME, EKS_NODE_GROUP, AWS_REGION

Unit tests cover AddNode and RemoveNode using mock EC2 interfaces
and a fake k8s client.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Previously, gather-logs was using bink ssh, in order to make it
compatible with EKS, let's use a more generic way and use the
bootc-operator daemons to fetch the logs. This will work with each
cluster provider.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
Use full digest-qualified image references per provider instead of
separate registry and digest fields. Add AuthImageRef, RegistryHost,
and extractRegistryHost helpers for pull secret test support.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
With remote registries the manifest digest and content digest can
differ. Assert on the full image ref which carries the manifest
digest rather than the locally resolved content digest.

Assisted-by: AI
Signed-off-by: Alice Frosi <afrosi@redhat.com>
@alicefr alicefr changed the title Backport 169 Abstract cluster provider to add EKS (manual backport #169) Sep 22, 2026
@alicefr
alicefr merged commit c66ccbb into bootc-dev:release-0.1 Sep 22, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants