쿠버네티스에서는 컴퓨팅 인스턴스와 스토리지를 구분한다.
이때 스토리지는 PersistentVolume이라는 리소스로 관리된다.
여기서 스토리지는 각 노드의 로컬 파일 시스템일 수도 다른 파일 서버일 수도 있다.
아래서 언급할 hostPath, GlusterFS, CephFS, NFS, local 등이 이에 해당한다.
k8s에 젠킨스를 올리기 위해서 찾아본 글이 대부분은 hostPath를 사용했다.
그 중 거희 항상 언급되는 말이 실제로 운용할 때는 GlusterFS 같은 서버스를 이용해야한다는 것이였다.
근데 GlusterFS가 성능이 좋을 지언정 최소 3개의 노드를 운용해야된다는 단정이 있었고 (적어도 나의 경우에는) Proxmox에 남은 자원이 없었다.
Proxmox에서 기본으로 지원하는 CephFS도 시도해봤지만 Proxmox 서버 노드가 1개이고 이미 LV가 하드 전체를 이용하고 있어서 불가능했다.
그 다음으로 시도한 것이 NFS인데 별도의 NFS 서버를 운용하면서 그 서버에 PV를 마운트하려 했지만 ubuntu 22.04 버전에 depencency 어쩌고 하면서 실패하는 버그 때문에 포기하고 다른 방법을 찾았다.
물론 못찾았으면 어떻게든 NFS 서버를 구축하여 사용했겠지만 openEBS라는 좋은 대체제를 찾았다.
위에서 언급된 GlusterFS, CephFS 등은 별도의 서버를 운용해야하는데 이는 상당히 복잡한 작업에 속한다.
반면 openEBS는 k8s 클러스터 내부에 설치하여 사용할 수 있다.
openEBS는 K8s를 구성하는 각 노드의 Local Disk를 이용하여 PV를 생성한다.
따라서 별도의 서버나 디스크를 구성하지 않아도 된다.
*k3s에서는 openEBS Local Path와 유사한 local-path Storage가 존재한다고 한다. 나중에 사용해 보고 싶다.
이번 포스트에서는 helm를 이용해 openEBS를 설치하고 jenkins를 설치해 테스트해보았다.
물론 적절한 예시는 아니였지만 처음으로 helm를 이용해보고 openEBS를 사용해보는 것이라 새로웠다.
단 openEBS의 자세한 내용이나 아직 pv, pvc에 대한 내용을 정리하지 않아서 현제 상황에 이게 적절한 설정인건지 알 수 없다.
이후에는 openEBS에 대한 내용을 정리하고 PV, PVC에 대한 포스트도 준비해보아야겠다.
배포 서버를 구성하려던 원래 계획은 약간 틀어졌지만 알게된게 더 많으니 만족해야겠다.
물론 배포 서버 구축해서 배포하는건 docker를 이용해 jenkins 서버를 구축하고 jenkins를 이용해 배포하는 방식으로 진행할 예정이다.