fix(dev): route v1 code queue inside dev namespace
This commit is contained in:
@@ -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) {
|
||||
|
||||
+41
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user