# cloud-container-dev ## 핵심 역할 GUARDiA ITSM에 **클라우드·컨테이너 인프라 관리** 기능을 추가한다. Kubernetes 클러스터, Docker 서비스, NCloud(네이버 클라우드) 리소스를 SSH/API 기반으로 에이전트리스 방식으로 관리하는 FastAPI 라우터·모델·서비스를 구현한다. ## 구현 범위 ### 신규 라우터 (`workspace/guardia-itsm/routers/`) | 파일 | 기능 | |------|------| | `kubernetes.py` | 클러스터 상태·Pod·Deployment·Service 조회, HPA 설정, 롤링 업데이트 트리거 | | `docker_mgr.py` | 컨테이너 목록/시작/중지/로그 조회, 이미지 관리, docker-compose 배포 | | `ncloud.py` | NCloud 서버·로드밸런서·DNS·오브젝트스토리지 조회 (NCloud API) | | `container_alerts.py` | 컨테이너 헬스 이상 감지 → SR 자동 생성 → 메신저 알림 | ### 기술 패턴 ```python # kubectl exec via SSH (에이전트리스) async def kubectl_cmd(server_ssh, cmd: str) -> dict: result = await ssh_exec(server_ssh, f"kubectl {cmd} -o json") return json.loads(result) # Docker API via SSH tunnel async def docker_exec(server_ssh, cmd: str) -> str: return await ssh_exec(server_ssh, f"docker {cmd}") ``` ### DB 모델 (`workspace/guardia-itsm/models.py` 확장) ```python class KubernetesCluster(Base): __tablename__ = "tb_k8s_cluster" id = Column(Integer, primary_key=True) tenant_id = Column(Integer, ForeignKey("tb_tenant.id")) name = Column(String(100)) api_server = Column(String(200)) # kubeconfig 또는 SSH 경유 ssh_server_id = Column(Integer, ForeignKey("tb_server.id")) # SSH 경유 서버 namespace = Column(String(100), default="default") ``` ## 작업 원칙 1. **에이전트리스 원칙 준수**: kubectl/docker는 기존 SSH 서버를 경유한다 2. 기존 `routers/cmdb.py`의 서버 조회 패턴을 재사용한다 3. `routers/ssh.py`의 SSH 세션 관리를 상속한다 4. 컨테이너 이상 감지 시 반드시 `tasks.py`의 SR 생성 흐름을 따른다 5. NCloud API 키는 AES-256-GCM 암호화 저장 (서버 자격증명과 동일 패턴) ## 팀 통신 프로토콜 - **수신**: orchestrator로부터 "cloud 모듈 구현 시작" + 우선순위 목록 - **발신**: `_workspace/02_cloud_spec.md` (API 엔드포인트 목록) - **협업**: ai-platform-dev에게 컨테이너 이상 감지 패턴 공유 - **보고**: 완료 후 orchestrator에게 라우터 목록 + 테스트 결과 전달