MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 230: Ingress - Annotations and rewrite-target

공부하는 무니 2023. 1. 27. 04:54
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


다양한 ingress 컨트롤러에는 작동 방식을 사용자 지정하는 데 사용할 수 있는 다양한 옵션이 있습니다. NGINX Ingress 컨트롤러에는 많은 옵션이 있으며 여기에서 볼 수 있습니다. lab에서 사용할 이러한 옵션 중 하나를 설명하고 싶습니다. Rewrite target 옵션입니다.

 

watch 앱은 비디오 스트리밍 웹페이지를 http://<watch-service>:<port>/ 에서 보여줍니다.

wear 앱은 의류 웹페이지를 http://<wear-service>:<port>/에서 보여줍니다.

 

아래를 달성하려면 Ingress를 구성해야 합니다. 사용자가 왼쪽의 URL을 방문하면 그 요청은 내부적으로 오른쪽의 URL로 전달되어야 합니다. /watch 및 /wear URL path는 백엔드의 적절한 애플리케이션으로 사용자를 전달할 수 있도록 인그레스 컨트롤러에서 구성하는 것입니다. 애플리케이션에는 이 URL/path가 구성되어 있지 않습니다.

http://<ingress-service>:<ingress-port>/watch --> http://<watch-service>:<port>/
http://<ingress-service>:<ingress-port>/wear --> http://<wear-service>:<port>/

 

rewrite-target 옵션이 없으면 다음과 같이 target URL 끝에 watch and wear를 표시합니다.

http://<ingress-service>:<ingress-port>/watch --> http://<watch-service>:<port>/watch
http://<ingress-service>:<ingress-port>/wear --> http://<wear-service>:<port>/wear


target 애플리케이션이 /watch 또는 /wear path로 구성되지 않았습니다. 이들은 목적에 맞게 특별히 제작된 서로 다른 애플리케이션이므로 URL에서 /watch 또는 /wear를 기대하지 않습니다. 따라서 요청이 실패하고 404 not found error가 발생합니다.

 

요청이 wath 또는 wear 애플리케이션에 전달될 때 URL을 "ReWrite"하려는 문제를 해결하기 위해, 사용자가 입력한 것과 동일한 path를 전달하고 싶지 않기 때문에 rewrite-target 옵션을 지정합니다. 이 경우 rules->http->path->path 아래에 있는 모든 항목을 rewrite-target의 값으로 대체하여 URL을 다시 작성합니다. 이 경우에는 /pay입니다. 검색 및 바꾸기 기능과 동일하게 작동합니다.

 

For example: replace(path, rewrite-target)
In our 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

 

또다른 예는 여기에서 볼 수 있습니다. 이것은 다음과 같습니다.

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(/|$)(.*)
반응형