VM 대신 Kubernetes pod를 사용하여 지속적인 빌드를 유지하는 일반적인 방법은 무엇인가요?

현재 VM에서 Jenkins 작업을 실행하고 있는데, 첫 빌드는 오래 걸리지만 바이너리가 저장되어 있어서 그 이후 빌드는 5-10분밖에 안 걸려요. 이제 Kubernetes 파드로 전환해야 하는데, 파드는 작업마다 새로 생성되고 삭제되니까 매번 전체 빌드를 다시 해야 해서(약 2시간 소요) 어떻게 해결하는 게 좋을지 고민하고 있어요.

퍼시스턴트 볼륨을 파드에 마운트할 수 있다는 건 알지만, 이런 볼륨은 보통 읽기 전용(Git 캐시 같은)으로 쓰는 게 좋다고 알고 있어요. 여러 파드가 동시에 같은 볼륨에서 빌드하는 상황을 피하기 위해서죠.

저는 일반적으로 CI 파이프라인 초기에 빌드를 수행하고, 컴파일된 바이너리를 포함하는 컨테이너 이미지를 발행합니다. 그러면 파드들은 해당 이미지를 가져와 몇 초 만에 실행할 수 있습니다. 만약 Kubernetes 내에서 인크리멘털 빌드가 여전히 필요하다면, EFS와 같은 네트워크 기반 캐시를 읽기 전용으로 마운트하여 의존성 캐시를 사용할 수 있습니다.

1 Like