[42Seoul] ft_services 서브젝트 번역

hyeonze·2021년 3월 31일
0

42Seoul

목록 보기
6/9

Git repository

Ft_services

요약 : 본 과제는 시스템 관리 및 네트워킹 프로젝트이다.

Chapter I : Introduction

ft_services는 쿠버네티스를 소개한다. 쿠버네티스를 사용하여 클러스터 관리 및 배포를 할 것이다. 네트워크를 가상화하고 "클러스터링"을 수행할 것이다.

Chapter II : Common Instructions

서버 구성에 필요한 모든 파일은 srcs폴더에 있어야 한다.

setup.sh파일은 레포의 루트에 있어야 한다. 이는 모든 어플리케이션을 설치한다.

본 과제는 과거의 것과 새로운 것 모두를 요구한다. 따라서 도커, 쿠버네티스 그리고 프로젝트에 관련된 모든 문서를 읽는데 겁내지 않는 것이 좋다.

Chapter III : Mandatory part

본 프로젝트는 서로다른 서비스들의 인프라 설정으로 구성된다. 이를 위해 반드시 쿠버네티스를 사용해야한다. 멀티-서비스 클러스터를 구성할 필요가 있다.
각 서비스는 전용 컨테이너에서 실행돼야 한다.
각 컨테이너는 서비스와 같은 이름을 가져야 한다. 컨테이너들은 성능을 위해 Alpine Linux로 빌드돼야 한다.
그리고 그들은 setup.sh에서 호출되는 Dockerfile을 필요로 한다.
너가 사용할 이미지를 직접 빌드할 수 있어야 한다. 이미 빌드된 이미지나 DockerHub와 같은 서비스를 사용하는 것은 금지돼있다.

다음에 대해 설정해라 :

  • Kubernetes web bashbard. 클러스터 관리에 도움을 준다.
  • Load Balancer. 서비스의 외부 접근을 관리한다. 이는 클러스터의 유일한 진입점이다. 서비스와 연결된 포트가 반드시 유지돼야 한다. (grafana일 때 IP:3000 등) Load Balancer는 단일 IP를 갖는다.
  • WordPress. 5050번 포트로 들어올 수 있고, MySQL데이터베이스로 작동된다. 두 서비스는 별개의 컨테이너에서 작동돼야 한다. WordPress 웹사이트는 여러 사용자와 한 명의 관리자를 가진다. WordPress는 자신의 nginx 서버를 필요로한다. Load Balancer는 직접적으로 이 서비스에 리다이렉션 할 수 있어야 한다.
  • phpMyAdmin은 5000번 포트로 들어올 수 있고, MySQL데이터베이스와 링크돼있다. phpMyAdmin은 자신의 서버를 필요로한다. Load Balancer는 직접적으로 이 서비스에 리다이렉션 할 수 있어야 한다.
  • nginx서버는 80번과 443번 포트로 들어올 수 있다. 80번 포트는 http이고, 443번 포트인 https로 리다이렉션(301) 돼야 한다. http에러가 아닌 이상 표시되는 페이지는 중요하지 않다. 컨테이너는 /wordpress로 접근이 허용돼야 하며 307포트는 IP:WPPORT로 리다이렉트 돼야 한다. /phpmyadmin로 reverse proxy를 이용한 IP:PMAPORT로 접근도 허용돼야 한다.
  • FTPS 서버는 21번 포트로 들어올 수 있다.
  • Grafana플랫폼은 3000번 포트로 들어올 수 있고, InfluxDB데이터베이스와 연결돼 있다. Grafana는 모든 컨테이너릴 모니터링 할 수 있다. 하나의 서비스에 하나의 대시보드를 생성해야 한다. InfluxDB와 Grafana는 두 개의 개별 컨테이너에 있어야 한다.
  • 두 데이터베이스 컨테이너 중 하나가 손상되거나 종료돼도 데이터가 유지돼야한다.
  • 컨테이너의 구성요소 중 하나가 손상되거나 종료됐을 때, 모든 컨테이너들은 재시작 돼야 한다.
    Load Balancer를 사용해서 서비스에 대한 각 리디렉션이 수행됐는지 확인해라. FTPS, Grafana, Wordpress, PhpMyadmin 그리고 nginx의 kind는 "LoadBalancer"여야 한다. Influxdb 와 MySQL의 kind는 "ClusterIP"여야 한다. 다른 항목이 있을 수 있지만, "NodePort"kind는 될 수 없다.
    다음은 설정해야 하는 항목의 예시다 :

Node Part service, INgress Controller object 또는 kubectl port-forward 명령은 금지돼 있다.
Load Balancer가 클러스터의 유일한 진입점이어야한다.

Cloud Provider가 제공하는 Load Balancer를 사용하는 것은 쓸데없다. 차라리 MetalLB을 보는 것이 낫다.

profile
Advanced thinking should be put into advanced code.

0개의 댓글