Skip to content

test(e2e): support configurable Kata RuntimeClass - #4454

Closed
jiripetrlik wants to merge 1 commit into
NVIDIA:mainfrom
jiripetrlik:e2e-runtimeclass
Closed

jiripetrlik wants to merge 1 commit into
NVIDIA:mainfrom
jiripetrlik:e2e-runtimeclass

Conversation

@jiripetrlik

@jiripetrlik jiripetrlik commented Oct 13, 2026 •

Copy link
Copy Markdown

Pass KATA_CONTAINERS_RUNTIME_CLASS to the Helm chart and label the selected RuntimeClass for sandbox resource admission.

Summary

Allow Kubernetes e2e runs to select a Kata RuntimeClass through KATA_CONTAINERS_RUNTIME_CLASS. Label the selected RuntimeClass for sandbox resource admission before installing OpenShell.

Related Issue

Changes

  • Pass KATA_CONTAINERS_RUNTIME_CLASS to Helm as server.defaultRuntimeClassName.
  • Set openshell.ai/sandbox-attachable=true on the selected RuntimeClass.
  • Preserve existing behavior when the variable is unset or empty.
  • Update the related deployment and e2e workflow guidance.

Testing

  • Bash syntax, ShellCheck, and git diff --check passed.

  • Ran Kubernetes e2e on Podman-backed Kind with kata-qemu and IMAGE_TAG=dev.

  • Confirmed RuntimeClass labeling and Kata workload execution.

  • All 6 CLI conformance scenarios passed.

  • Rust e2e results: 81 passed, 1 failed, 15 timed out, 3 skipped.

  • Kubernetes reported Kata sandbox creation errors:
    "Creating watcher returned error too many open files".

  • The assertion failure concerned an SSH session failing to reattach.

  • [*] Checks appropriate to the affected code and behavior pass

  • Unit tests added/updated (not applicable)

  • E2E tests added/updated (harness updated; no new test cases

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (not applicable)

@copy-pr-bot

copy-pr-bot Bot commented Oct 13, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@Bobbins228 Bobbins228 left a comment

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.

The configurable RuntimeClass wiring looks correct. Please restore the RuntimeClass's prior admission label after e2e runs against an existing cluster; the inline comment explains the persistent cluster-wide effect.

Comment thread e2e/with-kube-gateway.sh
helm_extra_args+=(--set "server.telemetryEnabled=${OPENSHELL_TELEMETRY_ENABLED}")
helm_extra_args+=(--set supervisor.sandboxRuntime.networkPolicyEnforced=true)
if [ -n "${KATA_CONTAINERS_RUNTIME_CLASS:-}" ]; then
kctl label runtimeclass "${KATA_CONTAINERS_RUNTIME_CLASS}" \

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.

On an existing cluster (OPENSHELL_E2E_KUBE_CONTEXT), this overwrites a cluster-scoped admission label, but cleanup() never restores its previous value. Before the run, an unlabeled RuntimeClass (or one labeled false) is not approved for sandbox attachment. After the run, other OpenShell workspaces on that cluster can select it even though the test release is gone. Please record the previous label and restore it during cleanup, including when the run fails.

@jiripetrlik

Copy link
Copy Markdown
Author

Thank you @Bobbins228 for your review. I've updated the PR, it should preserve old labels now.

@Bobbins228 Bobbins228 left a comment

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.

The RuntimeClass label cleanup addresses my earlier request and restores the prior state on exit. The code changes look good to me. The reported Rust e2e failure and timeouts still need validation before merge.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown

This pull request has had no activity for 14 days and is now marked stale.

@github-actions github-actions Bot added the state:stale Inactive item at risk of automatic closure. label Nov 3, 2026
Pass KATA_CONTAINERS_RUNTIME_CLASS to the Helm chart and label
the selected RuntimeClass for sandbox resource admission.

Signed-off-by: Jiri Petrlik <jpetrlik@redhat.com>
@github-actions github-actions Bot removed the state:stale Inactive item at risk of automatic closure. label Nov 10, 2026
@TaylorMutch

Copy link
Copy Markdown
Collaborator

Thanks for putting this together and addressing the RuntimeClass label cleanup feedback.

We are closing this PR as won't do for now. We are not actively testing Kata Containers in CI, so adding a Kata-specific configuration path to the existing E2E wrapper does not currently provide enough ongoing validation to justify maintaining it. Manual testing against a Kata-enabled cluster can use the existing Helm development workflow described in .agents/skills/helm-dev-environment/SKILL.md.

We can revisit this as part of a focused effort to establish reliable Kata testing in CI. That effort should identify suitable runner infrastructure and an owner, verify that workload pods actually use Kata, define the supported test coverage and concurrency, and demonstrate repeatable results with useful failure diagnostics. The failure and timeouts reported here would need to be resolved or explained with evidence as part of that work.

The broader proposal in #4459 needs a concrete CI infrastructure plan and more specific, measurable acceptance criteria before we pursue implementation. Closing this PR does not rule out that future effort.

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.

3 participants