5.3. 트래픽 관리

Knative 애플리케이션에서 트래픽 분할을 생성하여 트래픽을 관리할 수 있습니다. 트래픽 분할은 Knative 서비스에서 관리하는 경로의 일부로 구성됩니다.

Knative 애플리케이션의 트래픽 관리

경로를 구성하면 요청을 다양한 버전의 서비스로 전송할 수 있습니다. 이 라우팅은 Service 오브젝트의 트래픽 사양에 따라 결정됩니다.

트래픽 사양 선언은 하나 이상의 버전으로 구성되며, 각각 전체 트래픽의 일부를 처리합니다. 각 버전으로 라우팅되는 트래픽의 백분율은 최대 100%를 추가해야 합니다. 이는 Knative 검증에 의해 확인됩니다.

트래픽 사양에 지정된 버전은 수정되거나 이름이 지정된 버전이거나 "latest" 버전을 가리킬 수 있으며, 이는 서비스의 모든 버전 목록의 헤드를 추적할 수 있습니다. 새 버전이 생성되는 경우 "latest" 버전은 업데이트하는 부동 참조 유형입니다. 각 버전에는 해당 버전의 추가 액세스 URL을 생성하는 태그가 연결될 수 있습니다.

트래픽 사양은 다음을 통해 수정할 수 있습니다.

  • Service 오브젝트의 YAML을 직접 편집합니다.
  • Knative(kn) CLI --traffic 플래그 사용.
  • OpenShift Container Platform 웹 콘솔 사용.

Knative 서비스를 생성할 때 기본 traffic 사양 설정이 없습니다.

5.3.1. 트래픽 사양 예

다음 예에서는 traffic의 100%가 서비스의 최신 버전으로 라우팅되는 트래픽 사양을 보여줍니다. status에서 latestRevision의 최신 버전의 이름을 볼 수 있습니다.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: example-service
  namespace: default
spec:
...
  traffic:
  - latestRevision: true
    percent: 100
status:
  ...
  traffic:
  - percent: 100
    revisionName: example-service

다음 예에서는 traffic의 100%가 current로 태그가 지정된 버전으로 라우팅되고 해당 버전의 이름이 example-service로 지정된 트래픽 사양을 보여줍니다. 트래픽이 라우팅되지 않더라도 latest로 태그된 버전을 사용할 수 있습니다.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: example-service
  namespace: default
spec:
...
  traffic:
  - tag: current
    revisionName: example-service
    percent: 100
  - tag: latest
    latestRevision: true
    percent: 0

다음 예제에서는 traffic 사양의 버전 목록을 확장하여 여러 버전으로 트래픽을 분할하는 방법을 보여줍니다. 이 예제에서는 50%의 트래픽을 현재 태그된 버전으로, 후보로 태그된 버전에 대한 트래픽의 50%를 보냅니다. 트래픽이 라우팅되지 않더라도 latest로 태그된 버전을 사용할 수 있습니다.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: example-service
  namespace: default
spec:
...
  traffic:
  - tag: current
    revisionName: example-service-1
    percent: 50
  - tag: candidate
    revisionName: example-service-2
    percent: 50
  - tag: latest
    latestRevision: true
    percent: 0