Uncloud is configured through environment variables and a config.yaml file.
Environment Variables
Frontend
config.yaml
The main configuration file lives at the project root:
Base Domain
The base_domain setting controls how apps get their default URLs:
Example with base_domain: go4.site:
- App “my-api” →
my-api.go4.site
- App “dashboard” →
dashboard.go4.site
TLS Setup
For HTTPS on the default domain, you need a wildcard TLS certificate:
For custom domains, configure a cert-manager ClusterIssuer:
Storage Configuration
Block Storage
Set the block_class to match your cluster’s StorageClass:
Object Storage
Configure S3-compatible storage credentials:
Kubernetes Auto-Detection
Uncloud automatically detects the Kubernetes configuration:
KUBECONFIG environment variable (highest priority)
/etc/rancher/k3s/k3s.yaml (K3s default)
/var/snap/microk8s/current/credentials/client.config (MicroK8s)
~/.kube/config (standard kubectl config)
Database
The SQLite database is created automatically at the DB_PATH location. No configuration needed.
For production, store the database on persistent storage and include it in your backup strategy.
Sync Loop
The reconciliation loop between SQLite and Kubernetes runs every 15 seconds. This interval is not currently configurable but handles:
- Creating K8s resources for new SQLite records
- Pulling runtime status (IPs, phases, ready counts) back to SQLite
- Updating resource statuses across the system