Quick Start¶
Deploy a Minimal Nextcloud Instance¶
Create a basic Nextcloud instance with a managed database:
apiVersion: k8s.bnerd.com/v1alpha1
kind: NextcloudInstance
metadata:
name: my-nextcloud
namespace: default
spec:
profile: production
ingress:
host: nextcloud.example.com
database:
managed: true
type: postgresql
admin:
username: admin
password: secure-password
Apply it:
Check the status:
kubectl get nci my-nextcloud -n default
# Detailed status
kubectl describe nci my-nextcloud -n default
Pool-Based Provisioning (Fast Tenant Onboarding)¶
For faster provisioning (~30s), use a pool-based approach.
1. Create a NextcloudPool¶
apiVersion: k8s.bnerd.com/v1alpha1
kind: NextcloudPool
metadata:
name: default-pool
spec:
replicas: 5
instanceNamespacePattern: "*"
template:
metadata:
labels:
pool: default
spec:
profile: production
database:
managed: true
type: postgresql
2. Create a Nextcloud (Tenant Resource)¶
apiVersion: k8s.bnerd.com/v1alpha1
kind: Nextcloud
metadata:
name: tenant-cloud
namespace: tenants
spec:
poolSelector:
matchLabels:
pool: default
ingress:
host: tenant.example.com
The operator assigns a pre-provisioned instance from the pool, making the Nextcloud available in seconds.
Status Phases¶
NextcloudInstance: Pending -> Creating -> Ready | Failed | Updating
Nextcloud (logical): Pending -> Assigning -> Configuring -> Ready | Failed
What's Next¶
- Configuration Profiles — Choose the right profile for your workload
- Secret Management — Secure credential handling
- API Reference — Full field reference for all CRDs