PMA ondersteunt multi-tenant deployments, waarbij meerdere geïsoleerde omgevingen naast elkaar kunnen draaien. Dit document beschrijft de architectuur en configuratie.
Multi-tenant in PMA betekent dat je meerdere volledige stacks naast elkaar kunt draaien, elk met eigen:
De ASD_TENANT environment variable bepaalt welke tenant actief is:
# Standaard tenant (leeg = default)
just start grafana
# Specifieke tenant
ASD_TENANT=staging just start grafana
# Of via --env flag
just start grafana --env=staging
Pattern: asd-{tenant}-{service}
| Tenant | Service | Container Name |
|---|---|---|
| (default) | grafana | asd-grafana |
| staging | grafana | asd-staging-grafana |
| dev | n8n | asd-dev-n8n |
Pattern: docker_{service}-{tenant}
| Tenant | Service | Volume Name |
|---|---|---|
| (default) | grafana | docker_grafana-data |
| staging | grafana | docker_grafana-staging |
| dev | postgres | docker_postgres-dev |
Draai een development stack naast productie:
# Productie (default)
just start grafana
just start n8n
# Development
ASD_TENANT=dev just start grafana
ASD_TENANT=dev just start n8n
Test een nieuwe feature in isolatie:
# Feature branch testing
ASD_TENANT=feature-x just start n8n
# Test workflows
ASD_TENANT=feature-x just n8n-import workflow.json
# Cleanup
ASD_TENANT=feature-x just stop n8n
Meerdere klanten op dezelfde server:
# Klant A
ASD_TENANT=client-a just start grafana
ASD_TENANT=client-a just start zammad
# Klant B
ASD_TENANT=client-b just start grafana
ASD_TENANT=client-b just start zammad
# In common.just
_tenant-container service # Returns: asd-{tenant}-{service}
_tenant-volume-prefix service # Returns: docker_{service}-{tenant}
# Voorbeeld uit grafana.just
grafana-start:
@container="$(just _tenant-container grafana)" && docker compose up -d $container
Elke tenant heeft volledig gescheiden data:
| Component | Isolatie Niveau |
|---|---|
| Containers | Volledig gescheiden |
| Volumes | Volledig gescheiden |
| Configs | Volledig gescheiden |
| Network | Gedeeld (asd-network) |
| Secrets | Per tenant in .env |
Let op: Alle tenants delen hetzelfde Docker network. Services kunnen elkaar zien via container names.