이 항목에서는 엔보이를 사용하는 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에 설정됩니다. 다음 표에는 사용 가능한 매개 변수와 그에 대한 설명이 나와 있습니다.
표 1. Contour 수신 구성 매개 변수
매개 변수 설명 유형 기본값
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 엔보이 이미지 태그. 엔보이 버전을 업그레이드하는 경우 이 값을 업데이트해야 할 수 있습니다. 문자열

v1.17.3_vmware.1

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으로 설정합니다.