feat: tenant-scoped environment network names
Environment networks now include the tenant ID to prevent cross-tenant
collisions: cameleer-env-{tenantId}-{envSlug} instead of cameleer-env-
{envSlug}. Without this, two tenants with a "dev" environment would
share the same Docker network.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,9 @@ public class DeploymentExecutor {
|
|||||||
@Value("${cameleer.runtime.jar-storage-path:/data/jars}")
|
@Value("${cameleer.runtime.jar-storage-path:/data/jars}")
|
||||||
private String jarStoragePath;
|
private String jarStoragePath;
|
||||||
|
|
||||||
|
@Value("${cameleer.tenant.id:default}")
|
||||||
|
private String tenantId;
|
||||||
|
|
||||||
public DeploymentExecutor(RuntimeOrchestrator orchestrator,
|
public DeploymentExecutor(RuntimeOrchestrator orchestrator,
|
||||||
DeploymentService deploymentService,
|
DeploymentService deploymentService,
|
||||||
AppService appService,
|
AppService appService,
|
||||||
@@ -116,8 +119,8 @@ public class DeploymentExecutor {
|
|||||||
// Traefik network for routing (apps need to be reachable by Traefik)
|
// Traefik network for routing (apps need to be reachable by Traefik)
|
||||||
networkManager.ensureNetwork(DockerNetworkManager.TRAEFIK_NETWORK);
|
networkManager.ensureNetwork(DockerNetworkManager.TRAEFIK_NETWORK);
|
||||||
additionalNets.add(DockerNetworkManager.TRAEFIK_NETWORK);
|
additionalNets.add(DockerNetworkManager.TRAEFIK_NETWORK);
|
||||||
// Per-environment network for intra-environment service discovery
|
// Per-environment network scoped to tenant to prevent cross-tenant collisions
|
||||||
envNet = DockerNetworkManager.envNetworkName(env.slug());
|
envNet = DockerNetworkManager.envNetworkName(tenantId, env.slug());
|
||||||
networkManager.ensureNetwork(envNet);
|
networkManager.ensureNetwork(envNet);
|
||||||
additionalNets.add(envNet);
|
additionalNets.add(envNet);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,4 +59,9 @@ public class DockerNetworkManager {
|
|||||||
public static String envNetworkName(String envSlug) {
|
public static String envNetworkName(String envSlug) {
|
||||||
return ENV_NETWORK_PREFIX + envSlug;
|
return ENV_NETWORK_PREFIX + envSlug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Tenant-scoped environment network name to prevent cross-tenant collisions. */
|
||||||
|
public static String envNetworkName(String tenantId, String envSlug) {
|
||||||
|
return ENV_NETWORK_PREFIX + tenantId + "-" + envSlug;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user