본문 바로가기
MLOps/Doker & Kubernetes

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

by 공부하는 무니 2023. 1. 27.
반응형

해당 내용은 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(/|$)(.*)
반응형

댓글