Skip to content

Running multiple instances ​

Multiple OpenCrane instances can share one Kubernetes cluster when each instance keeps its namespaces, release identity, database, secrets and public host separate.

Instance boundary ​

text
cluster
├── instance acme
│   ├── trusted namespace
│   ├── personal runtime namespace
│   └── managed runtime namespace
└── instance globex
    ├── trusted namespace
    ├── personal runtime namespace
    └── managed runtime namespace

Each instance serves one ClusterTenant silo. An instance does not discover or manage the other instance's organisations or workloads.

Values that must differ ​

ResourceRequirement
Helm release and namespacesUnique per instance
Public host and TLS SecretUnique routing identity
PostgreSQL databases and SecretsNo shared product authority
Runtime profilesPoint only to that instance's runtime namespaces
ServiceAccounts and admission policiesRelease-scoped names
NetworkPolicy instance labelsAdmit only same-instance traffic

Cluster-scoped prerequisites ​

Ingress, cert-manager, external-dns and the PostgreSQL operator may be shared cluster controllers. Their ownership must be explicit, and installing another silo must not attempt to replace them.

WARNING

Namespace separation alone is insufficient. A shared database, signing key or broadly matching network rule can cross the instance boundary even when Pods live in different namespaces.

Validation ​

Render every instance profile and check for duplicate cluster-scoped names. Then run negative connectivity tests in both directions and verify that a runtime token or Job from one instance cannot bootstrap against the other.

→ Hosting and deployment · Networking and isolation

Released under the AGPL-3.0-or-later License.