이전 작업으로 3-tier 구성의 연결을 완료하였고, Frontend 부분에서는 Ingress의 다중경로를 사용하여 User 와 Admin페이지를 구분하였다. 또한 User, Admin, Backend의 파이프라인 구축도 완료한 상태이다.
브라우저에서 /(루트) 경로를 입력하면 User, /manager를 입력하면 Admin 페이지로 접속되게 하였고 처음에는 정상적으로 작동하였다. 하지만 시간이 지나니 /manager를 입력했을 때 페이지 오류가 발생하였다. 다시 파이프라인을 빌드하니 정상적으로 작동하지만 다른 팀원은 접속이 안되는 현상이 발생하였다.
💡 원인 분석
Frontend에서 Backend로 요청을 보낼때 /api이후 /auth/login이나 /auth/signup과 같이 경로를 구분해서 GET이나 POST 요청을 보내고 Backend는 해당 경로에 맞는 코드가 존재해 DB와 상호작용을 통해 데이터를 가공하고 Frontend와 주고받는다.
하지만 Admin페이지에 접속할때 /manager라는 경로를 임의적으로 설정해놨기 때문에 이후에 Frontend가 요청하는 경로와 충돌이 발생하고 Backend에 정확한 경로로 요청을 보내지 못하게 되는 것 같다.
vi Front-ingress.yaml
. . .
annotations:
alb.ingress.kubernetes.io/certificate-arn: <도메인1 arn>,<도메인2 arn>
# https적용하기 위한 도메인의 인증서 arn적용
. . .
spec:
rules:
- host: "k8s-finalproject.com" # User페이지를 위한 도메인
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: front-svc-user
port:
number: 80
- host: "k8s-finalproject-admin.com" # Admin페이지를 위한 도메인
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: front-svc-admin
port:
number: 80
Frontend-Ingress에서 다중 호스트를 이용하여 페이지를 구분하였다.
또한 HTTPS적용을 위해 도메인 인증서의 arn을 적용하였는데 두개이상의 arn을 적용할때는 ,를 이용하여 구분하면된다.
-> 처음에는 각 arn마다 주석을 추가하거나, 리스트 형태로 여러 arn을 구분하였는데 에러가 발생하였다.