본문 바로가기
WIKI 기술 지식 베이스

Traefik Knative 문서

원문 보기 위키 갱신

Traefik Knative 문서 (Traefik Knative Documentation)

출처: Traefik Knative Documentation

본문

Traefik & Knative

Traefik Knative 프로바이더는 Knative Serving과 통합되어 서버리스 애플리케이션에 고급 트래픽 관리 및 라우팅 기능을 제공해요.

Knative는 Kubernetes 기반 플랫폼으로, scale-to-zero, 자동 스케일링, 리비전 관리 같은 기능을 갖춘 서버리스 워크로드를 가능하게 해요.

이 프로바이더는 Knative Ingress 리소스를 감시하고 Traefik 라우팅 규칙을 자동으로 구성하여, Traefik의 네트워킹 기능과 Knative의 서버리스 플랫폼 사이의 매끄러운 통합을 가능하게 해요.

요구 사항 (Requirements)

Traefik은 Kubernetes 지원 정책을 따르며, 최소한 최신 마이너 3개 버전의 Kubernetes를 지원해요. 구버전에서는 일반적인 기능을 보장할 수 없습니다.

  • Knative CRD 설치/업데이트
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.20.0/serving-crds.yaml
  • Knative Serving 핵심 컴포넌트 설치
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.20.0/serving-core.yaml
  • Traefik 인그레스 클래스를 사용하도록 config-network 구성 업데이트
   kubectl patch configmap/config-network \
   -n knative-serving \
   --type merge \
   -p '{"data":{"ingress.class":"traefik.ingress.networking.knative.dev"}}'
  • Knative 구성에 커스텀 도메인 추가(선택 사항)
kubectl patch configmap config-domain \
  -n knative-serving \
  --type='merge' \
  -p='{"data":{"example.com":""}}'
  • Traefik RBAC 설치/업데이트
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v3.7/docs/content/reference/dynamic-configuration/kubernetes-knative-rbac.yml

구성 예시 (Configuration Example)

이 프로바이더는 실험적 기능이므로 구성의 experimental 섹션과 provider 섹션 모두에서 활성화해야 해요. 아래에서 설명하는 것처럼 Knative 프로바이더를 활성화할 수 있어요.

File (YAML)

experimental:
  knative: true

providers:
  knative: {}

File (TOML)

[experimental.knative]

[providers.knative]

CLI

--experimental.knative=true
--providers.knative=true

Knative 프로바이더는 라우팅 구성을 검색하기 위해 Knative API를 사용해요. 그런 다음 프로바이더는 들어오는 Knative 이벤트를 감시하고 그로부터 해당 동적 구성을 파생합니다.

구성 옵션 (Configuration Options)

| Field | Description | Default | Required | | providers.providersThrottleDuration | 구성 리로드 이후, 새로운 구성 갱신 이벤트를 반영하기까지 기다리는 최소 시간. 이 시간 안에 여러 이벤트가 발생하면 가장 최근 이벤트 하나만 반영되고 나머지는 모두 버려져요. 이 옵션은 프로바이더별로 설정할 수 없지만, 스로틀링 알고리즘은 각 프로바이더에 독립적으로 적용됩니다. | 2s | No | | providers.knative.endpoint | 서버 엔드포인트 URL. 자세한 정보는 여기. | | | | providers.knative.token | Kubernetes 클라이언트 구성에 사용되는 Bearer 토큰. | | | | providers.knative.certAuthFilePath | 인증 기관 파일의 경로. Kubernetes 클라이언트 구성에 사용됨. | | | | providers.knative.namespaces | 감시할 네임스페이스 배열. 비워 두면 모든 네임스페이스를 감시해요. | | | | providers.knative.labelSelector | 라벨 셀렉터를 사용해 Knative Ingress 객체를 필터링할 수 있게 해요. | | | | providers.knative.throttleDuration | 새 구성을 생성하기 전에 두 Kubernetes 이벤트 사이에 대기하는 최소 시간. 초당 여러 번 갱신되는 Kubernetes 클러스터가 Traefik 구성을 계속 바꾸는 것을 방지해요. 비워 두면 모든 이벤트가 포착됩니다. | 0 | | | providers.knative.privateEntrypoints | Ingress를 비공개로 노출하는 데 사용하는 엔트리포인트 이름. 비워 두면 비공개 Ingress를 건너뜁니다. | | | | providers.knative.privateService | 네트워킹 컨트롤러를 비공개로 노출하는 데 사용하는 Kubernetes 서비스. | | | | providers.knative.privateService.desc | 비공개 Kubernetes 서비스의 이름. | | | | providers.knative.privateService.namespace | 비공개 Kubernetes 서비스의 네임스페이스. | | | | providers.knative.publicEntrypoints | Ingress를 공개적으로 노출하는 데 사용하는 엔트리포인트 이름. 비워 두면 Ingress가 모든 엔트리포인트에 노출됩니다. | | | | providers.knative.publicService | 네트워킹 컨트롤러를 공개적으로 노출하는 데 사용하는 Kubernetes 서비스. | | | | providers.knative.publicService.desc | 공개 Kubernetes 서비스의 이름. | | | | providers.knative.publicService.namespace | 공개 Kubernetes 서비스의 네임스페이스. | | |

endpoint

Kubernetes 서버 엔드포인트 URL이에요.

Kubernetes에 배포될 때 Traefik은 KUBERNETES_SERVICE_HOST와 KUBERNETES_SERVICE_PORT 또는 KUBECONFIG 환경 변수를 읽어 엔드포인트를 구성해요.

액세스 토큰은 /var/run/secrets/kubernetes.io/serviceaccount/token에서, SSL CA 인증서는 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt에서 조회됩니다. 둘 다 Kubernetes 안에 배포될 때 자동으로 마운트돼요.

클러스터 안에서 환경 변수 값을 오버라이드하려면 엔드포인트를 지정할 수 있어요.

환경 변수를 찾지 못하면 Traefik은 external-cluster 클라이언트로 Knative API 서버에 연결하려고 해요. 이 경우 엔드포인트가 필요합니다. 특히 관련 kubeconfig가 부여한 인증과 권한을 사용해 Knative 클러스터에 연결하기 위해 kubectl proxy가 사용하는 URL로 설정할 수 있어요.

File (YAML)

providers:
  knative:
    endpoint: "http://localhost:8080"
    # ...

File (TOML)

[providers.knative]
  endpoint = "http://localhost:8080"
  # ...

CLI

--providers.knative.endpoint=http://localhost:8080

라우팅 구성 (Routing Configuration)

라우팅(routing) 문서의 전용 섹션을 참고하세요.

프로덕션에서 Traefik OSS를 사용하고 계신가요?

직장에서 Traefik을 사용하고 있다면 기업용 API 게이트웨이 기능이나 Traefik OSS에 대한 상용 지원을 고려해 보세요.

  • API 게이트웨이 데모 영상 보기
  • 24/7/365 OSS 지원 요청하기

Traefik OSS에 API 게이트웨이 기능을 추가하는 일은 빠르고 매끄러워요. 교체(rip and replace)가 필요 없고 모든 구성이 그대로 유지됩니다. 이 짧은 영상에서 실제 동작을 확인해 보세요.

더 알아보기 (Learn more)