Kubernetes serversTransport
본문
ServersTransport
ServersTransport를 사용하면 Kubernetes에서 Traefik과 HTTP 서버 사이의 연결을 구성할 수 있어요.
ServersTransport 객체를 만들기 전에 Traefik Kubernetes CRD를 Kubernetes 클러스터에 적용해야 해요.
이렇게 하면 ServersTransport kind와 기타 Traefik 전용 리소스가 등록돼요.
서비스에 다음과 같이 적용할 수 있어요:
-
IngressRoute의
services.serverstransport옵션(서비스가 Kubernetes Service인 경우) -
TraefikService의
serverstransport옵션(서비스가 Kubernetes Service인 경우)
다른 네임스페이스의 ServersTransport CRD 참조
값은 namespace-name@kubernetescrd 형식이어야 하고, provider 레벨에서 allowCrossNamespace 옵션이 활성화되어야 해요.
safeNaming이 활성화되면 값은 namespace_name@kubernetescrd가 되며, provider가 생성하는 다른 이름들과 같은 _ 구분자를 사용해요.
Configuration Example (설정 예시)
serversTransport
apiVersion: traefik.io/v1alpha1
kind: ServersTransport
metadata:
name: mytransport
namespace: default
spec:
serverName: example.org
insecureSkipVerify: true
IngressRoute
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: testroute
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`example.com`)
kind: Rule
services:
- name: whoami
port: 80
serversTransport: mytransport
Configuration Options (설정 옵션)
| Field | Description | Default | Required |
| serverstransport. serverName | SNI에 사용될 서버 이름을 정의해요. | | No |
| serverstransport. insecureSkipVerify | 서버의 인증서 체인과 호스트 이름을 검증할지 제어해요. | false | No |
| serverstransport. rootCAs | 서버 인증서를 검증할 때 사용할 루트 인증 기관 집합이에요. | | No |
| serverstransport. certificatesSecrets | mTLS를 위해 서버에 제시할 인증서들이에요. | | No |
| serverstransport. maxIdleConnsPerHost | 호스트별로 유지할 최대 유휴(keep-alive) 연결 수예요. | 0 | No |
| serverstransport. disableHTTP2 | 서버와의 연결에 HTTP/2를 비활성화해요. | false | No |
| serverstransport. peerCertURI | 서버 인증서 검증 중에 SAN URI와 매칭하는 데 사용할 URI를 정의해요. | "" | No |
| serverstransport. forwardingTimeouts.dialTimeout | 서버에 대한 연결이 수립될 때까지 기다리는 시간이에요. 0이면 타임아웃이 없음을 뜻해요. | 30s | No |
| serverstransport. forwardingTimeouts.responseHeaderTimeout | 요청(본문 포함 시)을 완전히 쓴 후 서버의 응답 헤더를 기다리는 시간이에요. 0이면 타임아웃이 없음을 뜻해요. | 0s | No |
| serverstransport. forwardingTimeouts.idleConnTimeout | 유휴(keep-alive) 연결이 스스로 닫히기 전에 유휴 상태로 남아 있을 최대 시간이에요. 0이면 타임아웃이 없음을 뜻해요. | 90s | No |
| serverstransport. forwardingTimeouts.readIdleTimeout | HTTP/2 연결에서 프레임이 수신되지 않으면 ping 프레임을 사용한 헬스 체크가 수행될 타임아웃이에요. 0이면 타임아웃이 없음을 뜻해요. | 0s | No |
| serverstransport. forwardingTimeouts.pingTimeout | ping에 대한 응답이 수신되지 않으면 HTTP/2 연결이 닫힐 타임아웃이에요. 0이면 타임아웃이 없음을 뜻해요. | 0s | No |
| serverstransport. spiffe.ids | SPIFFE ID를 허용해요. SPIFFE TrustDomain보다 우선해요. | | No |
| serverstransport. spiffe.trustDomain | SPIFFE trust domain을 허용해요. | "" | No |
| serverstransport. cipherSuites | 백엔드 서버에 연결할 때 사용할 암호화 스위트를 정의해요. | [] | No |
| serverstransport. minVersion | 백엔드 서버에 연결할 때 사용할 최소 TLS 버전을 정의해요. | "" | No |
| serverstransport. maxVersion | 백엔드 서버에 연결할 때 사용할 최대 TLS 버전을 정의해요. | "" | No |
CA Secret
CA 시크릿은 tls.ca 또는 ca.crt 키 중 하나에 base64로 인코딩된 인증서를 포함해야 해요.