PodManager_V2

메인 인덱스 | CCG-Platform | GitHub

이 문서는 PodManager_V2 레포의 핵심 정보와 포트폴리오 메모를 한 파일로 정리한 노트입니다.

주요 목적

Kubernetes 클러스터에서 파드 라이프사이클을 관리하기 위한 API 레포입니다. 외부 노출이 없는 API 전용 버전이고, 백엔드 서비스가 이 레포를 호출해 워크스페이스 파드를 만들고 지우는 흐름을 전제로 합니다. 사용자 파드 간 NetworkPolicy 격리도 함께 다룹니다.

주요 기술 스택

카테고리스택
백엔드FastAPI (Python)
템플릿Jinja2 (YAML templating)
컨테이너 오케스트레이션Kubernetes
프록시Traefik (IngressRoute CRD)
DNS/SSLCloudflare + cert-manager
네트워킹NetworkPolicy (pod isolation)

포트폴리오 메모

이 레포에는 Jinja2 템플릿으로 Kubernetes 리소스를 생성하는 API 계층이 들어 있습니다. 외부 웹 서비스와 파드 관리 흐름을 분리했고, NetworkPolicy와 RBAC, 배포 스크립트까지 함께 두어 운영 환경을 어떻게 잡았는지 설명할 수 있습니다.

주요 파일

애플리케이션 코드

  1. manager/src/pod_manager/main.py - FastAPI 앱 진입점
  2. manager/src/pod_manager/k8s_manager.py - K8s 리소스 관리
  3. manager/src/pod_manager/services.py - 비즈니스 로직
  4. manager/src/pod_manager/models.py - Pydantic 모델
  5. manager/src/pod_manager/config.py - 설정 관리
  6. manager/src/pod_manager/exceptions.py - 사용자 정의 예외
  7. manager/src/pod_manager/pod_spec_template.py - Jinja 템플릿 렌더러

템플릿 (Jinja2)

  1. manager/src/pod_manager/templates/pod_spec.yaml.j2 - 파드 정의
  2. manager/src/pod_manager/templates/service_spec.yaml.j2 - 서비스 정의
  3. manager/src/pod_manager/templates/ingressroute_spec.yaml.j2 - IngressRoute
  4. manager/src/pod_manager/templates/network_policy_spec.yaml.j2 - NetworkPolicy

Kubernetes Manifests

  1. k8s/namespace.yaml - 네임스페이스 정의
  2. k8s/manager-rbac.yaml - RBAC 설정
  3. k8s/manager-deployment.yaml - 배포 사양
  4. k8s/network-policies.yaml - 네트워크 격리
  5. k8s/traefik-middleware.yaml - Traefik 미들웨어
  6. k8s/workspace-ingressroute.yaml - 워크스페이스 라우팅
  7. k8s/turn-rest-proxy.yaml - TURN REST 프록시

배포 스크립트

  1. scripts/build.sh - 빌드 및 푸시 자동화
  2. scripts/deploy.sh - 배포 자동화
  3. scripts/cleanup.sh - 정리 자동화

문서

  1. TEMPLATING.md - Jinja 템플릿 변수 가이드
  2. README.md - 여러 설정 가이드

아키텍처 유형

템플릿 기반 리소스 생성이 있는 Kubernetes API:

Web Backend → Pod Manager API → K8s API → User Pods
                  (Jinja2 templates)

주요 기능

  • 순수 RESTful API (UI 없음)
  • K8s 리소스용 Jinja2 템플릿
  • NetworkPolicy 기반 파드 격리
  • 미들웨어로 HTTPS 강제
  • 쿠키 기반 라우팅 (8시간 타임아웃)
  • 최소 권한 원칙으로 RBAC
  • 여러 리소스 정리

API 엔드포인트

  • POST /api/v1/pods - 파드 생성
  • GET /api/v1/pods/{session_id} - 파드 조회
  • DELETE /api/v1/pods/{session_id} - 파드 삭제
  • GET /api/v1/pods - 모든 파드 목록
  • GET /health - 헬스 체크

관련 레포지토리

  • PodManager (원본 버전)
  • portal-backend (웹 서비스)
  • Selkies (WebRTC 스트리밍)

참고사항

  • 템플릿 기반 리소스 생성 흐름이 보입니다.
  • K8s 관리 API를 Python으로 어떻게 나눴는지 확인할 수 있습니다.
  • portal-backend와 연결해서 읽으면 서비스-인프라 경계가 더 분명합니다.