Skip to Content
Blog개발환경 — 브라우저와 아이패드

개발환경 — 어디서든 하나로

#개발환경#SSO#Claude Code

직접 코드를 수정할 때는 브라우저로 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의 편집기와 터미널을 사용할 수 있습니다.

hub 클러스터 — Kubernetes홈서버 중 한 노드HTTPS라우팅OIDC인증 후터미널PVC브라우저노트북 · 데스크탑istio gateway공인 도메인oauth2-proxy로그인 위임KeycloakSSOcode-server podauth=nonetmux main창 유지StoragePVC 작업 디렉토리
브라우저로 접속하면 oauth2-proxy에서 로그인 상태를 확인합니다. 작업한 파일은 Pod에 연결한 NAS 스토리지에 저장합니다.

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 앱에서 해당 세션을 선택할 수 있습니다.

사용자 기기연결 경로code-server pod로그인세션 쿠키attach실행HTTPS릴레이 · pod가 밖으로 연 연결브라우저웹 VS CodeKeycloakoauth2-proxy → OIDCcode-server통합 터미널tmux window/rcClaude Code같은 tmux 세션iPad · 폰Remote ControlAnthropic 릴레이인바운드 포트 X
아이패드에서 요청한 작업도 Pod에서 실행 중인 Claude Code가 처리합니다. 브라우저로 돌아오면 편집기에서 수정된 파일을 확인할 수 있습니다.

아이패드에서 파일 수정을 요청하면, Anthropic 릴레이를 통해 요청을 받은 Claude Code가 Pod 안의 파일을 수정합니다.

code-server에 따로 로그인하거나 VPN에 연결할 필요는 없습니다.

Pod에서 외부로 나가는 HTTPS 연결을 사용하므로 포트를 추가로 열 필요도 없습니다.

자리를 비울 때도 작업을 옮기거나 터미널을 따로 정리하지 않습니다.

어느 기기에서 접속하더라도 작업 기록을 확인하고 하던 작업을 재개할 수 있습니다.