ingress_nginx.yml 질문
59
3 asked
# 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가 제거된 경로를 전달하는지 궁금하여 질문드립니다.
Answer 2
0
안녕하세요~!
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 공식 문서를 확인해 보시면 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
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

