Sign inSign up

vvoo/demoapp

By vvoo

Updated about 1 month ago

kubernetes test pod app

Image
Web servers
0

1.4K

vvoo/demoapp repository overview

Demoapp

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/amd64linux/arm64linux/arm

主要接口

路径用途
/request/request/*path返回请求路径、查询参数、Host、Method、Proto、Headers、客户端 IP 和 Pod 信息
/ip返回客户端 IP、TCP 对端 IP、Pod IP 和 Service IP
/livez/readyzKubernetes 存活及就绪探针
/delay?seconds=5模拟随机或固定延迟
/status/503返回指定 HTTP 状态码
/flaky模拟前 N 次失败后恢复
/echo回显文本或二进制请求体
/streamNDJSON 流式响应
/bytes生成指定大小的响应
/cookieCookie 设置、读取和删除
/wsWebSocket Echo
/stats当前实例请求及并发统计
/metricsPrometheus 指标
/stress/cpu/stress/memoryToken 保护的 CPU 和内存压力测试

/request/ip 默认返回格式化 JSON。未注册的路径或方法默认返回首页内容。

Kubernetes 元数据

应用不会访问 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 或发布系统注入。

常用环境变量

变量默认值说明
VERSIONv2.1应用版本
APP_NAMEdemoapp应用名称
PORT80HTTP 监听端口
TRUSTED_PROXIES可信代理 IP/CIDR,多个值使用逗号分隔
HTTPS_PORT启用 HTTPS
GRPC_PORT启用 gRPC
TCP_PORT启用 TCP Echo
UDP_PORT启用 UDP Echo
STRESS_TOKEN启用并保护压力测试接口

未配置 TRUSTED_PROXIES 时,不信任客户端提供的转发头。

多协议端口

端口协议用途
80/tcpHTTP默认 HTTP 服务
8443/tcpHTTPSHTTPS、mTLS、HTTP/2
9090/tcpgRPCEcho、Health、Reflection
9000/tcpTCPTCP Echo
9000/udpUDPUDP Echo

HTTPS、gRPC、TCP 和 UDP 默认不会启动,只有配置对应环境变量后才启用。

安全说明

压力测试接口默认禁用,仅建议在隔离的测试环境中启用,并为容器配置合理的 CPU、内存 requests/limits。不要将 STRESS_TOKEN 暴露给不可信客户端。

Tag summary

Content type

Image

Digest

sha256:83eae20e6

Size

15.9 MB

Last updated

about 1 month ago

docker pull vvoo/demoapp