Skip to content

Abstract cluster provider to add EKS - #169

Open
alicefr wants to merge 10 commits into
bootc-dev:mainfrom
alicefr:eks-testing
Open

alicefr wants to merge 10 commits into
bootc-dev:mainfrom
alicefr:eks-testing

Conversation

@alicefr

@alicefr alicefr commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Abstraction of the cluster provider in order to support simultaneously bink and other kubernetes platform like EKS.

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>
@alicefr alicefr changed the title DNM: Abstract cluster provider to add EKS Abstract cluster provider to add EKS Sep 16, 2026
Comment thread test/e2e/e2eutil/provider_eks.go
Comment thread test/e2e/e2eutil/provider_eks_test.go
Comment thread test/e2e/e2eutil/provider_eks.go Outdated
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 enabled auto-merge (rebase) September 17, 2026 11:08
@alicefr
alicefr disabled auto-merge September 17, 2026 11:08
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