# backend — 부하를 받는 대상(sidecar 주입됨 = mesh 내부 서비스).
#
#  fortio server 는 echo/debug 핸들러(`/`)에서 쿼리 파라미터로 응답을 제어할 수 있다:
#    http://backend:8080/?delay=250ms   → 250ms 지연 후 200
#    http://backend:8080/?status=503    → 503 강제
#  S1/S2(커넥션·pending 오버플로) 재현은 요청이 "동시에 살아있어야" 하므로 delay 로
#  커넥션을 붙잡아 둔다(응답이 즉시면 커넥션이 곧바로 반납돼 한도가 안 걸린다).
#
#  Service 포트 name 을 `http` 로 둬야 Envoy 가 이 클러스터를 L7(HTTP conn pool)로 관리한다
#  → connectionPool.http.* 와 circuit_breaker(rq_pending/rq)까지 발효. name 이 tcp 면 L4 로 떨어져
#  http1MaxPendingRequests 등이 무의미해진다.
---
apiVersion: apps/v1
kind: Deployment
metadata: { name: backend, namespace: conn-lab, labels: { app: backend } }
spec:
  replicas: 1
  selector: { matchLabels: { app: backend } }
  template:
    metadata:
      labels: { app: backend }
    spec:
      containers:
        - name: fortio
          image: fortio/fortio:latest
          args: ["server"]               # :8080 echo/debug + :8079 grpc + UI
          ports: [{ containerPort: 8080 }]
          readinessProbe:
            httpGet: { path: /, port: 8080 }
            initialDelaySeconds: 2
---
apiVersion: v1
kind: Service
metadata: { name: backend, namespace: conn-lab }
spec:
  selector: { app: backend }
  ports:
    - { name: http, port: 8080, targetPort: 8080 }   # name:http = L7 클러스터로 관리됨(중요)
