본문 바로가기
문서 목차
ORKESTRIXAI 플랫폼

ai_inference

정보 — 요건 추론 서비스용 Kubernetes Gateway API를 지원한다 — 가중치 트래픽 분할, 헤더 기반 라우팅(OpenAI 프로토콜 헤더), 서비스 메시 연동(선택).

QUANTUM C&S

정보 — 요건

추론 서비스용 Kubernetes Gateway API를 지원한다 — 가중치 트래픽 분할, 헤더 기반 라우팅(OpenAI 프로토콜 헤더), 서비스 메시 연동(선택).

카테고리: 네트워킹 (Networking) · 수준: MUST · 상태: Implemented

적용 솔루션

QKS는 Envoy Gateway를 Gateway API(gateway.networking.k8s.io) 구현체로 운영합니다. KServe 추론용 Gateway(kserve-ingress-gateway)가 배포되어 있고, HTTPRoute로 추론 백엔드 라우팅(가중치 분할 · 헤더 매칭)을 제공합니다. Istio GatewayClass도 병행 제공되어 서비스 메시 연동(선택 요건)이 가능합니다.

증명 (명령어 + 출력)

1. Gateway API 구현체 (GatewayClass Accepted)

$ kubectl get gatewayclass
NAME           CONTROLLER                                      ACCEPTED   AGE
envoy          gateway.envoyproxy.io/gatewayclass-controller   True       217d
istio          istio.io/gateway-controller                     True       217d
istio-remote   istio.io/unmanaged-gateway                      True       217d

# captured: 2026-07-02T01:54:25Z

2. 추론용 Gateway 운영 (PROGRAMMED)

$ kubectl get gateway -A -o wide
NAMESPACE   NAME                     CLASS   ADDRESS         PROGRAMMED   AGE
kserve      kserve-ingress-gateway   envoy   192.168.10.94   True         217d

# captured: 2026-07-02T01:54:25Z

3. 추론 서비스 HTTPRoute 실사용 — InferencePool 백엔드 (GAIE)

기존 운영 라우트가 Gateway API Inference Extension의 InferencePool을 백엔드로 사용합니다.

$ kubectl -n kserve get httproute facebook-opt-125m-single-kserve-route -o yaml | sed -n '/spec:/,$p'
spec:
  parentRefs:
  - group: gateway.networking.k8s.io
    kind: Gateway
    name: kserve-ingress-gateway
    namespace: kserve
  rules:
  - backendRefs:
    - group: inference.networking.x-k8s.io
      kind: InferencePool
      name: facebook-opt-125m-single-inference-pool
      port: 8000
      weight: 1
    filters:
    - type: URLRewrite
      urlRewrite:
        path: { replacePrefixMatch: /, type: ReplacePrefixMatch }
    matches:
    - path: { type: PathPrefix, value: /kserve/facebook-opt-125m-single }
status:
  parents:
  - conditions:
    - { type: Accepted, status: "True", reason: Accepted }
    - { type: ResolvedRefs, status: "True", reason: ResolvedRefs }
    controllerName: gateway.envoyproxy.io/gatewayclass-controller

# captured: 2026-07-02T01:54:54Z

InferencePool(inference.networking.x-k8s.io) 백엔드는 SHOULD 항목 advanced_inference_ingress(GAIE)의 근거로도 활용 가능.

4. 가중치 분할 + 헤더 기반 라우팅 시연

전용 네임스페이스에 아래 HTTPRoute를 배포해 두 능력을 시연했습니다 (시연 후 정리).

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: ai-conformance-routing-demo
  namespace: ai-inf-demo
spec:
  parentRefs:
  - name: kserve-ingress-gateway
    namespace: kserve
  rules:
  # (1) 헤더 기반 라우팅: x-model-version=v2 → llm-v2
  - matches:
    - path: { type: PathPrefix, value: /conformance-demo }
      headers: [ { name: x-model-version, value: v2 } ]
    backendRefs:
    - { name: llm-v2, port: 80 }
  # (2) 가중치 분할: 기본 트래픽 90/10
  - matches:
    - path: { type: PathPrefix, value: /conformance-demo }
    backendRefs:
    - { name: llm-v1, port: 80, weight: 90 }
    - { name: llm-v2, port: 80, weight: 10 }
$ kubectl -n ai-inf-demo get httproute ai-conformance-routing-demo -o jsonpath='{.status.parents[0].conditions}'
Accepted=True (Route is accepted)
ResolvedRefs=True (Resolved all the Object references for the Route)

# captured: 2026-07-02T02:04:00Z

관련 링크

  • 재현 스크립트: conformance/05-ai-inference/ai-inference-verify.sh
  • 시연 매니페스트: conformance/05-ai-inference/evidence/05_demo_httproute.yaml