Layer 7 기능 사용하기

Layer 7 기능 사용하기 (Use Layer 7 features)

트래픽 흐름에 웨이포인트 프록시를 추가하면 더 많은 Istio 기능을 활성화할 수 있어요. 웨이포인트는 쿠버네티스 Gateway API로 구성돼요.

출처: Istio 문서

본문

라우트와 정책 부착 (Route and policy attachment)

Gateway API는 오브젝트(라우트, 게이트웨이 등) 사이의 관계를 *부착(attachment)*의 관점에서 정의해요.

  • 라우트 오브젝트(HTTPRoute 같은)는 부착하고자 하는 부모(parent) 리소스를 참조하는 방식을 포함해요.
  • 정책 오브젝트는 metaresource, 즉 표준 방식으로 대상(target) 오브젝트의 동작을 증강하는 오브젝트로 간주돼요.

아래 표는 각 오브젝트에 대해 구성되는 부착 유형을 보여줘요.

트래픽 라우팅 (Traffic routing)

웨이포인트 프록시가 배포되면 다음 트래픽 라우트 유형을 사용할 수 있어요:

이름 기능 상태 부착
HTTPRoute Beta parentRefs
TLSRoute Alpha parentRefs
TCPRoute Alpha parentRefs

이 라우트들로 구현할 수 있는 기능의 범위를 보려면 트래픽 관리 문서를 참조하세요.

보안 (Security)

웨이포인트가 설치되지 않으면 Layer 4 보안 정책만 사용할 수 있어요. 웨이포인트를 추가하면 다음 정책에 접근할 수 있어요:

이름 기능 상태 부착
AuthorizationPolicy (L7 기능 포함) Beta targetRefs
RequestAuthentication Beta targetRefs

인가 정책에 대한 고려 사항 (Considerations for authorization policies)

앰비언트 모드에서 인가 정책은 대상이 지정되거나(targeted, ztunnel 적용용) 부착되거나(attached, 웨이포인트 적용용) 할 수 있어요. 인가 정책이 웨이포인트에 부착되려면, 그 웨이포인트를 참조하는 targetRef 또는 그 웨이포인트를 사용하는 Service를 참조하는 targetRef가 있어야 해요.

ztunnel은 L7 정책을 적용할 수 없어요. L7 속성과 매칭하는 규칙이 있는 정책이 워크로드 selector로 대상 지정되어(targetRef로 부착되지 않고) ztunnel이 적용하게 되면, 안전하게 실패하여 DENY 정책이 돼요.

웨이포인트에 부착된 정책은 실제로 웨이포인트에 도달하는 트래픽에만 적용돼요. 트래픽은 웨이포인트가 존재하지 않거나 주소가 없을 때, 또는 트래픽 유형이 웨이포인트가 처리하는 트래픽과 일치하지 않을 때 웨이포인트와 그 Layer 7 정책을 우회할 수 있어요 (웨이포인트 트래픽 유형 참조). 트래픽이 웨이포인트를 통과하도록 요구하려면, 웨이포인트 정책을 웨이포인트의 신원만 허용하는 ztunnel 적용 AuthorizationPolicy와 짝지으세요. 트래픽이 웨이포인트를 통과하도록 요구를 참조하세요.

TCP 전용 사용 사례에서 언제 정책을 웨이포인트에 부착할지 포함해 자세한 내용은 L4 정책 가이드를 참조하세요.

가시성 (Observability)

전체 Istio 트래픽 메트릭 세트는 웨이포인트 프록시가 내보내요.

확장 (Extension)

웨이포인트 프록시는 Envoy의 배포이므로, 사이드카 모드에서 Envoy에 사용 가능한 일부 확장 메커니즘이 웨이포인트 프록시에도 제공돼요.

이름 기능 상태 부착
TrafficExtension ‡ Alpha targetRefs
WasmPlugin † Alpha targetRefs

‡ Lua 스크립트로 웨이포인트를 확장하는 방법에 대해 더 읽기. † WebAssembly 플러그인으로 웨이포인트를 확장하는 방법에 대해 더 읽기.

확장 구성은 Gateway API 정의에 따라 정책으로 간주돼요.

라우트 또는 정책 범위 지정하기 (Scoping routes or policies)

라우트나 정책은 웨이포인트 프록시를 통과하는 모든 트래픽에 적용되도록 범위를 정하거나, 특정 서비스에만 적용되도록 범위를 정할 수 있어요.

전체 웨이포인트 프록시에 부착 (Attach to the entire waypoint proxy)

라우트나 정책을 전체 웨이포인트에 부착하려면 — 그래서 그것을 사용하도록 등록된 모든 트래픽에 적용되도록 하려면 — 유형에 따라 Gateway를 parentRefs나 targetRefs 값으로 설정하세요.

default 네임스페이스의 default라는 웨이포인트에 적용되도록 AuthorizationPolicy 정책의 범위를 정하려면:

apiVersion: security.istio.io/v1
kind: AuthorizationPolicy
metadata:
  name: view-only
  namespace: default
spec:
  targetRefs:
  - kind: Gateway
    group: gateway.networking.k8s.io
    name: default
  action: ALLOW
  rules:
  - from:
    - source:
        namespaces: ["default", "istio-system"]
    to:
    - operation:
        methods: ["GET"]

특정 서비스에 부착 (Attach to a specific service)

라우트를 웨이포인트 안의 하나 이상의 특정 서비스에 부착할 수도 있어요. 적절히 Service를 parentRefs나 targetRefs 값으로 설정하세요.

reviews HTTPRoute를 default 네임스페이스의 reviews 서비스에 적용하려면:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: reviews
  namespace: default
spec:
  parentRefs:
  - group: ""
    kind: Service
    name: reviews
    port: 9080
  rules:
  - backendRefs:
    - name: reviews-v1
      port: 9080
      weight: 90
    - name: reviews-v2
      port: 9080
      weight: 10

더 알아보기 (Learn more)