Traefik 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 트러스트 도메인을 정의해요. | "" | 아니요 |