[Workload]: http
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 58/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- go, kubernetes, nginx
- Bereich
- devops, infrastructure, networking
Rechercherichtung
Beginne damit, den bestehenden Netzwerk-Workload zu finden, der iperf3 und seine MultiVMWorkload-Implementierung mit RoleDistribution() []RoleSpec verwendet. Verwende dieses Server/Client-Muster, um die nginx-Server-VM, die hey-Client-VM, den Kubernetes Service und die systemd-Services zu definieren. Als erledigt gilt die Aufgabe, wenn anhaltender, konfigurierbarer HTTP-Datenverkehr die angeforderten Signale für Request-Rate, Latenz, Statuscode, Verbindungen und Durchsatz erzeugt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Workload Name
http
Workload Description
Web traffic generation workload using nginx as a server and hey (or wrk2) as a client. Produces sustained L7 HTTP signals: request rates, latency distributions (p50/p95/p99), HTTP status codes, connection counts, and throughput (requests/sec, bytes/sec).
This is the single biggest signal gap in virtwork today. Every monitoring/APM partner (Dynatrace, Datadog, New Relic, Instana), service mesh partner (Istio, Linkerd integrations), WAF partner, and load balancer partner needs application-level HTTP traffic — not just infrastructure metrics. The current workloads generate CPU, memory, disk, and network pressure, but no L7 request/response signals.
Tooling and Packages
Server VM:
- Tool: nginx
- RPM packages:
nginx - systemd service:
nginx.service(default or custom config serving static content + /status endpoint) - Exposes port 80 (HTTP) via Kubernetes Service
Client VM:
- Tool:
hey(HTTP load generator) orwrk2(constant-throughput HTTP benchmark) - Installation:
heyis a single Go binary;wrk2available via EPEL or built from source - systemd service command:
hey -z 0 -c 50 -q 100 http://<server-service>:80/(sustained 100 RPS with 50 concurrent connections) - Configurable parameters: concurrency (
-c), target RPS (-q), request path, HTTP method
VM Count Model
VM pair - server and client (like network)
Required Resources
- Kubernetes Service (for inter-VM communication)
- Persistent storage (DataVolume)
- Kubernetes Secret (for credentials or config)
- Additional CPU/memory beyond defaults
- GPU or special device passthrough
Cloud-Init Details
Server VM:
packages:
- nginx
runcmd:
- systemctl enable --now nginx
Client VM:
write_files:
- path: /etc/systemd/system/virtwork-http.service
content: |
[Unit]
Description=Virtwork HTTP load generator
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/hey -z 0 -c 50 -q 100 http://<server-service>:80/
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
runcmd:
- curl -Lo /usr/local/bin/hey https://hey-release.s3.us-east-2.amazonaws.com/hey_linux_amd64
- chmod +x /usr/local/bin/hey
- systemctl enable --now virtwork-http.service
Use Case
- APM/Monitoring partners: Need HTTP request metrics (rate, latency, errors) to validate their agents report accurate application performance data from VMs on OpenShift.
- Service mesh partners: Need L7 traffic flowing between VMs to validate traffic management, mTLS, and observability features work correctly with KubeVirt VM-to-VM communication.
- WAF/Security partners: Need HTTP traffic to validate web application firewall rules and threat detection against real request patterns from VMs.
- Load balancer partners: Need sustained HTTP traffic to validate load balancing, health checks, and traffic distribution across VM backends.
Additional Context
- Follows the same multi-VM pattern as the existing
network(iperf3) workload — implementsMultiVMWorkloadwithRoleDistribution() []RoleSpecfor server/client roles. heyis preferred overwrk2for initial implementation: single static binary, no build dependencies, well-maintained. wrk2 could be offered as an alternative profile.- The server VM's nginx
/statusendpoint (stub_status module) provides connection-level metrics that monitoring partners can scrape directly. - Consider exposing configurable parameters: concurrency, target RPS, request payload size, HTTP method (GET/POST), request path.
- Vorherrschende Sprache
- Go
- Sterne
- 0
- Forks
- 0
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Enthält ein Dockerfile oder eine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus opdev/virtwork
-
good first issue needs-triage size/L workload-request workload/variant
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 45/100
-
needs-triage priority/awaiting-more-evidence size/XL workload-request workload/tier-2
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 48/100
-
good first issue needs-triage size/XL workload-request workload/variant
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
-
[Workload]: encryptionOffenneeds-triage size/L workload-request workload/tier-3
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
-
[Workload]: windowsOffenneeds-triage size/XXL workload-request workload/tier-3
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
Ähnliche Issues
-
OCIRepository: pick the Helm chart layer automatically when the first layer is a provenance fileOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
fluxcd/source-controller#2198 ·
Maintainer antworten meist innerhalb von 1 Tag
-
webhook: mutating admission silently allows objects when createPatch fails (error discarded)Evtl. vergeben @lemonzoey hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
volcano-sh/volcano#6138 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
area/frameworks area/steve kind/bug team/frameworks
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag