Files
opencloud/devtools/deployments/multi-tenancy

Development/Test Deployment for a multi-tenacy setup

The docker compose files in this directory are derived from the opencloud-compose project and can be used to deploy a Development or Testing environment for a multi-tenancy setup of OpenCloud. It consists of the following services:

  • provisioning: The OpenCloud graph service deployed in a standalone mode. It is configured to provide the libregraph education API for managing tenants and users. The ldap-serverservice (see below) is used to store the tenants and users.
  • ldap-server: An OpenLDAP server that is used by the provisioning service to store tenants and users. Used by the OpenCloud services as the user directory (for looking up users and searching for sharees).
  • keycloak: The OpenID Connect Provider used for authenticating users. The pre-loaded realm is configured to add tenantid claim into the identity and access tokens. It's also currently consuming user from the ldap-server (this federation will likely go away in the future and is optional for future configurations).
  • opencloud: The OpenCloud configured so that is hides users from different tenants from each other.

To deploy the setup, run:

docker compose -f docker-compose.yml -f keycloak.yml -f ldap-server.yml -f traefik.yml up

Once deployed you can use the initialize_users.go to create a couple of example tenants and some users in each tenant:

  • Tenant Famous Coders with users dennis and grace
  • Tenant Scientists with users einstein and marie

The passwords for the users is set to demo in keycloak

> go run initialize_users.go
Created tenant: Famous Coders with id fc58e19a-3a2a-4afc-90ec-8f94986db340
Created user: Dennis Ritchie with id ee1e14e7-b00b-4eec-8b03-a6bf0e29c77c
Created user: Grace Hopper with id a29f3afd-e4a3-4552-91e8-cc99e26bffce
Created tenant: Scientists with id 18406c53-e2d6-4e83-98b6-a55880eef195
Created user: Albert Einstein with id 12023d37-d6ce-4f19-a318-b70866f265ba
Created user: Marie Curie with id 30c3c825-c37d-4e85-8195-0142e4884872
Setting password for user: grace
Setting password for user: marie
Setting password for user: dennis
Setting password for user: einstein