Demoapp 是一个面向 Kubernetes 测试场景的多协议诊断镜像,可用于验证 Service、Ingress、Gateway API、服务网格、负载均衡、会话保持、重试、熔断、限流、超时、健康检查、滚动发布和优雅关闭等功能。
docker run --rm -p 8080:80 vvoo/demoapp:v2.1
curl http://localhost:8080/request
可用标签:
v2.1:固定版本latest:当前最新版本支持架构:linux/amd64、linux/arm64、linux/arm。
| 路径 | 用途 |
|---|---|
/request、/request/*path | 返回请求路径、查询参数、Host、Method、Proto、Headers、客户端 IP 和 Pod 信息 |
/ip | 返回客户端 IP、TCP 对端 IP、Pod IP 和 Service IP |
/livez、/readyz | Kubernetes 存活及就绪探针 |
/delay?seconds=5 | 模拟随机或固定延迟 |
/status/503 | 返回指定 HTTP 状态码 |
/flaky | 模拟前 N 次失败后恢复 |
/echo | 回显文本或二进制请求体 |
/stream | NDJSON 流式响应 |
/bytes | 生成指定大小的响应 |
/cookie | Cookie 设置、读取和删除 |
/ws | WebSocket Echo |
/stats | 当前实例请求及并发统计 |
/metrics | Prometheus 指标 |
/stress/cpu、/stress/memory | Token 保护的 CPU 和内存压力测试 |
/request 和 /ip 默认返回格式化 JSON。未注册的路径或方法默认返回首页内容。
应用不会访问 Kubernetes API。Pod、Service 和入口信息通过环境变量注入:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: SERVICE_NAME
value: demoapp
- name: SERVICE_IP
value: "10.96.10.20"
- name: INGRESS_NAME
value: demoapp-route
Service ClusterIP 无法通过 Downward API 直接获取,应由部署清单、ConfigMap 或发布系统注入。
| 变量 | 默认值 | 说明 |
|---|---|---|
VERSION | v2.1 | 应用版本 |
APP_NAME | demoapp | 应用名称 |
PORT | 80 | HTTP 监听端口 |
TRUSTED_PROXIES | 空 | 可信代理 IP/CIDR,多个值使用逗号分隔 |
HTTPS_PORT | 空 | 启用 HTTPS |
GRPC_PORT | 空 | 启用 gRPC |
TCP_PORT | 空 | 启用 TCP Echo |
UDP_PORT | 空 | 启用 UDP Echo |
STRESS_TOKEN | 空 | 启用并保护压力测试接口 |
未配置 TRUSTED_PROXIES 时,不信任客户端提供的转发头。
| 端口 | 协议 | 用途 |
|---|---|---|
80/tcp | HTTP | 默认 HTTP 服务 |
8443/tcp | HTTPS | HTTPS、mTLS、HTTP/2 |
9090/tcp | gRPC | Echo、Health、Reflection |
9000/tcp | TCP | TCP Echo |
9000/udp | UDP | UDP Echo |
HTTPS、gRPC、TCP 和 UDP 默认不会启动,只有配置对应环境变量后才启用。
压力测试接口默认禁用,仅建议在隔离的测试环境中启用,并为容器配置合理的 CPU、内存 requests/limits。不要将 STRESS_TOKEN 暴露给不可信客户端。
Content type
Image
Digest
sha256:83eae20e6…
Size
15.9 MB
Last updated
about 1 month ago
docker pull vvoo/demoapp