강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của honeyricecake
honeyricecake

câu hỏi đã được viết

Triển khai server vận hành Spring sử dụng EKS (feat. mọi thứ về DevOps)

Quiz Phần 5

ingress_nginx.yml 질문

Viết

·

48

0

 

# ingress-controller 설치 명령어
# kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/aws/deploy.yaml
# aws lb -> ingress controller pod -> ingress -> service로의 라우팅

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: honeyricecake
  annotations:
  # 여기서 "nginx"로 지정한 것은 이 Ingress가 NGINX 기반 Ingress Controller에 의해 처리된다는 의미
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1 #첫번쨰 prefix제거
    
spec:
  rules:
  - host: server.honeyricecake.shop  # 설정하려는 도메인 이름.
    http:
      paths:
      # - path: /
      - path: /bradkim1/ #bradkim1으로 시작하는 모든 url요청을 nginx-service1로 라우팅한다는 정규표현식
        pathType: Prefix
        backend:
          service:
            name: nginx-service
            port:
              number: 80
      # - path: /bradkim2/ #bradkim2으로 시작하는 모든 url요청을 nginx-service2로 라우팅한다는 정규표현식
      #   pathType: Prefix
      #   backend:
      #     service:
      #       name: nginx-service2
      #       port:
      #         number: 80

안녕하십니까 강사님. 강사님이 주신 ingress 코드에서

 

nginx.ingress.kubernetes.io/rewrite-target: /$1 #첫번쨰 prefix제거

이 한줄이 어떻게 첫번쨰 prefix를 제거하고 스프링 백엔드로 prefix가 제거된 경로를 전달하는지 궁금하여 질문드립니다.

awsdockerkubernetesgithub-actionsargocd

Câu trả lời 2

0

bradkim님의 프로필 이미지
bradkim
Người chia sẻ kiến thức

안녕하세요~!

nginx.ingress.kubernetes.io/rewrite-target: /$1 #첫번쨰 prefix제거

위 설정은 url의 첫번째 접두어를 제거합니다.

 

예를 들어) http://server.test.com/bradkim1/abc 이런식의 url로 서버에 요청이 들어오게 되면, 위의 설정은 ingress단계에서 bradkim1을 제거해주고, http://server.test.com/abc url을 다시 재조립해서 이 url을 그 뒷단의 있는 서버에 전달해준다고 보시면 될것같습니다. 사실 정확하게는 http://nginx-service:80/abc 이렇게 만들어서 service에 전달을 해주게 되겠죠.

 

앞의 접두어를 제거한다는 점에만 초점을 두시면 될것 같습니다.

0

안녕하세요, 인프런 AI 인턴입니다. ddc04003님 질문 주셔서 감사합니다.

nginx.ingress.kubernetes.io/rewrite-target: /$1은 NGINX Ingress Controller의 어노테이션 중 하나로, 경로 재작성(리라이트)을 수행합니다. 이 설정은 주어진 경로를 백엔드 서비스로 전달할 때, 특정한 패턴을 제거하거나 변경된 경로로 전달해 주는 역할을 합니다.

리라이트의 작동 방식:

  • nginx.ingress.kubernetes.io/rewrite-target: 이 어노테이션은 Ingress에서 경로를 백엔드로 전달할 때, 원래 경로의 일부를 제거하고 새로운 경로로 바꾸는 역할을 합니다.
  • /$1: 이 부분은 정규 표현식에서 사용되며, 요청 경로에서 캡처된 그룹을 나타냅니다. 기본 설정에서는 전체 요청 경로를 기반으로 백엔드 경로를 결정합니다.

예를 들어, Ingress의 경로가 /bradkim1/some/path로 시작한다면, 백엔드 서비스에는 /honeyricecake/some/path로 리다이렉션될 수 있습니다. 이때 /bradkim1 부분이 제거되고, 나머지 경로는 그대로 유지됩니다.

추가 참고 사항:

  • 경로 재작성은 주로: 클라이언트가 요청하는 풀 경로와 백엔드 서비스가 요구하는 경로가 다를 때 유용합니다. 이를 통해 프론트앤드와 백엔드 간의 요청을 매끄럽게 전달할 수 있습니다.

이러한 설정은 다양한 Ingress Controller(nginx 등)에서 자주 사용되며, 개발자들이 다양한 URL 구조를 보다 유연하게 관리할 수 있게 해 줍니다. 이를 통해 무중단 변화와 경로 접근성을 향상할 수 있습니다.

관련하여 참고할 수 있는 문서로는 NGINX Ingress Controller 공식 문서를 확인해 보시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của honeyricecake
honeyricecake

câu hỏi đã được viết

Đặt câu hỏi