네트워킹, 시스템 관리 프로젝트입니다.
ft_services는 Kubernetes(쿠버네티스)로 당신을 안내합니다. 당신은 쿠버네티스를 통해 클러스터 관리 및 배포를 배우게 될 겁니다. 네트워크를 가상화하고, "클러스터링"하게 될 거에요.
srcs
라는 폴더에 당신의 서버에 대한 모든 필요한 설정 파일들을 담으세요.setup.sh
는 리포지터리의 루트에 위치해야 합니다. 이 파일은 당신의 모든 어플리케이션을 셋업할 겁니다.서비스로서의 인프라스트럭처(Infrastructure as a Service, IaaS)는 서버, 스토리지, 네트워크를 필요에 따라 인프라 자원을 사용할 수 있게 클라우드 서비스를 제공하는 형태이다. 대표적인 기술로는 서버 가상화, 데스크톱 가상화 등이 있다. - 위키피디아
해당 프로젝트는 다양한 서비스들에 대한 인프라스트럭쳐를 세팅하는 것으로 이루어져 있습니다. 이를 위해 쿠버네티스를 이용해야 합니다. 당신은 멀티 서비스 클러스터를 세팅해야 할 겁니다. 각각의 서비스는 지정된 컨테이너에서 실행되어야 합니다. 각각의 컨테이너는 반드시 서비스와 관련된 이름을 가져야 하고, 퍼포먼스와 관련된 이유로, 컨테이너들은 Alpine Linux를 이용해서 빌드되어야 합니다.
또한 setup.sh
에서 호출될 도커파일을 작성해야 합니다. 당신이 사용할 이미지들을 빌드해야 합니다. 이미 빌드된 이미지를 사용하거나, DockerHub 같은 기존의 서비스들을 이용하는 것은 금지되어 있습니다.
그리고 다음의 것들을 세팅하세요.
서비스에 대한 모든 리디렉션은 로드밸런서를 이용해서 실행되어야 한다는 점을 꼭 기억하세요. FTPS, Grafana, Wordpress, PhpMyAdmin, 그리고 nginx의 종류는 반드시 "LoadBalancer"이어야 합니다. Influxdb와 MySQL의 종류는 반드시 "ClusterIP"이어야 합니다. 다른 엔트리들도 존재할 수는 있지만, 무엇도 "NodePort"여서는 안 됩니다.
Node Port 서비스를 사용하는 것, Ingress Controller object 또는 kubectl port-forward command 모두 금지되어 있습니다. 당신의 로드 밸런서만이 클러스터에 접근할 수 있는 유일한 엔트리 포인트여야 합니다.
클라우드 서비스가 제공하는 로드 밸런서를 사용하는 것은 의미가 없습니다. MetalLB를 참고하는 게 더 나을 거에요.
요구사항이 이렇게나 많은데 프로젝트 기한 1주일, 블랙홀 1주일의 레전드 프로젝트... 첩첩산중이지만 또 잘 해내보자.