Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Kubeflow Kubeflow Manifests E2E Testing

From Leeroopedia
Knowledge Sources
Domains Release Management, End-to-End Testing, CI/CD, Kubernetes
Last Updated 2026-02-13 00:00 GMT

Overview

Concrete tool for end-to-end integration testing of the Kubeflow platform, provided by the E2E test suite in the kubeflow/manifests repository and CI/CD pipeline execution.

Description

The Manifests E2E Testing implementation uses the test infrastructure in the kubeflow/manifests repository to deploy the full Kubeflow platform on Kubernetes clusters and run end-to-end test scenarios. The manifests repository contains Kustomize overlays that pin specific component versions and assemble them into a deployable platform. The E2E test suite exercises cross-component workflows, verifies deployment health, and validates Kubernetes version compatibility and PodSecurityStandards compliance.

Usage

Use this implementation when:

  • Component releases have been tagged and version pins need to be updated in manifests
  • A release candidate needs to be validated before final release
  • Kubernetes compatibility needs to be verified against the supported version matrix
  • Security policy compliance (PodSecurityStandards) must be confirmed
  • A regression needs to be investigated in the integrated platform

Code Reference

Source Location

Signature

# E2E Test Suite Execution Pattern
# 1. Provision a test Kubernetes cluster
# 2. Deploy Kubeflow using manifests with pinned versions
# 3. Wait for all components to reach healthy state
# 4. Run end-to-end test scenarios
# 5. Collect results and tear down cluster

# Deploy Kubeflow manifests
kustomize build manifests/example | kubectl apply -f -

# Run E2E tests
make test-e2e

Import

# Clone the manifests repository with test infrastructure
git clone https://github.com/kubeflow/manifests.git
cd manifests

# Review available test scenarios
ls tests/

I/O Contract

Inputs

Name Type Required Description
component_releases list of version strings Yes Tagged versions of each sub-project to pin in manifests (e.g., KServe v0.15.2, Katib v0.19.0)
manifests_branch string Yes Branch of kubeflow/manifests with updated component version pins
kubernetes_versions list of strings Yes Kubernetes versions to test against (e.g., 1.28, 1.29, 1.30)
pod_security_standards string Yes PodSecurityStandard level to enforce (baseline or restricted)
e2e_test_scenarios list of strings No Specific test scenarios to run; defaults to the full suite
test_cluster_config object Yes Configuration for provisioning test clusters (cloud provider, node count, machine type)

Outputs

Name Type Description
e2e_test_results test report Detailed results of each test scenario including pass/fail status and logs
compatibility_matrix table Verified Kubernetes version compatibility for the component combination
integration_issues list of issues Identified integration issues with component attribution and severity
manifests_release_candidate git ref Validated manifests commit or branch suitable for tagging as a release candidate

Usage Examples

Example: Updating Component Versions in Manifests

# Clone manifests and create a release branch
git clone https://github.com/kubeflow/manifests.git
cd manifests
git checkout -b release-v1.11

# Update component version pins in kustomization files
# Example: Update KServe version
cd apps/kserve
kustomize edit set image kserve-controller=kserve/kserve-controller:v0.15.2

# Example: Update Katib version
cd ../katib
kustomize edit set image katib-controller=docker.io/kubeflowkatib/katib-controller:v0.19.0

# Commit version pin updates
git add -A
git commit -m "Pin component versions for v1.11 release"

Example: Running the E2E Test Suite

# Provision a test cluster (example using kind)
kind create cluster --name kubeflow-e2e --image kindest/node:v1.29.0

# Deploy Kubeflow using the release branch manifests
cd manifests
while ! kustomize build example | kubectl apply -f -; do
  echo "Retrying deployment..."
  sleep 10
done

# Wait for all pods to be ready
kubectl wait --for=condition=Ready pods --all -n kubeflow --timeout=600s
kubectl wait --for=condition=Ready pods --all -n knative-serving --timeout=600s
kubectl wait --for=condition=Ready pods --all -n istio-system --timeout=600s

# Run E2E test suite
make test-e2e

# Collect test results
kubectl logs -n kubeflow -l app=e2e-test --tail=-1 > e2e-results.log

Example: Testing Kubernetes Version Compatibility

# Test against multiple Kubernetes versions
for K8S_VERSION in v1.28.0 v1.29.0 v1.30.0; do
  echo "Testing against Kubernetes ${K8S_VERSION}"
  kind create cluster --name "e2e-${K8S_VERSION}" \
    --image "kindest/node:${K8S_VERSION}"

  kustomize build example | kubectl apply -f -
  kubectl wait --for=condition=Ready pods --all -n kubeflow --timeout=600s

  make test-e2e
  echo "Kubernetes ${K8S_VERSION}: Tests completed"

  kind delete cluster --name "e2e-${K8S_VERSION}"
done

Example: Validating PodSecurityStandards Compliance

# Label namespaces with PodSecurityStandard enforcement
kubectl label namespace kubeflow \
  pod-security.kubernetes.io/enforce=restricted \
  pod-security.kubernetes.io/warn=restricted

# Redeploy and check for violations
kustomize build example | kubectl apply -f -

# Check for PodSecurity warnings in events
kubectl get events -n kubeflow --field-selector reason=FailedCreate

Related Pages

Implements Principle

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment