Install SkelaDB
Start here: what your cluster needs, the commands, and every guide for running SkelaDB in production.
What you need
A Kubernetes cluster
Version 1.29 or later with kubectl admin access. EKS, GKE and AKS profiles are in preview.
cert-manager and an Issuer
Every connection uses TLS. The installer asks cert-manager for each certificate.
An object storage bucket
S3, Google Cloud Storage or Azure Blob, plus a workload identity per project that can reach only its own prefix.
A storage class
Any CSI class, for WAL nodes, caches and projects you put on dedicated disks.
A license key
Free for organizations under $1M in annual revenue. Request one before you install.
cosign
To check the release signature before you run anything from it.
Get your free license key
Tell us your organization name and confirm it has under $1M in annual revenue. We email a signed key, usually within one business day.
Download, configure, apply
Pick your provider, then run three steps. The installer checks your cluster and waits until everything is ready.
- Signed bundle, checked before use
- Images pinned by digest
- Run apply again to upgrade
# 1. Download the release and check its signature V=0.0.1; R=https://skeladb.com/releases/$V curl -fsSLO https://skeladb.com/releases/cosign.pub && sha256sum cosign.pub # compare with the fingerprint in the verify guide for f in skeladb-$V.tar.gz SHA256SUMS SHA256SUMS.cosign.bundle; do curl -fsSLO $R/$f; done cosign verify-blob --key cosign.pub --bundle SHA256SUMS.cosign.bundle SHA256SUMS sha256sum -c SHA256SUMS --ignore-missing && tar xzf skeladb-$V.tar.gz && cd skeladb-$V # 2. Configure: pinned image digests, your license key, then your cloud set -a; . ./release.env; set +a export SKELA_LICENSE_KEY=<your license key> export SKELA_INSTALL_PROVIDER=aws SKELA_STORAGE_CLASS=gp3 export SKELA_BACKUP_BUCKET=my-skeladb-data export SKELA_NETWORK_CLOUD_CIDRS=<object storage and identity endpoint CIDRs> export SKELA_TLS_ISSUER=skela-issuer SKELA_TLS_DNS_NAME=sql.example.com export SKELA_KUBE_CONTEXT=$(kubectl config current-context) # cert-manager and your Issuer must already exist; the installer creates the API tokens # 3. Render, review, apply ./install.sh render > install.yaml ./install.sh apply
# 1. Download the release and check its signature V=0.0.1; R=https://skeladb.com/releases/$V curl -fsSLO https://skeladb.com/releases/cosign.pub && sha256sum cosign.pub # compare with the fingerprint in the verify guide for f in skeladb-$V.tar.gz SHA256SUMS SHA256SUMS.cosign.bundle; do curl -fsSLO $R/$f; done cosign verify-blob --key cosign.pub --bundle SHA256SUMS.cosign.bundle SHA256SUMS sha256sum -c SHA256SUMS --ignore-missing && tar xzf skeladb-$V.tar.gz && cd skeladb-$V # 2. Configure: pinned image digests, your license key, then your cloud set -a; . ./release.env; set +a export SKELA_LICENSE_KEY=<your license key> export SKELA_INSTALL_PROVIDER=gcp SKELA_STORAGE_CLASS=standard-rwo export SKELA_BACKUP_BUCKET=my-skeladb-data export SKELA_NETWORK_CLOUD_CIDRS=<object storage and identity endpoint CIDRs> export SKELA_TLS_ISSUER=skela-issuer SKELA_TLS_DNS_NAME=sql.example.com export SKELA_KUBE_CONTEXT=$(kubectl config current-context) # cert-manager and your Issuer must already exist; the installer creates the API tokens # 3. Render, review, apply ./install.sh render > install.yaml ./install.sh apply
# 1. Download the release and check its signature V=0.0.1; R=https://skeladb.com/releases/$V curl -fsSLO https://skeladb.com/releases/cosign.pub && sha256sum cosign.pub # compare with the fingerprint in the verify guide for f in skeladb-$V.tar.gz SHA256SUMS SHA256SUMS.cosign.bundle; do curl -fsSLO $R/$f; done cosign verify-blob --key cosign.pub --bundle SHA256SUMS.cosign.bundle SHA256SUMS sha256sum -c SHA256SUMS --ignore-missing && tar xzf skeladb-$V.tar.gz && cd skeladb-$V # 2. Configure: pinned image digests, your license key, then your cloud set -a; . ./release.env; set +a export SKELA_LICENSE_KEY=<your license key> export SKELA_INSTALL_PROVIDER=azure SKELA_STORAGE_CLASS=managed-csi export SKELA_BACKUP_BUCKET=skeladb-data SKELA_BACKUP_AZURE_ACCOUNT=mystorageaccount export SKELA_NETWORK_CLOUD_CIDRS=<object storage and identity endpoint CIDRs> export SKELA_TLS_ISSUER=skela-issuer SKELA_TLS_DNS_NAME=sql.example.com export SKELA_KUBE_CONTEXT=$(kubectl config current-context) # cert-manager and your Issuer must already exist; the installer creates the API tokens # 3. Render, review, apply ./install.sh render > install.yaml ./install.sh apply
# 1. Download the release and check its signature V=0.0.1; R=https://skeladb.com/releases/$V curl -fsSLO https://skeladb.com/releases/cosign.pub && sha256sum cosign.pub # compare with the fingerprint in the verify guide for f in skeladb-$V.tar.gz SHA256SUMS SHA256SUMS.cosign.bundle; do curl -fsSLO $R/$f; done cosign verify-blob --key cosign.pub --bundle SHA256SUMS.cosign.bundle SHA256SUMS sha256sum -c SHA256SUMS --ignore-missing && tar xzf skeladb-$V.tar.gz && cd skeladb-$V # 2. Configure: pinned image digests, your license key, then your cloud set -a; . ./release.env; set +a export SKELA_LICENSE_KEY=<your license key> export SKELA_INSTALL_PROVIDER=kubernetes SKELA_STORAGE_CLASS=your-storage-class export SKELA_BACKUP_BUCKET=my-skeladb-data export SKELA_NETWORK_CLOUD_CIDRS=<object storage and identity endpoint CIDRs> export SKELA_TLS_ISSUER=skela-issuer SKELA_TLS_DNS_NAME=sql.example.com export SKELA_KUBE_CONTEXT=$(kubectl config current-context) # cert-manager and your Issuer must already exist; the installer creates the API tokens # 3. Render, review, apply ./install.sh render > install.yaml ./install.sh apply
Add the console
The web console is optional. Install it after the platform with its own settings.
- A WorkOS environment for sign-in
- A PostgreSQL 18 management database
- A hostname and TLS for the console
# After the platform: a WorkOS environment, a management database and regions.json kubectl create namespace skela-cloud # Settings for the API and worker, and for the console (see the Console guide) kubectl -n skela-cloud create secret generic cloud-config --from-env-file=cloud.env kubectl -n skela-cloud create secret generic console-config --from-env-file=console.env kubectl -n skela-cloud create secret generic cloud-regions --from-file=regions.json # Migrates the console database, then rolls out the API, worker and console cloud/render.sh apply
Guides
Everything you need after the first install, in the order you will need it.
Install
Download and verify the release, prepare your cluster and run the installer.
Verify a release
Check the signing key, the bundle checksums, image signatures and SBOMs.
License keys
Request the free key, install it and renew it.
Console
WorkOS sign-in, the management database, keys, mail and TLS for the optional console.
Your first project
Create a project and a branch, then fork and restore it.
Connect
Connection strings, TLS, pooling and wake on connect.
Backup and restore
Point-in-time restore, the management database and key escrow.
Disaster recovery
Recover a whole install into a new cluster.
Upgrade
Move to a new release, the migrate job and what cannot be rolled back.
Rotate keys and certificates
Tokens, license keys, encryption keys and certificate authorities.
Uninstall
Remove SkelaDB and decide what happens to your data.
Troubleshooting
Install errors, stuck branches, connections and license refusals.
Versions and support
PostgreSQL and Kubernetes versions, the support window and compatibility policy.
Known limitations
What 0.0.1 does not do yet.
Release notes 0.0.1
What is in the first release.
License agreement
The self-hosted end user license agreement, a draft under legal review.
After you install
Open the console
Create a project, pick a storage mode and connect with any client.
Connect your app
Use the connection string from the console. Pooling and wake-ups are handled for you.
Automate with the CLI
Create branches from CI, scripts or agents with the downloadable CLI.
Questions before you install?
Talk to the people who built it.