prole/prole-db/supabase.md
chrisfu da2f6600ba feat: infrastructure and installer updates for k3s, OpenTofu, and prole-db
- Add k3s start/stop Ansible playbooks and roles.

- Implement OpenTofu initialization scripts and k8s manifests.

- Update ncurses installer with OpenTofu support and improved k3s integration.

- Add mode support (--mode) to etc/ initialization scripts.

- Update prole-db with recovery, barman objectstore, and SSH OpenBao support.

- Refine k8s manifests for OpenBao and prole-db.
2026-02-05 21:27:18 -08:00

84 lines
2.9 KiB
Markdown

# Supabase Integration for Prole-DB
This document explains how Supabase is deployed alongside the Prole CloudNative-PG (CNPG) cluster and how it connects to Postgres. It provides practical guidance for operating and troubleshooting the integration.
## What is deployed
Supabase can be deployed alongside the Prole CNPG cluster. Currently, the base `supabase/supabase` image is unavailable on Docker Hub, so the default deployment manifests have been removed.
If you wish to deploy Supabase, you can use the `./supabase/deploy.sh` script which uses the official Supabase repository and its Docker Compose setup to generate Kubernetes manifests.
## Postgres connectivity
Supabase connects to the CNPG primary via the service `prole-db-rw` on port 5432. This service is managed by CNPG and always routes to the primary pod (selectors are CNPG-managed, e.g.):
- `cnpg.io/cluster: prole-db`
- `role: primary`
The database credentials come from the existing secret:
- Secret name: `prole-db-user`
- Keys: `username`, `password`
## HTTPS endpoint
Supabase is exposed via a ClusterIP service on port 443. The deployment assumes the Supabase container listens on HTTPS at port 443.
If your Supabase image expects a different port, update your custom manifests.
## Optional feature toggle
Supabase is an optional feature in the installer UI. The user intent is saved in `prole.cfg` under the section `[Optional Features]` with the key:
- `SUPABASE_ENABLED = true|false`
This is for configuration tracking; it does not automatically add or remove Kubernetes resources. Deployment is controlled by the `k8s/prole/kustomization.yaml` resources list.
## How to use (quick start)
1) Ensure CNPG is deployed and healthy.
2) Ensure the `prole-db-user` secret exists (the init scripts or OpenBao flow should already create it).
3) Apply the Prole kustomization (includes Supabase resources):
```bash
kubectl apply -k k8s/prole
```
4) Verify Supabase and Postgres services:
```bash
kubectl get deploy supabase
kubectl get svc supabase
kubectl get svc prole-db-rw
```
5) Check Supabase logs if needed:
```bash
kubectl logs -n supabase -l app=supabase
```
## Updating the Postgres target
If you need Supabase to connect to a different CNPG cluster name or namespace, update your configuration.
## Troubleshooting
- If Supabase cannot connect to Postgres, confirm:
- The `prole-db` cluster is healthy and a primary is elected.
- The `prole-db-rw` service resolves to the primary pod.
- The `prole-db-user` secret exists and contains valid credentials.
- If HTTPS does not respond:
- Confirm the Supabase image listens on port 443.
- Check the container port and service port in the manifests.
## Files referenced
- `prole-db-postgres-service.yaml` (optional legacy service; Supabase uses `prole-db-rw`)
- `k8s/prole/kustomization.yaml`
- `install.py` (optional feature toggle persistence)
- `./supabase/deploy.sh`