이전 작업으로 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에 정확한 경로로 요청을 보내지 못하게 되는 것 같다.
따라서 그냥 Route53에서 도메인 하나 더 사서 Ingress에서 다중경로가 아닌 다중 호스트로 구분했다.
-> 하나 더 구매한 도메인 또한 external-dns를 이용하여야 하기 때문에 기존의 존재하는 서비스계정(= IAM롤)을 이용하여 파드만 띄워놨다.
-> 또한 해당 도메인에도 ACM을 이용해 인증서를 발급받아 HTTPS를 적용하였다.
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
ML 서버의 코드는 파이썬을 이용하여 Flask로 구축되었다.
Flask 도커라이징은 처음이기 때문에 자료조사와 여러 테스트를 우선적으로 진행하고 명일부터 본격적으로 빌드테스트와 도커라이징을 해볼 것이다.