다른 인그레스 컨트롤러에는 작동 방식을 사용자 지정하는 데 사용할 수 있는 다양한 옵션이 있습니다. NGINX Ingress 컨트롤러에는 여기에서 볼 수 있는 많은 옵션이 있습니다 . 나는 우리 연구실에서 사용할 그러한 옵션 중 하나를 설명하고 싶습니다. 대상 재 작성 옵션.
watch
앱은 비디오 스트리밍 웹페이지를 다음 위치에 표시합니다.http://<watch-service>:<port>/
wear
앱은 다음 위치에 의류 웹페이지를 표시합니다.http://<wear-service>:<port>/
아래를 달성하려면 Ingress를 구성해야 합니다. 사용자가 왼쪽의 URL을 방문하면 그의 요청이 내부적으로 오른쪽의 URL로 전달되어야 합니다. /watch 및 /wear URL 경로는 백엔드의 적절한 애플리케이션으로 사용자를 전달할 수 있도록 인그레스 컨트롤러에서 구성한 것입니다. 애플리케이션에 다음 URL/경로가 구성되어 있지 않습니다.
http://<ingress-service>:<ingress-port>/watch
-->http://<watch-service>:<port>/
http://<ingress-service>:<ingress-port>/wear
-->http://<wear-service>:<port>/
rewrite-target
옵션이 없으면 다음 과 같이 됩니다.
http://<ingress-service>:<ingress-port>/watch
-->http://<watch-service>:<port>/watch
http://<ingress-service>:<ingress-port>/wear
-->http://<wear-service>:<port>/wear
대상 URL의 끝에 watch
및 주의 . 대상 응용 프로그램이 또는 경로 wear
로 구성되지 않았습니다 . 그들은 그들의 목적을 위해 특별히 만들어진 다른 응용 프로그램이므로 URL에 또는 예상하지 않습니다. 따라서 요청이 실패하고 찾을 수 없음 오류가 발생합니다./watch/wear/watch/wear404
요청이 시계 또는 마모 응용 프로그램에 전달될 때 URL을 "다시 작성"하고 싶은 문제를 수정합니다. 사용자가 입력한 것과 동일한 경로를 전달하고 싶지 않으므로 rewrite-target
옵션을 지정합니다. rules->http->paths->path
이것은 이 경우에 발생하는 모든 것을 /pay
의 값 으로 대체하여 URL을 다시 작성합니다 rewrite-target
. 이것은 검색 및 바꾸기 기능처럼 작동합니다.
replace(path, rewrite-target)
replace("/path","/")
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: critical-space
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /pay
backend:
serviceName: pay-service
servicePort: 8282
In another example given here, this could also be:
replace("/something(/|$)(.*)", "/$2")
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
name: rewrite
namespace: default
spec:
rules:
- host: rewrite.bar.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80
path: /something(/|$)(.*)