Skaffold와 IntelliJ Cloud Code로 Kubernetes 개발하기
Kubernetes에서 애플리케이션을 확인하려면 소스 수정 뒤에도 이미지 빌드와 배포가 필요합니다. 이 과정을 매번 직접 실행하지 않고 IDE에서 이어갈 방법을 찾으며 Skaffold와 Cloud Code를 살펴봤습니다.
소스 변경과 배포 연결
Skaffold는 프로젝트의 빌드·배포 설정을 읽어 개발 중 반복하는 작업을 연결합니다. skaffold dev를 실행하면 처음 빌드와 배포를 진행하고, 이후 소스 변경을 감지해 필요한 작업을 다시 실행합니다.
skaffold dev이 명령은 프로젝트에 맞는 skaffold.yaml과 이미지 빌드·클러스터 접근 설정을 준비한 뒤 사용합니다. Dockerfile을 쓰는지 Jib 같은 빌더를 쓰는지에 따라서도 설정이 달라집니다.
변경 사항을 반영하는 방법에는 이미지를 다시 빌드하는 방식과 실행 중인 컨테이너에 파일을 동기화하는 방식이 있습니다. 파일 동기화만으로 애플리케이션이 변경을 다시 읽는 것은 아니므로, 사용하는 언어와 프레임워크의 동작도 함께 봐야 합니다.
IntelliJ의 Cloud Code 연동
Cloud Code는 IntelliJ에서 Kubernetes 애플리케이션을 실행하고 디버깅하는 기능을 제공합니다. Skaffold 설정을 바탕으로 IDE 안에서 배포 상태와 로그를 보며 개발할 수 있습니다.
실행과 디버깅도 구분할 필요가 있습니다. 브라우저에서 서비스가 열린다고 디버거가 연결된 것은 아닙니다. 디버깅하려는 프로세스와 포트가 맞는지, IDE에서 건 중단점에 실제로 멈추는지 확인해야 합니다.
개발용 클러스터와 설정 확인
반복 배포를 시작하기 전에는 현재 Kubernetes 컨텍스트와 네임스페이스부터 확인하는 편이 좋습니다. 이미지 저장소와 접근 권한, 로컬 포트 연결도 프로젝트 설정에 맞춰야 합니다.
도구가 명령 실행을 묶어 주더라도 빌드 실패와 이미지 접근 실패, 애플리케이션 시작 실패는 원인이 다릅니다. 어디까지 진행됐는지 로그에서 구분할 수 있어야 수정한 코드를 다시 확인하기 수월합니다.
참고 자료
당시 조사했던 내용은 현재 문서에서 다음 항목으로 이어서 볼 수 있습니다. 설정 파일의 API 버전과 지원 기능은 사용하는 Skaffold·Cloud Code 버전에 맞춰 확인해야 합니다.