
Multi-Tenant K8s Cluster on ARM64 의 첫 스프린트(?)였던
프로젝트 구축 및 교내 개발 동아리(GREEDY) 프로젝트 지원이 지난주 토요일에 종료되었습니다. 첫 스프린트 기간을 회고해보겠습니다.
작년 여름부터 인프라 분야에 많은 관심을 갖게 되었습니다. 이론 공부를 할수록 직접 만들어보고 싶다는 생각이 강해졌던 것 같습니다. 특히 CSP 쪽 직군에 관심이 많이 생겼고, "나도 클라우드 서비스를 직접 구축하고 운영해보고 싶다" 라는 생각이 많이 들었습니다. 미친듯이 치솟는 RAM 가격과 가난한 대학생이었기에 여름부터 12월까지 알바를 하며 돈을 모았습니다.(홈랩 구축 비용, Kubestronaut(졸업 전 버킷리스트) 번들 비용, 맥북 교체 비용...)
📌 홈랩 구축기 - 블로그
.
.
.

매우 많은 시행착오들을 겪으며 살아숨쉬는 제 반려 홈랩 이 탄생했습니다. 🥹
홈랩에서 쿠버네티스 설치 및 클러스터 구축을 완료하고 "다음은 뭘 할까?" 라는 고민을 했습니다. CSP 와 같이 사용자에게 서버를 제공하고 관리하는 역할을 해보고 싶었기에 주위에 서버가 필요한 개발자를 찾아보았습니다.
때마침 운영진(메인테이너)으로 활동 중인 교내 개발 동아리 그리디(GREEDY)에서 3기 멤버들이 곧 프로젝트 시작을 할 때였습니다. 저 또한 그리디에서 BE, FE 를 배웠고, 프로젝트 과정 중 느꼈던 아쉬웠던 점이 있었는지 생각해보았습니다. 가장 생각이 많이 났던 부분은 학생이라 비용 부담 때문에 프리티어 계정만 사용이 가능하고, 이마저도 단일 서버로만 운영을 해야한다 는 점이었습니다.
단일 서버로 프로젝트를 진행했기 때문에 미션 요구사항 중 무중단 배포 와 모니터링 대시보드 구축 모두 아쉬움이 많이 남았던 기억이 있습니다.(ec2 t2.micro 를 반으로 쪼개어 블루-그린 배포를 진행하고, 하나의 인스턴스에 모니터링 서버와 백엔드 서버를 함께 띄우는 구조적 모순까지,,,ㅜㅜ)
멤버들에게 평생 서버를 제공해줄 수는 없겠지만,, 적어도 동아리 프로젝트 기간(약 2달) 동안은 멤버들이 다중 서버 운영도 해보고, '진짜' 무중단 배포도 경험해보고, 아키텍처 고민도 해보는 시간이 되었으면 했습니다.
최종 데모데이 요구사항(무중단 배포 적용, 모니터링 대시보드 구축 등) 공개일이 많이 남지 않아서 빠르게 멀티-테넌트 프로젝트를 진행했습니다.
📌 멀티 테넌트 제공 프로젝트 구축기 - 블로그
마감기간 직전에는 밤을 샌 날이 참 많았던 것 같습니다..허허
다행히 (가벼운)테스트까지 끝마치고 멤버들에게 테넌트 서버 제공이 가능했고, 두 팀에게 각각 테넌트 서버 5대씩 총 10대 를 제공해주었습니다.

- 동아리의 주된 소통 채널이
디스코드이기 때문에 테넌트 서버 안내사항을 전달했습니다.- 서버 리소스 확보를 위해 Alpine 버전의 운영체제를 사용했는데, 많은 멤버들이
apk사용이 처음일 것 같아서 추가 안내 또한 진행했습니다.

- 제공한 테넌트 서버는 총 10대, 이를 사용하는 백엔드 멤버 총 6명.
- 많은 인원이 적지 않은 수의 테넌트 서버를 사용하기 때문에 기술적 문제에 대한 피드백 또한 많을 것 같았습니다. 이를 관리하고 전체 사용자들에게 업데이트 안내를 하고자 정리하고 관리했습니다.
Case 1)
⚠️ 사용자 피드백 중 테넌트 서버 재시작 시 기존 파일이 저장되지 않는다는 피드백이 있었습니다.
1️⃣ 문제 파악 및 해결
📌 '파드 재시작 시 데이터 휘발' 에 대한 정리 - 블로그
2️⃣ 업데이트 안내
3️⃣ 패치 노트 작성
Case 2)
⚠️ 또 다른 피드백 중 사전에 제공해준 포트를 사용하여 웹 접속이 안 된다는 피드백이 있었습니다.
1️⃣ 문제 파악 및 해결
📌 '외부에서 브라우저 접속 시 응답 없음' 에 대한 정리 - 블로그
2️⃣ 업데이트 안내
3️⃣ 패치 노트 작성
멀티 테넌트 서버를 제공한 당일부터 예상하지 못했던 문제점과 피드백이 많은 도움이 되었습니다. 또, 이번 첫 사용자들의 피드백을 참고하여 이후
고도화 작업및오프라인 인프라 핸즈온 세미나를 진행하고자 했습니다.


감사하게도 여러 부원들이 피드백을 남겨주었고, 다음 고도화 방향과 세미나 주제를 선정하는데에 큰 도움이 되었습니다. 🙏🏻
일단 해보고 싶은 작업이 너무 많습니다ㅎㅎ. 그중에서 사용자 피드백을 우선 반영하고 고도화를 진행해볼까 합니다.
Public Key 만을 사용하여 접속하도록 리팩토링 (비밀번호 입력이 번거롭다는 피드백 & AWS - ec2의 경우 인스턴스 생성 시 퍼블릭 키 제공 참고)스토리지 전용 테넌트 모델 생성 (현재 제공 중인 tenant-basic, standard, pro 모두 서비스 특화 모델)모니터링 시스템 고도화 (현재는 Node-exporter + Prometheus + Grafana 를 사용하고 있는데, 파드 레벨의 매트릭 도입 및 다양한 패턴 적용해보기)GitOps 도입 (GitHub + Helm + ArgoCD)Kata Container, KubeVirt 등)처음 홈랩 클러스터 부품들(
약 80만원,,,,,😭)을 주문할 때가 12월 중순이었습니다. 베어메탈 단계부터 직접 구축하고, 테넌트 서버 프로젝트 구축 & 운영을 하다보니 정말 많은 것들을 배웠고, 값진 경험을 한 것 같습니다. 실제 클라우드 기업이 구현하고 운영하는 것과는 많은 차이가 있겠지만...^^ 비슷하게나마 따라서 만들고 운영 해보길 잘한 것 같습니다.현재는 1차 스프린트였던 그리디 3기 프로젝트가 종료되었지만, 바로 2차 스프린트 계획을 잡을까 합니다. 그리디 부원들이 만든 꽤나 성숙한 프로젝트들이 많기에 각 프로젝트팀에게 입주 제안을 하려고 합니다. 1차 스프린트 때는
미션(요구사항)이라는 강제성(?)이 있었지만, 이번에는사용자(프로젝트 팀) - 클라우드 기업(나)의 관계로 견고한 제품을 팔아본다는 마음을 가져볼까 합니다.ㅎㅎ감사합니다. :D