개발환경 — 어디서든 하나로
직접 코드를 수정할 때는 브라우저로 code-server에 접속하고, 아이패드에서는 Claude Code에 작업을 요청합니다.
hub 클러스터의 Pod에서 code-server를 실행하고, 그 터미널에서 Claude Code를 사용하고 있습니다.
이 글도 code-server에서 작성하고 있습니다.
클러스터와 NAS의 구성은 hub / edge 구조에서 확인할 수 있습니다.
브라우저로 접속하기
브라우저에서 code-server의 도메인으로 접속하면 Istio Gateway가 요청을 oauth2-proxy로 전달합니다.
oauth2-proxy가 로그인 쿠키를 확인하고, 쿠키가 없으면 Keycloak의 로그인 화면이 열립니다.
로그인을 마치면 code-server의 편집기와 터미널을 사용할 수 있습니다.
oauth2-proxy와 Keycloak을 OIDC로 연동했고, 접근 권한은 code-server-users 그룹으로 관리합니다.
code-server에서 인증을 다시 요구하지 않도록 자체 로그인은 --auth=none으로 비활성화했습니다.
처음에는 code-server의 비밀번호 인증만 사용했습니다.
code-server에서 호스팅하는 웹서비스에는 누구나 접속할 수 있는 도메인도 있고, 로그인이 필요한 도메인도 있습니다.
도메인별로 인증을 설정하려고 oauth2-proxy를 추가하고, ArgoCD에 사용하던 Keycloak을 연동했습니다.
Keycloak에 장애가 생기면 새로 로그인하지 못할 수 있지만, tmux에서 실행하던 작업까지 중단되지는 않습니다.
파일과 터미널을 유지하는 방법
NAS 스토리지를 PVC로 연결해 Pod의 홈 디렉토리로 사용하고 있습니다.
Pod가 다른 노드에서 다시 실행되더라도 저장한 파일을 불러올 수 있습니다.
브라우저를 닫았을 때도 작업이 계속되도록 터미널에는 tmux를 사용합니다.
터미널을 열 때마다 main과 연결된 grouped session을 만들고 새 window를 열도록 설정했습니다.
터미널을 닫을 때는 아무 작업도 하지 않는 bash window만 정리합니다.
Claude Code나 SSH를 실행 중인 window는 main에 남아 있어, 다른 브라우저로 접속한 뒤에도 prefix+w로 선택할 수 있습니다.
다만 Pod 자체가 종료되면 tmux도 종료됩니다.
파일은 PVC에 보존되지만, 실행 중이던 터미널 세션까지 복원되지는 않습니다.
아이패드에서 이어가기
tmux 터미널에서 claude를 실행한 뒤 /rc를 입력하면, 아이패드의 Claude 앱에서 해당 세션을 선택할 수 있습니다.
아이패드에서 파일 수정을 요청하면, Anthropic 릴레이를 통해 요청을 받은 Claude Code가 Pod 안의 파일을 수정합니다.
code-server에 따로 로그인하거나 VPN에 연결할 필요는 없습니다.
Pod에서 외부로 나가는 HTTPS 연결을 사용하므로 포트를 추가로 열 필요도 없습니다.
자리를 비울 때도 작업을 옮기거나 터미널을 따로 정리하지 않습니다.
어느 기기에서 접속하더라도 작업 기록을 확인하고 하던 작업을 재개할 수 있습니다.