# Start cluster (one time)
make cluster-up
# Use kubectl
./kubectl.sh get nodes
./kubectl.sh get vms -A
# Deploy webhook
make cluster-sync
# Run e2e tests
make cluster-functest
# Stop cluster
make cluster-downmake cluster-upThis will:
- Clone kubevirtci (if needed)
- Start Kubernetes 1.34 cluster
- Install KubeVirt v1.6.2 automatically
- Takes ~5-10 minutes on first run
Use the kubectl.sh wrapper in the project root:
./kubectl.sh get nodes
./kubectl.sh get pods -n kubevirt
./kubectl.sh get vms -AThe wrapper automatically sets up all required kubevirtci environment variables (KUBEVIRTCI_TAG, KUBEVIRT_PROVIDER, etc.).
make cluster-syncThis will:
- Build webhook Docker image
- Load it into the cluster
- Install cert-manager
- Deploy webhook with all ClusterRoles
- Takes ~2-3 minutes
make cluster-functestThis runs comprehensive RBAC validation tests:
- Full-admin, storage-admin, cdrom-user, network-admin, compute-admin, lifecycle-admin, devices-admin
- Backwards compatibility tests
- Combined permissions tests
- Takes ~5-10 minutes
After making code changes:
make cluster-sync # Rebuild and redeploy
make cluster-functest # Run testsmake cluster-downDuring make cluster-up, the kubevirtci::install() function appends the required KUBEVIRTCI_TAG environment variable to kubevirtci's cluster-up/hack/common.sh file. Since kubectl.sh automatically sources that file, it works out of the box without any manual configuration.
This means kubevirtci wasn't installed via make cluster-up. Run:
make cluster-clean
make cluster-upThe installation process appends KUBEVIRTCI_TAG to kubevirtci's config.
make cluster-down
make cluster-clean
make cluster-up./kubectl.sh get pods -n kubevirt-rbac-webhook-system
./kubectl.sh logs -n kubevirt-rbac-webhook-system -l control-plane=controller-managerSee KUBEVIRTCI.md for comprehensive documentation.