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

Traefik ServersTransport

원문 보기 위키 갱신

출처: Traefik ServersTransport (ServersTransport)

본문

ServersTransport

ServersTransport를 사용하면 Traefik과 HTTP 서버들 사이의 전송(transport)을 구성할 수 있어요.

설정 예시

serversTransport를 선언해요:

구조화 (YAML)

http:
  serversTransports:
    mytransport:
      serverName: "myhost"
      certificates:
        - "/path/to/cert1.pem"
        - "/path/to/cert2.pem"
      insecureSkipVerify: true
      rootCAs:
        - "/path/to/rootca1.pem"
        - "/path/to/rootca2.pem"
      maxIdleConnsPerHost: 100
      disableHTTP2: true
      peerCertURI: "spiffe://example.org/peer"
      forwardingTimeouts:
        dialTimeout: "30s"
        responseHeaderTimeout: "10s"
        idleConnTimeout: "60s"
        readIdleTimeout: "5s"
        pingTimeout: "15s"
      spiffe:
        ids:
          - "spiffe://example.org/id1"
          - "spiffe://example.org/id2"
        trustDomain: "example.org"
      cipherSuites: 
        - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
      minVersion: VersionTLS12
      maxVersion: VersionTLS12

구조화 (TOML)

[http.serversTransports.mytransport]
  serverName = "myhost"
  certificates = ["/path/to/cert1.pem", "/path/to/cert2.pem"]
  insecureSkipVerify = true
  rootCAs = ["/path/to/rootca1.pem", "/path/to/rootca2.pem"]
  maxIdleConnsPerHost = 100
  disableHTTP2 = true
  peerCertURI = "spiffe://example.org/peer"
  cipherSuites = ["TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256","TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"]
  minVersion = "VersionTLS12"
  maxVersion = "VersionTLS12"

  [http.serversTransports.mytransport.forwardingTimeouts]
    dialTimeout = "30s"
    responseHeaderTimeout = "10s"
    idleConnTimeout = "60s"
    readIdleTimeout = "5s"
    pingTimeout = "15s"

  [http.serversTransports.mytransport.spiffe]
    ids = ["spiffe://example.org/id1", "spiffe://example.org/id2"]
    trustDomain = "example.org"

serversTransport를 서비스에 연결해요:

구조화 (YAML)

## 동적 구성
http:
  services:
    Service01:
      loadBalancer:
        serversTransport: mytransport

구조화 (TOML)

## 동적 구성
[http.services]
  [http.services.Service01]
    [http.services.Service01.loadBalancer]
      serversTransport = "mytransport"

Labels

labels:
  - "traefik.http.services.Service01.loadBalancer.serversTransport=mytransport"

Tags

{
  // ...
  "Tags": [
    "traefik.http.services.Service01.loadBalancer.serversTransport=mytransport"
  ]
}

설정 옵션

| 필드 | 설명 | 기본값 | 필수 | | serverName | SNI로 사용될 서버 이름을 구성해요. | "" | 아니요 | | certificates | mTLS용 클라이언트 인증서로 설정될 인증서 목록(파일 경로 또는 데이터 바이트)을 정의해요. | [] | 아니요 | | insecureSkipVerify | 서버의 인증서 체인과 호스트 이름을 검증할지 여부를 제어해요. | false | 아니요 | | rootCAs | 서버 인증서를 검증할 때 사용할 루트 인증 기관 집합이에요 (mTLS 연결용). | [] | 아니요 | | cipherSuites | 백엔드 서버에 연결할 때 사용할 cipher suites를 정의해요. | [] | 아니요 | | minVersion | 백엔드 서버에 연결할 때 사용할 최소 TLS 버전을 정의해요. | "" | 아니요 | | maxVersion | 백엔드 서버에 연결할 때 사용할 최대 TLS 버전을 정의해요. | "" | 아니요 | | maxIdleConnsPerHost | 호스트당 유지할 최대 유휴(keep-alive) 연결 수예요. 0이면 DefaultMaxIdleConnsPerHost (2)가 사용돼요. | 0 | 아니요 | | disableHTTP2 | 서버와의 연결에 HTTP/2를 비활성화해요. | false | 아니요 | | peerCertURI | 서버의 인증서 검증 중 SAN URI와 일치시키는 데 사용되는 URI를 정의해요. | "" | 아니요 | | forwardingTimeouts.dialTimeout | 서버에 연결이 설정될 때까지 기다리는 시간이에요. 0 = 타임아웃 없음 | 30s | 아니요 | | forwardingTimeouts.responseHeaderTimeout | 요청(본문이 있다면 그것 포함)을 완전히 쓴 후 서버의 응답 헤더를 기다리는 시간이에요. 0 = 타임아웃 없음 | 0s | 아니요 | | forwardingTimeouts.idleConnTimeout | 유휴(keep-alive) 연결이 스스로 닫히기 전에 유휴 상태로 남아 있을 최대 시간이에요. 0 = 타임아웃 없음 | 90s | 아니요 | | forwardingTimeouts.readIdleTimeout | HTTP/2 연결에서 프레임이 수신되지 않을 때 ping 프레임을 사용한 헬스 체크가 수행될 타임아웃을 정의해요. | 0s | 아니요 | | forwardingTimeouts.pingTimeout | ping에 대한 응답을 받지 못했을 때 HTTP/2 연결이 닫힐 타임아웃을 정의해요. | 15s | 아니요 | | spiffe | SPIFFE 구성을 정의해요. 빈 spiffe 섹션은 SPIFFE를 활성화해요 (모든 SPIFFE ID를 허용해요). | | 아니요 | | spiffe.ids | 허용된 SPIFFE ID를 정의해요. 이 값은 SPIFFE TrustDomain보다 우선해요. | [] | 아니요 | | spiffe.trustDomain | SPIFFE 트러스트 도메인을 정의해요. | "" | 아니요 |

더 알아보기 (Learn more)