다양한 Ingress Controller는 그 작동방식이 다른 옵션으로 구성되어질 수 있다. NGINX Ingress Controller는 여기에서 다양한 옵션을 볼 수 있다. 실습에서 사용할 이러한 옵션 중 하나를 설명하고자 한다.
(Different ingress controllers have different options that can be used to customise the way it works. NGINX Ingress controller has many options that can be seen here. I would like to explain one such option that we will use in our labs. The Rewrite target option.)
watch앱은 http://<watch-service>:<port>/에 비디오 스트리밍을 표시한다.
wear앱은 http://<wear-service>:<prot>/에 의류 웹 페이지를 표시한다.
이 목적을 달성하려면 Ingress를 구성해야 한다. 사용자가 왼쪽에 있는 URL을 방문하면 Request가 내부적으로 바로 URL로 전달되어야 한다. /watch 및 /wear URL 경로는 사용자를 백엔드의 적절한 애플리케이션으로 전달할 수 있도록 Ingress Controller에서 구성한 것이다. 응용프로그램에는 다음 URL 경로가 구성되어 있지 않다.
(Our watch app displays the video streaming webpage at http://<watch-service>:<port>/
Our wear app displays the apparel webpage at http://<wear-service>:<port>/
We must configure Ingress to achieve the below. When user visits the URL on the left, his request should be forwarded internally to the URL on the right. Note that the /watch and /wear URL path are what we configure on the ingress controller so we can forwarded users to the appropriate application in the backend. The applications don't have this URL/Path configured on them:)
http://<ingress-service>:<ingress-port>/watch --> http://<watch-service>:<port>/
http://<ingress-service>:<ingress-port>/wear --> http://<wear-service>:<port>/
Without the rewrite-target option, this is what would happen:
http://<ingress-service>:<ingress-port>/watch --> http://<watch-service>:<port>/watch
http://<ingress-service>:<ingress-port>/wear --> http://<wear-service>:<port>/wear
target URL의 끝에서 watch와 wear를 확인한다. target application은 /watch 또는 /wear 경로로 구성되어 있지 않다. 특별한 목적을 위해 구축된 ㅇ
(Notice watch and wear at the end of the target URLs. The target applications are not configured with /watch or /wear paths. They are different applications built specifically for their purpose, so they don't expect /watch or /wear in the URLs. And as such the requests would fail and throw a 404 not found error.)
Request 가 watch 또는 wear application을 통과할 때 URL을 ReWrite 하려는 문제를 해결하기 위해, User가 입력한 동일한 경로를 전달하고 싶지 않을 때가 있다. 따라서 이 경우에 rewrite-targe 옵션을 지정한다. 이것은 /pay가 되는 rule->http->paths->path 아래에 있는 항목을 rewrite-target의 값으로 대체하여 URL을 다시 작성한다.
(To fix that we want to "ReWrite" the URL when the request is passed on to the watch or wear applications. We don't want to pass in the same path that user typed in. So we specify the rewrite-target option. This rewrites the URL by replacing whatever is under rules->http->paths->path which happens to be /pay in this case with the value in rewrite-target. This works just like a search and replace function.
For example: replace(path, rewrite-target)
In our case: replace("/path","/"))
이것은 검색 및 바꾸기 기능 처럼 작동한다.
예: replace(path, rewrite-target)
In Case: 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(/|$)(.*)
'CKA &. CKAD > Networking' 카테고리의 다른 글
End to End Section (0) | 2021.04.01 |
---|---|
Practice Test - CKA - Ingress Networking - 2 (0) | 2021.04.01 |
Practice Test - CKA -Ingress Networking (0) | 2021.03.31 |
INGRESS (0) | 2021.03.31 |
Practice Test CoreDNS in Kubernetes (0) | 2021.03.31 |