diff --git a/README.md b/README.md index 5868b99..5eb5549 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ The tables below cover the common surface. For a complete reference of every fla ```yaml namespace: virtwork-prod -container_disk_image: quay.io/containerdisks/fedora:41 +container_disk_image: quay.io/containerdisks/fedora:42 data_disk_size: 20Gi ssh_user: virtwork diff --git a/build/golden-image/Containerfile b/build/golden-image/Containerfile index a5e3da5..111b06d 100644 --- a/build/golden-image/Containerfile +++ b/build/golden-image/Containerfile @@ -11,7 +11,7 @@ FROM scratch LABEL io.k8s.display-name="virtwork-disk" \ io.k8s.description="Fedora container disk with virtwork workload tools pre-installed" \ summary="Container disk for virtwork with CPU, memory, database, network, and disk tools" \ - description="Pre-built Fedora container disk with stress-ng, fio, iperf3, postgresql-server, and chaos engineering tools for faster VM boot times" \ + description="Pre-built Fedora container disk with stress-ng, fio, iperf3, postgresql-server, sysbench, redis, and chaos engineering tools for faster VM boot times" \ name="virtwork-disk" \ version="1.0" \ maintainer="Red Hat Ecosystem Engineering" diff --git a/build/golden-image/README.md b/build/golden-image/README.md index 2d1ed69..caeb453 100644 --- a/build/golden-image/README.md +++ b/build/golden-image/README.md @@ -9,7 +9,7 @@ at VM boot time. ``` blueprint.toml image-builder Containerfile (packages) ──────► build qcow2 ──────► FROM scratch - (Fedora 41) COPY qcow2 → /disk/ + (Fedora 42) COPY qcow2 → /disk/ │ containerdisk OCI image @@ -42,6 +42,10 @@ re-executes itself with `sudo` automatically if needed. - **iproute-tc** — Traffic control for chaos-network latency/loss injection - **kernel-modules-extra** — `sch_netem` kernel module for chaos-network - **iptables-nft** — Firewall rules for future network partition scenarios +- **procps-ng** — Process utilities for chaos-process workload (`kill`, `pkill`) +- **curl** — HTTP client for tps workload client role +- **sysbench** — Multi-threaded CPU/fileio benchmark (catalog: sysbench) +- **redis** — In-memory data store and redis-benchmark (catalog: redis-bench) - **cloud-init** — VM first-boot configuration - **qemu-guest-agent** — KubeVirt guest agent communication diff --git a/build/golden-image/blueprint.toml b/build/golden-image/blueprint.toml index fb9cd11..e7707b6 100644 --- a/build/golden-image/blueprint.toml +++ b/build/golden-image/blueprint.toml @@ -17,4 +17,8 @@ packages = [ { name = "kernel-modules-extra" }, { name = "netperf" }, { name = "python3" }, + { name = "procps-ng" }, + { name = "curl" }, + { name = "sysbench" }, + { name = "redis" }, ] diff --git a/deploy/configmap.yaml b/deploy/configmap.yaml index b44203f..fe8afc0 100644 --- a/deploy/configmap.yaml +++ b/deploy/configmap.yaml @@ -8,7 +8,7 @@ metadata: app.kubernetes.io/managed-by: virtwork data: VIRTWORK_NAMESPACE: "virtwork" - VIRTWORK_CONTAINER_DISK_IMAGE: "quay.io/containerdisks/fedora:41" + VIRTWORK_CONTAINER_DISK_IMAGE: "quay.io/containerdisks/fedora:42" VIRTWORK_DATA_DISK_SIZE: "10Gi" VIRTWORK_CPU_CORES: "2" VIRTWORK_MEMORY: "2Gi" diff --git a/docs/configuration.md b/docs/configuration.md index 924302e..fee00ff 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -46,7 +46,7 @@ These apply to both `virtwork run` and `virtwork cleanup`. | `--cpu-cores` | `VIRTWORK_CPU_CORES` | `cpu_cores` / `workloads..cpu_cores` | `2` | CPU cores per VM (per-workload override beats global) | | `--memory` | `VIRTWORK_MEMORY` | `memory` / `workloads..memory` | `2Gi` | Memory per VM | | `--disk-size` | `VIRTWORK_DATA_DISK_SIZE` | `data_disk_size` | `10Gi` | Data-disk size for storage-backed workloads (disk, database, chaos-disk) | -| `--container-disk-image` | `VIRTWORK_CONTAINER_DISK_IMAGE` | `container_disk_image` | `quay.io/containerdisks/fedora:41` | Boot image for the VMs; set to the golden image for faster boot | +| `--container-disk-image` | `VIRTWORK_CONTAINER_DISK_IMAGE` | `container_disk_image` | `quay.io/containerdisks/fedora:42` | Boot image for the VMs; set to the golden image for faster boot | | `--dry-run` | `VIRTWORK_DRY_RUN` | `dry_run` | `false` | Print the VM YAML and exit; do not connect to a cluster | | `--no-wait` | — | (sets `wait_for_ready=false`) | _unset_ | Skip readiness polling after VMs are created | | `--timeout` | `VIRTWORK_TIMEOUT` | `timeout` | `600` | Readiness timeout in seconds | @@ -83,7 +83,7 @@ Global flags (`--namespace`, `--kubeconfig`, `--audit`, `--no-audit`, `--audit-d |---|---|---|---|---| | `VIRTWORK_AUDIT` | bool | `true` | flag-bound | Enable audit tracking | | `VIRTWORK_AUDIT_DB` | string | `virtwork.db` | flag-bound | Audit SQLite path | -| `VIRTWORK_CONTAINER_DISK_IMAGE` | string | `quay.io/containerdisks/fedora:41` | flag-bound | VM boot image | +| `VIRTWORK_CONTAINER_DISK_IMAGE` | string | `quay.io/containerdisks/fedora:42` | flag-bound | VM boot image | | `VIRTWORK_CPU_CORES` | int | `2` | flag-bound | Default per-VM CPU cores | | `VIRTWORK_DATA_DISK_SIZE` | string | `10Gi` | flag-bound | Default data disk size | | `VIRTWORK_DRY_RUN` | bool | `false` | flag-bound | Default for `--dry-run` | @@ -272,7 +272,7 @@ Each workload's `params` block accepts string-valued keys. The current parameter | ConfigMap Key | Default | Notes | |---|---|---| | `VIRTWORK_NAMESPACE` | `virtwork` | The pod creates VMs in this namespace | -| `VIRTWORK_CONTAINER_DISK_IMAGE` | `quay.io/containerdisks/fedora:41` | Change to the golden image to speed up boot | +| `VIRTWORK_CONTAINER_DISK_IMAGE` | `quay.io/containerdisks/fedora:42` | Change to the golden image to speed up boot | | `VIRTWORK_DATA_DISK_SIZE` | `10Gi` | | | `VIRTWORK_CPU_CORES` | `2` | | | `VIRTWORK_MEMORY` | `2Gi` | | diff --git a/docs/guide/01-overview.md b/docs/guide/01-overview.md index f23ca0f..83d2705 100644 --- a/docs/guide/01-overview.md +++ b/docs/guide/01-overview.md @@ -81,7 +81,7 @@ If SSH credentials were configured, a `users` section is appended with the SSH p The orchestrator takes the cloud-init YAML and combines it with the workload's resource requirements to build a KubeVirt `VirtualMachine` object. The key pieces: -- **containerDisk** — The OS image (`quay.io/containerdisks/fedora:41` by default), pulled from a container registry. This is a read-only disk that provides the base operating system. +- **containerDisk** — The OS image (`quay.io/containerdisks/fedora:42` by default), pulled from a container registry. This is a read-only disk that provides the base operating system. - **cloudInitNoCloud** — The cloud-init YAML from step 3, stored as a Kubernetes Secret and referenced by the VM spec. - **CPU and memory** — Set as resource requests on the VM's domain spec (default: 2 cores, 2Gi). - **Labels** — Every resource gets `app.kubernetes.io/managed-by: virtwork` and a unique `virtwork/run-id` UUID. These labels are how cleanup finds resources later. @@ -127,7 +127,7 @@ Namespace: virtwork VMs created: 1 Services: 0 Secrets: 1 -Image: quay.io/containerdisks/fedora:41 +Image: quay.io/containerdisks/fedora:42 ================================================== ``` diff --git a/docs/guide/02-deploying-workloads.md b/docs/guide/02-deploying-workloads.md index 2bf03f1..8a38953 100644 --- a/docs/guide/02-deploying-workloads.md +++ b/docs/guide/02-deploying-workloads.md @@ -76,7 +76,7 @@ spec: pod: {} volumes: - containerDisk: - image: quay.io/containerdisks/fedora:41 + image: quay.io/containerdisks/fedora:42 name: containerdisk - cloudInitNoCloud: userData: | @@ -141,7 +141,7 @@ Namespace: virtwork VMs created: 1 Services: 0 Secrets: 1 -Image: quay.io/containerdisks/fedora:41 +Image: quay.io/containerdisks/fedora:42 ================================================== ``` diff --git a/docs/guide/03-adding-a-workload.md b/docs/guide/03-adding-a-workload.md index 8040b2f..b0a95b2 100644 --- a/docs/guide/03-adding-a-workload.md +++ b/docs/guide/03-adding-a-workload.md @@ -397,7 +397,7 @@ spec: memory: 2Gi volumes: - containerDisk: - image: quay.io/containerdisks/fedora:41 + image: quay.io/containerdisks/fedora:42 name: containerdisk - cloudInitNoCloud: userData: | diff --git a/docs/virtwork-vs-kube-burner.md b/docs/virtwork-vs-kube-burner.md index 5bf4564..06ed727 100644 --- a/docs/virtwork-vs-kube-burner.md +++ b/docs/virtwork-vs-kube-burner.md @@ -292,7 +292,7 @@ jobs: ```yaml namespace: virtwork-prod -container_disk_image: quay.io/containerdisks/fedora:41 +container_disk_image: quay.io/containerdisks/fedora:42 data_disk_size: 20Gi ssh_user: virtwork ssh_authorized_keys: diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 41d79ee..c2092f7 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -22,7 +22,7 @@ const ( // Default resource values. const ( - DefaultContainerDiskImage = "quay.io/containerdisks/fedora:41" + DefaultContainerDiskImage = "quay.io/containerdisks/fedora:42" DefaultNamespace = "virtwork" DefaultCPUCores = 2 DefaultMemory = "2Gi" diff --git a/internal/constants/constants_test.go b/internal/constants/constants_test.go index 3ae4a0e..5b3a576 100644 --- a/internal/constants/constants_test.go +++ b/internal/constants/constants_test.go @@ -48,7 +48,7 @@ var _ = Describe("Constants", func() { Context("Defaults", func() { It("should have correct default container disk image", func() { - Expect(constants.DefaultContainerDiskImage).To(Equal("quay.io/containerdisks/fedora:41")) + Expect(constants.DefaultContainerDiskImage).To(Equal("quay.io/containerdisks/fedora:42")) }) It("should have correct default namespace", func() { diff --git a/internal/orchestrator/types_test.go b/internal/orchestrator/types_test.go index 1f851bc..05de692 100644 --- a/internal/orchestrator/types_test.go +++ b/internal/orchestrator/types_test.go @@ -120,7 +120,7 @@ var _ = Describe("VMPlan", func() { VMSpec: &orchestrator.VMSpecInput{ Name: "virtwork-cpu-0", Namespace: "virtwork", - ContainerDiskImage: "quay.io/containerdisks/fedora:41", + ContainerDiskImage: "quay.io/containerdisks/fedora:42", CloudInitUserdata: "#cloud-config\n", CPUCores: 2, Memory: "2Gi", diff --git a/internal/vm/vm_test.go b/internal/vm/vm_test.go index 88fc077..099cd8c 100644 --- a/internal/vm/vm_test.go +++ b/internal/vm/vm_test.go @@ -33,7 +33,7 @@ var _ = Describe("BuildVMSpec", func() { opts = vm.VMSpecOpts{ Name: "test-vm", Namespace: "test-ns", - ContainerDiskImage: "quay.io/containerdisks/fedora:41", + ContainerDiskImage: "quay.io/containerdisks/fedora:42", CloudInitSecretName: "test-vm-cloudinit", CPUCores: 2, Memory: "2Gi", @@ -68,7 +68,7 @@ var _ = Describe("BuildVMSpec", func() { } Expect(containerDisk).NotTo(BeNil()) Expect(containerDisk.ContainerDisk).NotTo(BeNil()) - Expect(containerDisk.ContainerDisk.Image).To(Equal("quay.io/containerdisks/fedora:41")) + Expect(containerDisk.ContainerDisk.Image).To(Equal("quay.io/containerdisks/fedora:42")) }) It("should configure cloudInitNoCloud volume", func() { @@ -197,7 +197,7 @@ var _ = Describe("BuildVMSpec", func() { good := vm.VMSpecOpts{ Name: "test-vm", Namespace: "test-ns", - ContainerDiskImage: "quay.io/containerdisks/fedora:41", + ContainerDiskImage: "quay.io/containerdisks/fedora:42", CloudInitSecretName: "test-cloudinit", CPUCores: 2, Memory: "2Gi",