inflearn logo
강의

講義

知識共有

eksを活用したspring本番サーバーデプロイ(feat. devopsのすべて)

セクション 5 クイズ

ingress_nginx.yml 질문

59

ddc04003

投稿した質問数 3

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가 제거된 경로를 전달하는지 궁금하여 질문드립니다.

aws docker kubernetes github-actions argocd

回答 2

0

bradkim

안녕하세요~!

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

communityai8509

안녕하세요, 인프런 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 공식 문서를 확인해 보시면 도움이 될 것입니다.

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

gateway 생성 후 접속 확인 질문

0

3

1

docker compose에 대해 질문드립니다.

0

8

1

패키지 구분에 대해 궁금한게 있습니다

0

8

1

iam 권한

0

15

1

일주일동안 도메인이 DNS에 퍼지지 않고 있습니다.

0

60

1

AWS 회원가입 관련 문의

0

55

2

24강에서 depl_svc.yml 질문 있습니다.

1

43

1

rds에 db 인스턴스 크기가 없는데 어떤 걸 선택하면 될까요?

0

80

2

openjdk:17-jdk-alpine이 docker hub에서 삭제된 거 같습니다.

0

204

2

초기 클러스터 생성시 나타나는 오류

0

88

2

3강 spting 빌드환경에서 mysql 부분 질문있습니다.

0

80

2

S3 업로드 역할 부여 질문 드려요

0

64

2

수업 자료는 어디서 확인 가능한가요?

0

114

2

38강 질문입니다.

0

51

2

AWS ECR 로그인이 되지 않습니다.

0

109

2

rds 인바운드 규칙을 추가해도 접속이 안되는 경우가 있네요.

2

144

3

RDS 인바운드 규칙 설정 관련 질문

1

95

2

강의 내용에서 보강 하고 싶어서 질문 드립니다 - DEV, PROD 환경

1

103

2

MSA - member service 배포시 문제

0

96

2

MAS 환경에서 Feign Client 라이브러리를 이용해 HTTP 통신 발생시 에 대한 질문 있습니다.

0

90

1

AWS EKS 클러스터 생성 후 에러 문구 질문

0

234

1

프로젝트 연결

0

105

2

"https통신을 위한 인증서 작업" 영상에서 나오는 notion 정보 어디에 있는 걸까요?

0

101

1

EKS 에서 노드 그룹 생성 실패 질문

1

313

2