1.3.5. 경로별 주석
Ingress 컨트롤러는 노출하는 모든 경로에 기본 옵션을 설정할 수 있습니다. 개별 경로는 주석에 특정 구성을 제공하는 방식으로 이러한 기본값 중 일부를 덮어쓸 수 있습니다. Red Hat은 operator 관리 경로에 경로 주석 추가를 지원하지 않습니다.
여러 소스 IP 또는 서브넷이 있는 허용 목록을 만들려면 공백으로 구분된 목록을 사용합니다. 다른 구분 기호 유형으로 인해 경고 또는 오류 메시지 없이 목록이 무시됩니다.
| 변수 | 설명 |
|---|---|
|
|
로드 밸런싱 알고리즘을 설정합니다. 사용 가능한 옵션은 |
|
|
쿠키를 사용하여 관련 연결을 추적하지 않도록 설정합니다. |
|
| 이 경로에 사용할 선택적 쿠키를 지정합니다. 이름은 대문자와 소문자, 숫자, ‘_’, ‘-’의 조합으로 구성해야 합니다. 기본값은 경로의 해시된 내부 키 이름입니다. |
|
|
라우터에서 백업 pod로 허용되는 최대 연결 수를 설정합니다. |
|
|
|
|
|
동일한 소스 IP 주소를 통해 만든 동시 TCP 연결 수를 제한합니다. 숫자 값을 허용합니다. |
|
|
동일한 소스 IP 주소가 있는 클라이언트에서 HTTP 요청을 수행할 수 있는 속도를 제한합니다. 숫자 값을 허용합니다. |
|
|
동일한 소스 IP 주소가 있는 클라이언트에서 TCP 연결을 수행할 수 있는 속도를 제한합니다. 숫자 값을 허용합니다. |
|
| 백엔드 상태 점검 간격을 설정합니다. (TimeUnits) |
|
| 경로에 대한 허용 목록을 설정합니다. 허용 목록은 승인된 소스 주소에 대한 IP 주소 및 CIDR 범위로 이루어진 공백으로 구분된 목록입니다. 허용 목록에 없는 IP 주소의 요청은 삭제됩니다.
|
|
| 엣지 종단 경로 또는 재암호화 경로에 Strict-Transport-Security 헤더를 설정합니다. |
|
| 백엔드의 요청 재작성 경로를 설정합니다. |
|
| 쿠키를 제한하는 값을 설정합니다. 값은 다음과 같습니다.
이 값은 재암호화 및 엣지 경로에만 적용됩니다. 자세한 내용은 SameSite 쿠키 설명서를 참조하십시오. |
|
|
라우터당
|
-
기본적으로 라우터는 5s마다 다시 로드되어 처음부터 포드 간에 분산 연결을 재설정합니다. 결과적으로
roundrobin상태는 다시 로드해도 유지되지 않습니다. 이 알고리즘은 Pod에 거의 동일한 컴퓨팅 용량 및 스토리지 용량이 있는 경우 가장 잘 작동합니다. 예를 들어 CI/CD 파이프라인을 사용하므로 애플리케이션 또는 서비스에서 끝점을 지속적으로 변경한 경우 분산이 일관되지 않을 수 있습니다. 이 경우 다른 알고리즘을 사용하십시오. 허용 목록의 IP 주소 및 CIDR 범위가 61를 초과하면
haproxy.config파일에서 참조되는 별도의 파일에 작성됩니다. 이 파일은/var/lib/haproxy/router/allowlists폴더에 저장됩니다.참고주소가 허용 목록에 작성되도록 하려면 전체 CIDR 범위가 Ingress 컨트롤러 구성 파일에 나열되어 있는지 확인합니다. etcd 오브젝트 크기 제한은 경로 주석의 크기를 제한합니다. 이로 인해 허용 목록에 포함할 수 있는 최대 IP 주소 및 CIDR 범위에 대한 임계값이 생성됩니다.
하나의 특정 IP 주소만 허용하는 경로
metadata:
annotations:
haproxy.router.openshift.io/ip_allowlist: 192.168.1.10
로드 밸런싱 알고리즘을 leastconn으로 설정하는 경로
metadata:
annotations:
haproxy.router.openshift.io/balance: leastconn
-
기본 로드 밸런싱 알고리즘은
random입니다.
여러 IP 주소를 허용하는 경로
metadata:
annotations:
haproxy.router.openshift.io/ip_allowlist: 192.168.1.10 192.168.1.11 192.168.1.12
IP 주소 CIDR 네트워크를 허용하는 경로
metadata:
annotations:
haproxy.router.openshift.io/ip_allowlist: 192.168.1.0/24
IP 주소 및 IP 주소 CIDR 네트워크를 둘 다 허용하는 경로
metadata:
annotations:
haproxy.router.openshift.io/ip_allowlist: 180.5.61.153 192.168.1.0/24 10.0.0.0/8
재작성 대상을 지정하는 경로
apiVersion: route.openshift.io/v1
kind: Route
metadata:
annotations:
haproxy.router.openshift.io/rewrite-target: /
...
- 1
/를 백엔드의 요청 재작성 경로로 설정합니다.
경로에 haproxy.router.openshift.io/rewrite-target 주석을 설정하면 Ingress Controller에서 요청을 백엔드 애플리케이션으로 전달하기 전에 이 경로를 사용하여 HTTP 요청의 경로를 재작성해야 합니다. spec.path에 지정된 경로와 일치하는 요청 경로 부분은 주석에 지정된 재작성 대상으로 교체됩니다.
다음 표에 spec.path, 요청 경로, 재작성 대상의 다양한 조합에 따른 경로 재작성 동작의 예가 있습니다.
| Route.spec.path | 요청 경로 | 재작성 대상 | 전달된 요청 경로 |
|---|---|---|---|
| /foo | /foo | / | / |
| /foo | /foo/ | / | / |
| /foo | /foo/bar | / | /bar |
| /foo | /foo/bar/ | / | /bar/ |
| /foo | /foo | /bar | /bar |
| /foo | /foo/ | /bar | /bar/ |
| /foo | /foo/bar | /baz | /baz/bar |
| /foo | /foo/bar/ | /baz | /baz/bar/ |
| /foo/ | /foo | / | N/A(요청 경로가 라우팅 경로와 일치하지 않음) |
| /foo/ | /foo/ | / | / |
| /foo/ | /foo/bar | / | /bar |
haproxy.router.openshift.io/rewrite-target 의 특정 특수 문자는 올바르게 이스케이프해야 하므로 특수 처리가 필요합니다. 이러한 문자를 처리하는 방법을 알아보려면 다음 표를 참조하십시오.
| 문자의 경우 | 문자 사용 | 참고 |
|---|---|---|
| # | \# | #을 사용하지 마십시오. 재작성 표현식이 종료되기 때문입니다. |
| % | % 또는 %% | %%와 같은 홀수 시퀀스를 사용하지 마십시오. |
| ‘ | \’ | 무시될 수 있기 때문에 방지 |
다른 모든 유효한 URL 문자는 이스케이프 없이 사용할 수 있습니다.