[Workload]: http
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 58/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- go, kubernetes, nginx
- Domínio
- devops, infrastructure, networking
Direção de pesquisa
Comece localizando a carga de trabalho de rede existente que usa iperf3 e sua implementação de MultiVMWorkload com RoleDistribution() []RoleSpec. Use esse padrão de servidor/cliente para definir a VM do servidor nginx, a VM do cliente hey, o Kubernetes Service e os serviços systemd. A tarefa estará concluída quando o tráfego HTTP sustentado e configurável produzir os sinais solicitados de taxa de requisições, latência, código de status, conexões e throughput.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Go
- Estrelas
- 0
- Forks
- 0
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de opdev/virtwork
-
good first issue needs-triage size/L workload-request workload/variant
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
-
[Workload]: chaos-migrationAbertaneeds-triage priority/awaiting-more-evidence size/XL workload-request workload/tier-2
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 48/100
-
[Workload]: disk-snapshotAbertagood first issue needs-triage size/XL workload-request workload/variant
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
-
[Workload]: encryptionAbertaneeds-triage size/L workload-request workload/tier-3
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
-
[Workload]: windowsAbertaneeds-triage size/XXL workload-request workload/tier-3
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
Todas as issues de opdev/virtwork
Issues semelhantes
-
validateDeclaredPath lets control characters through into the Gradle init script's Groovy literalAbertaagent-butler-finding agent-research bug ready-for-agent
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
jordansmall/spindrift#5821 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/rocketmq-dashboard#7243 ·
Mantenedores costumam responder em até 3 dias
-
Missing example coverage: getClockTalvez já em andamento @camunda-sdk-automation assumiu hoje. Abertanew-operations
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
camunda/orchestration-cluster-api-go#75 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
praetorianer777/Stator#465 ·
Mantenedores costumam responder em até 1 dia