8.9.16. Ingress 컨트롤러에서 HTTP/2 활성화 또는 비활성화
HAProxy에서 투명한 엔드 투 엔드 HTTP/2 연결을 활성화하거나 비활성화할 수 있습니다. 애플리케이션 소유자는 단일 연결, 헤더 압축, 바이너리 스트림 등을 포함하여 HTTP/2 프로토콜 기능을 사용할 수 있습니다.
개별 Ingress 컨트롤러 또는 전체 클러스터에 대해 HTTP/2 연결을 활성화하거나 비활성화할 수 있습니다.
개별 Ingress 컨트롤러 및 전체 클러스터에 대해 HTTP/2 연결을 활성화하거나 비활성화하는 경우 Ingress 컨트롤러의 HTTP/2 구성이 클러스터의 HTTP/2 구성보다 우선합니다.
클라이언트에서 HAProxy 인스턴스로의 연결에 HTTP/2 사용을 활성화하려면 경로에서 사용자 정의 인증서를 지정해야 합니다. 기본 인증서를 사용하는 경로에서는 HTTP/2를 사용할 수 없습니다. 이것은 동일한 인증서를 사용하는 다른 경로의 연결을 클라이언트가 재사용하는 등 동시 연결로 인한 문제를 방지하기 위한 제한입니다.
각 경로 유형에 대한 HTTP/2 연결에 대해 다음 사용 사례를 고려하십시오.
- 재암호화 경로의 경우 애플리케이션이 ALPN(Application-Level Protocol Negotiation)을 사용하여 HTTP/2를 협상하는 경우 HAProxy에서 애플리케이션 Pod로의 연결은 HTTP/2를 사용할 수 있습니다. Ingress 컨트롤러에 HTTP/2가 활성화된 경우가 아니면 재암호화 경로와 함께 HTTP/2를 사용할 수 없습니다.
- 패스스루 경로의 경우 애플리케이션에서 ALPN 사용을 지원하여 HTTP/2를 클라이언트와 협상하는 경우 HTTP/2를 사용할 수 있습니다. Ingress Controller에 HTTP/2가 활성화되거나 비활성화된 경우 통과 경로와 함께 HTTP/2를 사용할 수 있습니다.
-
에지 종료 보안 경로의 경우 서비스에서
appProtocol: kubernetes.io/h2c만 지정하는 경우 HTTP/2를 사용합니다. Ingress Controller에 HTTP/2가 활성화되거나 비활성화된 경우 에지 종료 보안 경로와 함께 HTTP/2를 사용할 수 있습니다. -
비보안 경로의 경우 서비스에서
appProtocol: kubernetes.io/h2c만 지정하는 경우 HTTP/2를 사용합니다. Ingress Controller에 HTTP/2가 활성화되거나 비활성화된 경우 비보안 경로와 HTTP/2를 사용할 수 있습니다.
패스스루(passthrough)가 아닌 경로의 경우 Ingress 컨트롤러는 클라이언트와의 연결과 관계없이 애플리케이션에 대한 연결을 협상합니다. 즉, 클라이언트가 Ingress 컨트롤러에 연결하고 HTTP/1.1을 협상할 수 있습니다. 그러면 Ingress 컨트롤러가 애플리케이션에 연결하고 HTTP/2를 협상하고, HTTP/2 연결을 사용하여 클라이언트 HTTP/1.1 연결에서 요청을 전달할 수 있습니다.
이러한 이벤트 시퀀스로 인해 클라이언트가 HTTP/1.1에서 WebSocket 프로토콜로 연결을 업그레이드하려고 하면 문제가 발생합니다. WebSocket 연결을 수락하려는 애플리케이션이 있고 애플리케이션에서 HTTP/2 프로토콜 협상을 허용하려고 하면 클라이언트는 WebSocket 프로토콜로 업그레이드하지 못합니다.
8.9.16.1. HTTP/2 활성화 링크 복사링크가 클립보드에 복사되었습니다!
특정 Ingress 컨트롤러에서 HTTP/2를 활성화하거나 전체 클러스터에 HTTP/2를 활성화할 수 있습니다.
프로세스
특정 Ingress 컨트롤러에서 HTTP/2를 활성화하려면
oc annotate명령을 입력합니다.$ oc -n openshift-ingress-operator annotate ingresscontrollers/<ingresscontroller_name> ingress.operator.openshift.io/default-enable-http2=true1 - 1
- &
lt;ingresscontroller_name>을 HTTP/2를 활성화하려면 Ingress 컨트롤러의 이름으로 바꿉니다.
전체 클러스터에 HTTP/2를 사용하려면
oc annotate명령을 입력합니다.$ oc annotate ingresses.config/cluster ingress.operator.openshift.io/default-enable-http2=true
또는 다음 YAML 코드를 적용하여 HTTP/2를 활성화할 수 있습니다.
apiVersion: config.openshift.io/v1
kind: Ingress
metadata:
name: cluster
annotations:
ingress.operator.openshift.io/default-enable-http2: "true"