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을 보는 것이 낫다.