CloudBeaver 는 DBeaver 의 웹 버전이다. 브라우저에서 데이터베이스에 붙어 질의하고 결과를 본다. 컨테이너 이미지는 dbeaver/cloudbeaver 이고, 기본 포트는 8978 이다. 설정과 연결 정보, 사용자 계정은 모두 워크스페이스 디렉터리 /opt/cloudbeaver/workspace 아래에 파일로 저장된다.
워크스페이스를 영속 볼륨에 두지 않으면 파드가 재시작될 때 등록한 연결과 계정이 전부 사라진다. 초기 관리자 설정 화면부터 다시 시작한다. 시험용이 아니라면 PVC 를 반드시 붙인다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cloudbeaver-workspace
namespace: tools
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloudbeaver
namespace: tools
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: cloudbeaver
template:
metadata:
labels:
app: cloudbeaver
spec:
containers:
- name: cloudbeaver
image: dbeaver/cloudbeaver:25.3.5
ports:
- containerPort: 8978
name: http
env:
- name: CB_SERVER_NAME
value: "CloudBeaver"
- name: TZ
value: "Asia/Seoul"
volumeMounts:
- name: workspace
mountPath: /opt/cloudbeaver/workspace
readinessProbe:
httpGet:
path: /
port: 8978
initialDelaySeconds: 20
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: "2"
memory: 2Gi
volumes:
- name: workspace
persistentVolumeClaim:
claimName: cloudbeaver-workspace
---
apiVersion: v1
kind: Service
metadata:
name: cloudbeaver
namespace: tools
spec:
type: ClusterIP
selector:
app: cloudbeaver
ports:
- port: 8978
targetPort: 8978
replicas 는 1 이고 전략은 Recreate 로 둔다. 워크스페이스가 ReadWriteOnce 볼륨이고 CloudBeaver 가 그 위에 파일 기반 상태를 두기 때문에, 두 파드가 같은 워크스페이스를 동시에 잡으면 설정이 깨진다. RollingUpdate 로 두면 새 파드가 볼륨을 못 붙여 배포가 멈춘다.
이미지 태그는 latest 대신 고정한다. CloudBeaver 는 올릴 때 워크스페이스 스키마를 마이그레이션하는 경우가 있어, 의도하지 않은 업그레이드가 롤백을 어렵게 만든다. 위 예시의 25.3.5 는 2026-09-20 기준 최신 태그다[1].
Ingress 로 내보내는 것이 보통이다. 서브 경로가 아니라 호스트 루트에 붙이는 편이 문제가 적다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cloudbeaver
namespace: tools
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "100m"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
spec:
ingressClassName: nginx
rules:
- host: cloudbeaver.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: cloudbeaver
port:
number: 8978
CloudBeaver 는 브라우저와 WebSocket 으로 통신한다. 앞단 프록시가 업그레이드 요청을 통과시키고 읽기 타임아웃이 충분히 길어야 한다. 짧으면 긴 질의 도중 화면이 끊긴다. 서브 경로(/cloudbeaver) 로 붙이려면 서버 쪽 rootURI 설정을 함께 맞춰야 하고, 맞추지 않으면 정적 자원 경로가 깨진다.
포트 포워딩으로 먼저 확인한다.
kubectl -n tools port-forward svc/cloudbeaver 8978:8978
브라우저로 http://localhost:8978 에 붙으면 초기 구성 마법사가 뜬다. 여기서 관리자 계정과 서버 이름을 정한다. 이 화면은 인증 없이 누구나 볼 수 있으므로, 외부에 노출하기 전에 먼저 접속해 관리자 계정을 잡아 둔다.
CloudBeaver 는 기본적으로 실행 시점에 Maven 저장소에서 JDBC 드라이버를 내려받는다. 폐쇄망에서는 드라이버 목록에서 고른 뒤 연결 단계에서 실패한다. 드라이버를 포함한 이미지를 직접 만들어 쓴다.
CloudBeaver 릴리스 태그 — 2026-09-20 확인. https://github.com/dbeaver/cloudbeaver/tags ↩︎