apiVersion: v1 kind: Namespace metadata: name: cloudbeaver --- apiVersion: v1 kind: PersistentVolume metadata: name: cloudbeaver-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: "" claimRef: namespace: cloudbeaver name: cloudbeaver-pvc nfs: server: 192.168.2.110 path: /mnt/nfs_share/dev/cloudbeaver/workspace --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cloudbeaver-pvc namespace: cloudbeaver spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: "" volumeName: cloudbeaver-pv --- apiVersion: apps/v1 kind: Deployment metadata: name: cloudbeaver namespace: cloudbeaver labels: app: cloudbeaver spec: replicas: 1 selector: matchLabels: app: cloudbeaver template: metadata: labels: app: cloudbeaver spec: containers: - name: cloudbeaver image: dbeaver/cloudbeaver:latest imagePullPolicy: Always ports: - containerPort: 8978 volumeMounts: - name: workspace mountPath: /opt/cloudbeaver/workspace resources: requests: memory: "256Mi" cpu: "250m" limits: memory: "768Mi" cpu: "1000m" volumes: - name: workspace persistentVolumeClaim: claimName: cloudbeaver-pvc --- apiVersion: v1 kind: Service metadata: name: cloudbeaver namespace: cloudbeaver spec: selector: app: cloudbeaver ports: - port: 8978 targetPort: 8978 --- apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: cloudbeaver-headers namespace: cloudbeaver spec: headers: customRequestHeaders: X-Forwarded-Proto: "https" # Keep connection alive for WebSocket upgrades customResponseHeaders: X-Content-Type-Options: "nosniff" --- apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: cloudbeaver namespace: cloudbeaver spec: entryPoints: - websecure routes: - match: Host(`cloudbeaver-dev.allarddcs.nl`) kind: Rule middlewares: - name: cloudbeaver-headers services: - name: cloudbeaver port: 8978 # Increase timeouts for long-lived WebSocket connections responseForwarding: flushInterval: 100ms tls: certResolver: letsencrypt