[Project] Multi-Tenant K8s Cluster on ARM64 - (1) Intro

developowl·2026년 3월 5일
post-thumbnail

지난 홈랩 구축기 를 마무리 하며 드디어 온전한 홈랩을 갖게 되었습니다. 여기서 할 수 있는 것들이 너무나 많지만 가장 해보고 싶었던 것을 생각해보니 Google, AWS, MS 처럼 CSP의 시스템을 구축해보고 그 역할을 수행해보면 참 재밌겠다는 생각이 들었습니다. 또, 애플리케이션을 올리기 위해 만든 홈랩보다 운영의 관점에서 다양한 경험을 해보고 싶었기에 홈랩 프로젝트를 좀 더 고도화 하기로 결정했습니다.

뭐 먼저 할까?

사용자에게는 가상 인스턴스(SSH Server) 환경을 제공하고, 내부적으로는 Namespace 기반의 멀티 테넌시로 관리

인프라는 모르는 것 투성이기에 제 지식이 클라우드 서비스 전체를 커버할 수 없겠다는 생각이 들었습니다.(너무나 당연한 얘기..) 초기 구축 이후에 사용자들의 피드백을 지속적으로 받고, 개선해나가며 방향성을 잡기로 했습니다. 일단 지금 놀고 있는 리소스가 넘쳐나기에,,(RAM 24GB + CPU 12-Core + 768GB SSD - K8s 구축 리소스 = 놀고 있는 리소스) 이 리소스들을 사용자에게 CSP의 인스턴스(AWS-ec2, OCI-Instance 등)와 같이 제공을 해보면 좋겠다고 생각했습니다.

또, 현재 운영진으로 속해 있는 교내 개발 동아리 '그리디(GREEDY)' 에서 3기 멤버들이 프로젝트를 진행하고 있습니다. 4차 데모데이 요구사항 중 무중단 배포모니터링 서버 가 예정되어 있는데, 이때 제 테넌트 서버가 멤버들에게 좋은 경험을 줄 수 있다고 생각했고, 4차 데모데이가 다가오기 전에 프로젝트를 1차 런칭하기로 했습니다.

기술 스택

우선 테넌트 서버가 동작하는 홈랩의 스펙을 고려하여 라이트하게 사용할 기술 스택을 선정해봤습니다.

  • Infrastructure: Raspberry Pi 5 (8GB) * 3, NVMe SSD
  • Orchestration: Kubernetes v1.31 (kubeadm)
  • Runtime: Containerd v1.6.20
  • CNI (Network): Cilium v1.18.5
  • Storage: Local Path Provisioner

프로젝트 명세서 (Project Specs)

1.핵심 가치 (Core Values)

  • 격리성 (Isolation) : 테넌트 간의 간섭 최소화 (리소스, 권한, 네트워크, 스토리지 등)
  • 자율성 (Autonomy) : 할당된 범위 내에서 테넌트가 자유롭게 리소스 관리
  • 가시성 (Visibility) : 관리자와 테넌트 모두 자원 사용 현황 확인 가능

2. 상세 기능 명세 (Functional Specifications)

기능명상세 설명
권한 관리RBAC관리자(나) : 클러스터 전체 권한(cluster-admin)
테넌트 : 특정Namespace 내에서만 리소스 생성/삭제 가능. 타 네임스페이스 및 노드 정보 조회 불가
자원 관리Dynamic Resource QuotaNamespace별 CPU/RAM 상한선 설정
확장 기능 : 자원 부족 시 관리자 승인을 통항 쿼터 증설 프로세스 마련
네트워크Zero-Trust Network Policy테넌트 간 격리 : A 네임스페이스의 Pod 는 B 네임스페이스의 Pod 와 직접 통신 불가
외부(인터넷)을 거쳐 들어오는 통신은 허용 가능하도록 설계(Ingress / LoadBalancer 활용)
외부 접속External Access Point관리자/테넌트 : 포트포워딩을 통해 SSH 접속 지원
서비스 : 각 테넌트 앱에 고유 도메인 또는 포트 할당
모니터링Tenant DashboardPrometheus & Grafana 를 활용하여 테넌트별 실시간 자원 사용량 시각화

마무리

우선 멀티 테넌트 제공 프로젝트의 초기 계획을 세워봤습니다. 본격적인 개발 및 구축 과정을 이어서 기록해보겠습니다.

p.s) 글을 쓰는 현재 시점에서는 테넌트 서버 제공 서비스가 런칭을 하였습니다. 구축 및 개발 과정에서 너무나 많은 시행착오가 있었기에 개발과 함께 블로그 포스팅을 못하였지만, 노션 등에 정리한 내용과 시행착오들을 잘 블로그에 잘 정리해보겠습니다.

profile
Don’t get mad at the computer.

0개의 댓글