Skip to content

Installation

This guide assumes you have kubectl and helm installed and a cluster you can deploy to.

Terminal window
kubectl create namespace flow-like

Flow-Like requires S3-compatible storage. Create a secret with your credentials:

Terminal window
kubectl -n flow-like create secret generic flow-like-external-s3 \
--from-literal=S3_ACCESS_KEY_ID='YOUR_ACCESS_KEY' \
--from-literal=S3_SECRET_ACCESS_KEY='YOUR_SECRET_KEY'

The chart supports an “auto mode” for the database:

  • If you don’t provide an external database connection, it deploys internal Postgres and generates credentials.
  • If you do provide external credentials, it skips the internal database.

You control this with values under:

  • database.type: auto|internal|external
Terminal window
cd apps/backend/kubernetes
helm install flow-like ./helm -n flow-like \
--set storage.external.existingSecret=flow-like-external-s3 \
--set storage.external.endpoint='https://s3.example.com' \
--set storage.external.region='us-east-1' \
--set storage.external.metaBucket='flow-like-meta' \
--set storage.external.contentBucket='flow-like-content'

Create a secret that contains DATABASE_URL:

Terminal window
kubectl -n flow-like create secret generic flow-like-external-db \
--from-literal=DATABASE_URL='postgresql://USER:PASSWORD@HOST:5432/DBNAME'

Install the chart pointing to that secret:

Terminal window
cd apps/backend/kubernetes
helm install flow-like ./helm -n flow-like \
--set database.type=external \
--set database.external.existingSecret=flow-like-external-db \
--set storage.external.existingSecret=flow-like-external-s3 \
--set storage.external.endpoint='https://s3.example.com' \
--set storage.external.region='us-east-1' \
--set storage.external.metaBucket='flow-like-meta' \
--set storage.external.contentBucket='flow-like-content'

If your S3 provider needs path-style URLs (common for some self-hosted S3-compatible storage), set:

Terminal window
helm upgrade --install flow-like ./helm -n flow-like \
--set storage.external.usePathStyle=true
Terminal window
kubectl -n flow-like get pods
kubectl -n flow-like get svc

If the API is running, you should see a deployment like flow-like-flow-like-api and a service like flow-like-flow-like-api.

If you want access from outside the cluster:

  • enable ingress.enabled=true
  • set ingress.className and ingress.hosts

The exact ingress setup depends on which ingress controller you use.