이 항목에서는 엔보이를 사용하는 Contour 패키지에 대한 참조 정보를 제공합니다.
Contour 및 엔보이 정보
Contour(https://projectcontour.io/)는 엔보이 역방향 HTTP 프록시를 포함하는 Kubernetes 수신 컨트롤러입니다. 엔보이를 사용하는 Contour는 일반적으로 ExternalDNS, Prometheus 및 Harbor와 같은 다른 패키지와 함께 사용됩니다.
TKG 클러스터에 Contour 패키지를 설치하려면 다음 항목을 참조하십시오.
Contour 구성 요소
Contour 패키지에는 Contour 수신 컨트롤러와 엔보이 역방향 HTTP 프록시가 포함됩니다. 이러한 구성 요소는 컨테이너로 설치됩니다. 컨테이너는 패키지 저장소에 지정된 공용 레지스트리에서 가져옵니다.
컨테이너 | 리소스 유형 | 복제 | 설명 |
---|---|---|---|
엔보이 | DaemonSet | 3 | 고성능 역방향 프록시 |
Contour | 배포 | 2 | 엔보이용 관리 및 구성 서버 |
Contour 데이터 값
다음은 contour-data-values.yaml
예시입니다.
유일한 사용자 지정은 엔보이 서비스가 LoadBalancer 유형(기본값은 NodePort)이라는 것입니다. 즉, 수신을 위해 클러스터 외부에서 Envoy 서비스에 액세스할 수 있습니다.
infrastructure_provider: vsphere namespace: tanzu-system-ingress contour: configFileContents: {} useProxyProtocol: false replicas: 2 pspNames: "vmware-system-restricted" logLevel: info envoy: service: type: LoadBalancer annotations: {} nodePorts: http: null https: null externalTrafficPolicy: Cluster disableWait: false hostPorts: enable: true http: 80 https: 443 hostNetwork: false terminationGracePeriodSeconds: 300 logLevel: info pspNames: null certificates: duration: 8760h renewBefore: 360h
Contour 구성
Contour 패키지 구성 값은
contour-data-values.yaml
에 설정됩니다. 다음 표에는 사용 가능한 매개 변수와 그에 대한 설명이 나와 있습니다.
매개 변수 | 설명 | 유형 | 기본값 |
---|---|---|---|
infrastructure_provider | 인프라 제공자. 지원되는 값: vsphere, aws, azure | 문자열 | 필수 매개 변수 |
contour.namespace | Contour가 배포될 네임스페이스 | 문자열 | tanzu-system-ingress |
contour.config.requestTimeout | 엔보이에 전달할 클라이언트 요청 시간 초과 | time.Duration | 0s (자세한 내용은 아래 섹션 참조) |
contour.config.server.xdsServerType | 사용할 XDS 서버 유형: 지원되는 값: contour 또는 envoy | 문자열 | Null |
contour.config.tls.minimumProtocolVersion | Contour가 협상할 최소 TLS 버전 | 문자열 | 1.1 |
contour.config.tls.fallbackCertificate.name | vhost에 대해 정의된 SNI와 일치하지 않는 요청에 대한 폴백 인증서가 포함된 암호의 이름 | 문자열 | Null |
contour.config.tls.fallbackCertificate.namespace | 폴백 인증서가 포함된 암호의 네임스페이스 | 문자열 | Null |
contour.config.tls.envoyClientCertificate.name | 클라이언트 인증서로 사용할 암호의 이름, 백엔드 서비스에 대한 TLS 연결용 개인 키 | 문자열 | Null |
contour.config.tls.envoyClientCertificate.namespace | 클라이언트 인증서로 사용할 암호의 네임스페이스, 백엔드 서비스에 대한 TLS 연결용 개인 키 | 문자열 | Null |
contour.config.leaderelection.configmapName | contour leaderelection에 사용할 configmap의 이름 | 문자열 | leader-elect |
contour.config.leaderelection.configmapNamespace | contour leaderelection configmap의 네임스페이스 | 문자열 | tanzu-system-ingress |
contour.config.disablePermitInsecure | ingressroute permitInsecure 필드를 사용하지 않도록 설정 | 부울 | false |
contour.config.accesslogFormat | 액세스 로그 형식 | 문자열 | envoy |
contour.config.jsonFields | 로깅될 필드 | 문자열 어레이 | envoy package doc |
contour.config.useProxyProtocol | https://projectcontour.io/guides/proxy-proto/ | 부울 | false |
contour.config.defaultHTTPVersions | Contour가 제공할 엔보이를 프로그래밍해야 하는 HTTP 버전 | 문자열 어레이 | "HTTP/1.1 HTTP2" |
contour.config.timeouts.requestTimeout | 전체 요청에 대한 시간 제한 | time.Duration | Null(시간 제한을 사용하지 않도록 설정함) |
contour.config.timeouts.connectionIdleTimeout | 유휴 연결을 종료하기 전에 대기할 시간 | time.Duration | 60s |
contour.config.timeouts.streamIdleTimeout | 활동이 없는 요청 또는 스트림을 종료하기 전에 대기할 시간 | time.Duration | 5m |
contour.config.timeouts.maxConnectionDuration | 활동 여부에 관계없이 연결을 종료하기 전에 대기할 시간 | time.Duration | Null(시간 제한을 사용하지 않도록 설정함) |
contour.config.timeouts.ConnectionShutdownGracePeriod | 초기 및 최종 GOAWAY 전송 사이의 대기 시간 | time.Duration | 5s |
contour.config.cluster.dnsLookupFamily | HTTPProxy 경로에서 externalName 유형 서비스에 대한 업스트림 요청에 사용할 dns-lookup-family | 문자열 | Null(지원되는 값: auto, v4, v6) |
contour.config.debug | Contour 디버깅 켜기 | 부울 | false |
contour.config.ingressStatusAddress | 모든 수신 리소스의 상태에 설정할 주소 | 문자열 | Null |
contour.certificate.duration | Contour 인증서 기간 | time.Duration | 8760h |
contour.certificate.renewBefore | Contour 인증서를 갱신하기 전까지의 기간 | time.Duration | 360h |
contour.deployment.replicas | Contour 복제본 수 | 정수 | 2 |
contour.image.repository | Contour 이미지가 있는 저장소의 위치입니다. 기본값은 공용 VMware 레지스트리입니다. 비공개 저장소(예: 에어갭 환경)를 사용하는 경우 이 값을 변경합니다. | 문자열 | projects.registry.vmware.com/tkg |
contour.image.name | Contour 이미지의 이름 | 문자열 | contour |
contour.image.tag | Contour 이미지 태그. Contour 버전을 업그레이드하는 경우 이 값을 업데이트해야 할 수 있습니다. | 문자열 | v1.11.0_vmware.1 |
contour.image.pullPolicy | Contour 이미지 Pull 정책 | 문자열 | IfNotPresent |
envoy.image.repository | 엔보이 이미지가 있는 저장소의 위치입니다. 기본값은 공용 VMware 레지스트리입니다. 비공개 저장소(예: 에어갭 환경)를 사용하는 경우 이 값을 변경합니다. | 문자열 | projects.registry.vmware.com/tkg |
envoy.image.name | 엔보이 이미지의 이름 | 문자열 | envoy |
envoy.image.tag | 엔보이 이미지 태그. 엔보이 버전을 업그레이드하는 경우 이 값을 업데이트해야 할 수 있습니다. | 문자열 |
|
envoy.image.pullPolicy | 엔보이 이미지 Pull 정책 | 문자열 | IfNotPresent |
envoy.hostPort.enable | 호스트에서 엔보이 포트를 노출하는 플래그 | 부울 | true |
envoy.hostPort.http | 엔보이 HTTP 호스트 포트 | 정수 | 80 |
envoy.hostPort.https | 엔보이 HTTPS 호스트 포트 | 정수 | 443 |
envoy.service.type | 엔보이를 노출할 서비스 유형. 지원되는 값: ClusterIP, NodePort, LoadBalancer | 문자열 | vSphere에 대한 필수 매개 변수: NodePort 또는 LoadBalancer, AWS: LoadBalancer, Azure: LoadBalancer |
envoy.service.annotations | 엔보이 서비스 주석 | 맵(키-값) | 빈 맵 |
envoy.service.externalTrafficPolicy | 엔보이 서비스의 외부 트래픽 정책. 지원되는 값: Local, Cluster | 문자열 | 클러스터 |
envoy.service.nodePort.http | http 요청에 사용되는 NodePort 유형의 서비스에 필요한 nodePort | 정수 | Null - Kubernetes가 동적 노드 포트를 할당함 |
envoy.service.nodePort.https | HTTPS 요청에 사용되는 NodePort 유형의 서비스에 필요한 nodePort | 정수 | Null - Kubernetes가 동적 노드 포트를 할당함 |
envoy.deployment.hostNetwork | hostNetwork에서 엔보이 실행 | 부울 | false |
envoy.service.aws.LBType | 엔보이 서비스를 노출하는 데 사용할 AWS LB 유형. 지원되는 값: classic, nlb | 문자열 | classic |
envoy.loglevel | 엔보이에 사용할 로그 수준 | 문자열 | 정보 |
파일 다운로드에 대한 경로 시간 초과
contour.config.requestTimeout
매개 변수는Contour 경로 시간 초과 기간을 정의합니다. 기본값은 0s
입니다. 파일 전송에 Contour를 사용하는 경우 이 값을 조정해야 할 수 있습니다.
Contour 설명서에 따르면 시간 초과 값이 0s
이면 Contour가 엔보이 시간 초과를 사용하도록 지시합니다. 엔보이 설명서에 따르면 엔보이의 기본 시간 초과 값은 15초입니다. 또한 엔보이는 전체 요청-응답 작업이 시간 초과 간격 내에 완료될 것으로 예상합니다.
따라서 기본 Contour 시간 초과 설정이 0s
인 경우 파일 전송이 15초 내에 완료되어야 합니다. 대용량 파일 전송에는 이 시간이 충분하지 않을 수 있습니다. 기본 엔보이 시간 초과를 사용하지 않도록 설정하려면 contour.config.requestTimeout
값을 0
으로 설정합니다.