파이널 프로젝트 - 16주차 3일(4/5)

최수환·2023년 4월 6일
0

Kubernetes

목록 보기
72/75
post-thumbnail

User / Admin 페이지 경로 구분

  • 이전 작업으로 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
  • Frontend-Ingress에서 다중 호스트를 이용하여 페이지를 구분하였다.
  • 또한 HTTPS적용을 위해 도메인 인증서의 arn을 적용하였는데 두개이상의 arn을 적용할때는 ,를 이용하여 구분하면된다.
    -> 처음에는 각 arn마다 주석을 추가하거나, 리스트 형태로 여러 arn을 구분하였는데 에러가 발생하였다.

Machine Learning 서버

  • 위의 과정으로 전반적인 인프라 구축 및 CI/CD 파이프라인 구축작업은 종료되었다.
  • 개발자분이 서비스가 좀 심심하였는지, User페이지에서 User가 수강신청중 동물이미지를 입력하면 어떤 동물인지 판독하는 서비스를 추가하였다.
  • 따라서 해당 ML Backend 코드 또한 가상환경에서 빌드테스트 해보고, 도커라이징 할 것이다.
  • 도커라이징이 마무리되면 기존의 인프라를 수정하여 ML Backend 서버를 위한 Deployment, Service, Ingress를 추가할 것이고 도커라이징을 통해 생성한 이미지를 이용하여 Backend 서버 파드를 띄울 것이다.
  • 인프라 수정이 마무리되면 ML Backend 퍼블릭 주소가 생성될 것이고, 해당 주소를 경로를 구분하여 User Frontend 코드의 nginx.conf와 vite.config.js에 추가하여 User Frontend의 파이프라인을 다시 빌드할 것이다.
  • User Frontend 파이프라인 빌드 후 User페이지에서 동물판독기 페이지가 정상적으로 나타나면 ML서버의 CI/CD 파이프라인 또한 구축할 것이다.

ML 서버의 코드는 파이썬을 이용하여 Flask로 구축되었다.
Flask 도커라이징은 처음이기 때문에 자료조사와 여러 테스트를 우선적으로 진행하고 명일부터 본격적으로 빌드테스트와 도커라이징을 해볼 것이다.

profile
성실하게 열심히!

0개의 댓글