fix(dev): route v1 code queue inside dev namespace

This commit is contained in:
Codex
2026-05-19 05:46:15 +00:00
parent fbe364f798
commit 0e827a348e
2 changed files with 88 additions and 1 deletions
@@ -410,6 +410,45 @@ function codeQueueK3sServiceIdForRequest(method: string, targetPath: string): st
return "code-queue-write";
}
function devCodeQueueDirectBaseUrl(k3sServiceId: string): string | null {
if (config().identity.environment !== "dev") return null;
const enabled = String(process.env.CODE_QUEUE_DEV_DIRECT_PROXY ?? "1").toLowerCase();
if (enabled === "0" || enabled === "false" || enabled === "no") return null;
const namespace = config().identity.namespace || process.env.UNIDESK_NAMESPACE || "unidesk-dev";
if (k3sServiceId === "code-queue-scheduler") {
return (process.env.CODE_QUEUE_DEV_SCHEDULER_URL || `http://code-queue-scheduler-dev.${namespace}.svc.cluster.local:4222`).replace(/\/+$/u, "");
}
if (k3sServiceId === "code-queue-read") {
return (process.env.CODE_QUEUE_DEV_READ_URL || `http://code-queue-read-dev.${namespace}.svc.cluster.local:4222`).replace(/\/+$/u, "");
}
if (k3sServiceId === "code-queue-write") {
return (process.env.CODE_QUEUE_DEV_WRITE_URL || `http://code-queue-write-dev.${namespace}.svc.cluster.local:4222`).replace(/\/+$/u, "");
}
return null;
}
function devCodeQueueDirectService(service: MicroserviceConfig, method: string, targetPath: string): { service: MicroserviceConfig; k3sServiceId: string } | null {
const k3sServiceId = codeQueueK3sServiceIdForRequest(method, targetPath);
const nodeBaseUrl = devCodeQueueDirectBaseUrl(k3sServiceId);
if (nodeBaseUrl === null) return null;
return {
k3sServiceId,
service: {
...service,
backend: {
...service.backend,
nodeBaseUrl,
proxyMode: "dev-k3s-direct",
},
deployment: {
...service.deployment,
mode: "unidesk-direct",
k3sServiceId,
},
},
};
}
function codeQueueMasterControlPath(method: string, targetPath: string): boolean {
const normalizedMethod = method.toUpperCase();
if (targetPath === "/" || targetPath === "/health" || targetPath === "/live" || targetPath === "/logs") return true;
@@ -1078,6 +1117,14 @@ async function fetchMicroserviceUpstreamResponse(
bodyText: string,
abortSignal?: AbortSignal,
): Promise<Response> {
if (service.id === "code-queue") {
const devDirect = devCodeQueueDirectService(service, method, targetPath);
if (devDirect !== null) {
const response = await directMicroserviceResponse(devDirect.service, method, targetPath, proxyOptions, requestHeaders, bodyText, abortSignal);
response.headers.set("x-unidesk-code-queue-target", devDirect.k3sServiceId);
return response;
}
}
if (service.id === "code-queue" && codeQueueMasterControlPath(method, targetPath)) {
const mgr = microserviceById("code-queue-mgr");
if (mgr !== null) {
@@ -93,7 +93,47 @@ data:
HEARTBEAT_TIMEOUT_MS: "30000"
TASK_PENDING_TIMEOUT_MS: "600000"
DATABASE_POOL_MAX: "2"
MICROSERVICES_JSON: "[]"
MICROSERVICES_JSON: |
[
{
"id": "code-queue",
"name": "Code Queue Dev",
"providerId": "D601-dev",
"description": "release/v1 dev Code Queue runs inside the unidesk-dev namespace; backend-core-dev proxies it directly to the scheduler/read/write Kubernetes services.",
"repository": {
"url": "https://github.com/pikasTech/unidesk",
"commitId": "6950832600047a3f0c5a847062904959cc79a3da",
"dockerfile": "src/components/microservices/code-queue/Dockerfile",
"composeFile": "src/components/microservices/k3sctl-adapter/k3s/dev/unidesk-dev-code-queue.k8s.yaml",
"composeService": "code-queue",
"containerName": "k3s:code-queue-dev"
},
"backend": {
"nodeBaseUrl": "http://code-queue-scheduler-dev.unidesk-dev.svc.cluster.local:4222",
"nodeBindHost": "code-queue-scheduler-dev.unidesk-dev.svc.cluster.local",
"nodePort": 4222,
"proxyMode": "dev-k3s-direct",
"frontendOnly": true,
"public": false,
"allowedMethods": ["GET", "HEAD", "POST", "DELETE", "PUT", "PATCH"],
"allowedPathPrefixes": ["/health", "/live", "/logs", "/api/"],
"healthPath": "/health",
"timeoutMs": 30000
},
"deployment": {
"mode": "unidesk-direct"
},
"development": {
"providerId": "D601-dev",
"sshPassthrough": true,
"worktreePath": "/home/ubuntu/unidesk-dev-code-queue-deploy"
},
"frontend": {
"route": "/apps/code-queue",
"integrated": true
}
}
]
SESSION_TTL_SECONDS: "28800"
CODE_QUEUE_MAIN_PROVIDER_ID: D601-dev
CODE_QUEUE_EXECUTION_PROVIDER_IDS: D601-dev