mirror of
https://github.com/dredx/prole.git
synced 2026-09-27 07:24:31 +00:00
- 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.
84 lines
2.9 KiB
Markdown
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`
|