diff --git a/deploy/artifact-catalog.v03.json b/deploy/artifact-catalog.v03.json index e2a14f64..32a2bbec 100644 --- a/deploy/artifact-catalog.v03.json +++ b/deploy/artifact-catalog.v03.json @@ -10,7 +10,7 @@ "publish": { "ciPublished": true, "registryVerified": true, - "provenance": "node-ci-artifact:hwlab-v03-ci-poll-004235736f91-r20260612225359-collect", + "provenance": "node-ci-artifact:hwlab-v03-ci-poll-004235736f91-r20260612231613-collect", "note": "Digest fields were copied from a successful DEV artifact publish report for this source commit." }, "healthContract": { diff --git a/deploy/gitops/node/d601/runtime-v03/deepseek-proxy.yaml b/deploy/gitops/node/d601/runtime-v03/deepseek-proxy.yaml index cfed26c7..2ebb6572 100644 --- a/deploy/gitops/node/d601/runtime-v03/deepseek-proxy.yaml +++ b/deploy/gitops/node/d601/runtime-v03/deepseek-proxy.yaml @@ -1,327 +1,414 @@ -apiVersion: v1 -kind: List -items: - - apiVersion: v1 - kind: ConfigMap - metadata: - name: hwlab-deepseek-proxy-config - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-deepseek-proxy - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: hwlab-deepseek-proxy - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/monitoring: disabled - data: - render-config.sh: > - #!/bin/sh - - if [ -z "${DEEPSEEK_API_KEY:-}" ] && [ -z "${OPENCODE_API_KEY:-}" ]; - then - echo "at least one of DEEPSEEK_API_KEY or OPENCODE_API_KEY is required" >&2 - exit 1 - fi - - cat > /config/config.yml <&2\n exit 1\nfi\ncat > /config/config.yml < 0;\n if (!configured) return Promise.resolve({ configured: false, success: false, statusCode: 0, durationSeconds: 0 });\n\n let url;\n try {\n url = new URL(targetUrl);\n } catch {\n return Promise.resolve({ configured: true, success: false, statusCode: 0, durationSeconds: 0 });\n }\n\n const requestImpl = url.protocol === \"https:\" ? httpsRequest : url.protocol === \"http:\" ? httpRequest : null;\n if (!requestImpl) return Promise.resolve({ configured: true, success: false, statusCode: 0, durationSeconds: 0 });\n\n const started = Date.now();\n return new Promise((resolve) => {\n const finish = (result) => resolve({\n configured: true,\n success: false,\n statusCode: 0,\n durationSeconds: (Date.now() - started) / 1000,\n ...result\n });\n const request = requestImpl(url, { method: \"GET\", timeout: timeoutMs }, (response) => {\n const chunks = [];\n let bytes = 0;\n if (collectBody) {\n response.on(\"data\", (chunk) => {\n const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);\n bytes += buffer.length;\n if (bytes <= maxBodyBytes) chunks.push(buffer);\n });\n } else {\n response.resume();\n }\n response.on(\"end\", () => finish({\n success: Boolean(response.statusCode && response.statusCode >= 200 && response.statusCode < 300),\n statusCode: response.statusCode || 0,\n body: collectBody ? Buffer.concat(chunks).toString(\"utf8\") : undefined,\n bodyBytes: collectBody ? Math.min(bytes, maxBodyBytes) : 0,\n truncated: collectBody ? bytes > maxBodyBytes : false\n }));\n });\n request.on(\"timeout\", () => request.destroy());\n request.on(\"error\", () => finish({}));\n request.end();\n });\n}\n\nexport async function probeExtraMetrics({ targetUrl, timeoutMs = DEFAULT_TARGET_TIMEOUT_MS, maxBodyBytes = DEFAULT_EXTRA_METRICS_MAX_BYTES, probeImpl = requestTarget } = {}) {\n const configured = typeof targetUrl === \"string\" && targetUrl.trim().length > 0;\n if (!configured || typeof probeImpl !== \"function\") {\n return { configured: false, success: false, statusCode: 0, durationSeconds: 0, text: \"\" };\n }\n try {\n const result = await probeImpl({ targetUrl, timeoutMs, collectBody: true, maxBodyBytes });\n return {\n configured: true,\n success: Boolean(result.success),\n statusCode: result.statusCode || 0,\n durationSeconds: result.durationSeconds || 0,\n text: result.success ? sanitizeExtraMetricsText(result.body || \"\") : \"\"\n };\n } catch {\n return { configured: true, success: false, statusCode: 0, durationSeconds: 0, text: \"\" };\n }\n}\n\nexport function sanitizeExtraMetricsText(text) {\n const lines = String(text ?? \"\").split(/\\r?\\n/gu);\n return lines.filter((line) => {\n if (!line) return true;\n if (/^#\\s+(?:HELP|TYPE)\\s+hwlab_[A-Za-z_:][A-Za-z0-9_:]*\\b/u.test(line)) return true;\n return /^hwlab_[A-Za-z_:][A-Za-z0-9_:]*(?:\\{[^\\n{}]*\\})?\\s+[-+0-9.eE]+$/u.test(line);\n }).join(\"\\n\");\n}\n\nexport async function probeTarget({ targetUrl, timeoutMs = DEFAULT_TARGET_TIMEOUT_MS, probeImpl = requestTarget } = {}) {\n const configured = typeof targetUrl === \"string\" && targetUrl.trim().length > 0;\n if (!configured || typeof probeImpl !== \"function\") {\n return { configured: false, success: false, statusCode: 0, durationSeconds: 0 };\n }\n try {\n return await probeImpl({ targetUrl, timeoutMs });\n } catch {\n const started = Date.now();\n return { configured: true, success: false, statusCode: 0, durationSeconds: (Date.now() - started) / 1000 };\n }\n}\n\nexport function buildMetricsText({ env = process.env, probe = null, extraMetrics = null, now = Date.now() } = {}) {\n const labels = metricLabels(env);\n const uptimeSeconds = Math.max(0, (now - startedAtMs) / 1000);\n const healthProbe = probe ?? { configured: false, success: false, statusCode: 0, durationSeconds: 0 };\n const extraProbe = extraMetrics ?? { configured: false, success: false, statusCode: 0, durationSeconds: 0, text: \"\" };\n const lines = [\n \"# HELP hwlab_service_up HWLAB metrics sidecar availability.\",\n \"# TYPE hwlab_service_up gauge\",\n `hwlab_service_up{${labels}} 1`,\n \"# HELP hwlab_service_info Static HWLAB service metrics identity without high-cardinality request identifiers.\",\n \"# TYPE hwlab_service_info gauge\",\n `hwlab_service_info{${labels}} 1`,\n \"# HELP hwlab_service_process_uptime_seconds Metrics sidecar process uptime in seconds.\",\n \"# TYPE hwlab_service_process_uptime_seconds gauge\",\n `hwlab_service_process_uptime_seconds{${labels}} ${uptimeSeconds.toFixed(3)}`,\n \"# HELP hwlab_service_health_probe_configured Whether the sidecar has a cluster-local health probe target.\",\n \"# TYPE hwlab_service_health_probe_configured gauge\",\n `hwlab_service_health_probe_configured{${labels}} ${healthProbe.configured ? 1 : 0}`,\n \"# HELP hwlab_service_health_probe_success Whether the most recent cluster-local health probe succeeded.\",\n \"# TYPE hwlab_service_health_probe_success gauge\",\n `hwlab_service_health_probe_success{${labels}} ${healthProbe.success ? 1 : 0}`,\n \"# HELP hwlab_service_health_probe_status_code Most recent cluster-local health probe HTTP status code, or 0 when unavailable.\",\n \"# TYPE hwlab_service_health_probe_status_code gauge\",\n `hwlab_service_health_probe_status_code{${labels}} ${Number.isInteger(healthProbe.statusCode) ? healthProbe.statusCode : 0}`,\n \"# HELP hwlab_service_health_probe_duration_seconds Most recent cluster-local health probe duration in seconds.\",\n \"# TYPE hwlab_service_health_probe_duration_seconds gauge\",\n `hwlab_service_health_probe_duration_seconds{${labels}} ${Number(healthProbe.durationSeconds || 0).toFixed(3)}`,\n \"# HELP hwlab_service_extra_metrics_configured Whether the sidecar has an additional cluster-local metrics target.\",\n \"# TYPE hwlab_service_extra_metrics_configured gauge\",\n `hwlab_service_extra_metrics_configured{${labels}} ${extraProbe.configured ? 1 : 0}`,\n \"# HELP hwlab_service_extra_metrics_success Whether the most recent additional metrics fetch succeeded.\",\n \"# TYPE hwlab_service_extra_metrics_success gauge\",\n `hwlab_service_extra_metrics_success{${labels}} ${extraProbe.success ? 1 : 0}`,\n \"# HELP hwlab_service_extra_metrics_status_code Most recent additional metrics HTTP status code, or 0 when unavailable.\",\n \"# TYPE hwlab_service_extra_metrics_status_code gauge\",\n `hwlab_service_extra_metrics_status_code{${labels}} ${Number.isInteger(extraProbe.statusCode) ? extraProbe.statusCode : 0}`,\n \"# HELP hwlab_service_extra_metrics_duration_seconds Most recent additional metrics fetch duration in seconds.\",\n \"# TYPE hwlab_service_extra_metrics_duration_seconds gauge\",\n `hwlab_service_extra_metrics_duration_seconds{${labels}} ${Number(extraProbe.durationSeconds || 0).toFixed(3)}`,\n \"\"\n ];\n if (extraProbe.text) {\n lines.push(extraProbe.text.trimEnd(), \"\");\n }\n return lines.join(\"\\n\");\n}\n\nfunction sendJson(response, statusCode, body) {\n const payload = JSON.stringify(body) + \"\\n\";\n response.writeHead(statusCode, {\n \"content-type\": \"application/json; charset=utf-8\",\n \"content-length\": Buffer.byteLength(payload)\n });\n response.end(payload);\n}\n\nexport function createMetricsSidecarServer({ env = process.env, probeImpl = requestTarget } = {}) {\n return createServer(async (request, response) => {\n const url = new URL(request.url || \"/\", \"http://hwlab-metrics.local\");\n if (request.method === \"GET\" && (url.pathname === \"/health\" || url.pathname === \"/health/live\")) {\n sendJson(response, 200, {\n serviceId: sanitizeLabelValue(env.HWLAB_METRICS_SERVICE_ID || env.HWLAB_SERVICE_ID),\n status: \"ok\",\n metricsPath: \"/metrics\"\n });\n return;\n }\n if (request.method === \"GET\" && url.pathname === \"/metrics\") {\n const timeoutMs = Number.parseInt(env.HWLAB_METRICS_TARGET_TIMEOUT_MS || \"\", 10) || DEFAULT_TARGET_TIMEOUT_MS;\n const probe = await probeTarget({ targetUrl: env.HWLAB_METRICS_TARGET_URL, timeoutMs, probeImpl });\n const extraTimeoutMs = Number.parseInt(env.HWLAB_METRICS_EXTRA_TIMEOUT_MS || \"\", 10) || DEFAULT_TARGET_TIMEOUT_MS;\n const extraMetrics = await probeExtraMetrics({ targetUrl: env.HWLAB_METRICS_EXTRA_URL, timeoutMs: extraTimeoutMs, probeImpl });\n const payload = buildMetricsText({ env, probe, extraMetrics });\n response.writeHead(200, {\n \"content-type\": \"text/plain; version=0.0.4; charset=utf-8\",\n \"content-length\": Buffer.byteLength(payload)\n });\n response.end(payload);\n return;\n }\n sendJson(response, 404, { error: \"not_found\", path: url.pathname });\n });\n}\n\nexport function startMetricsSidecar({ env = process.env } = {}) {\n const port = Number.parseInt(env.HWLAB_METRICS_PORT || env.PORT || \"\", 10) || DEFAULT_PORT;\n const server = createMetricsSidecarServer({ env });\n server.listen(port, \"0.0.0.0\", () => {\n process.stdout.write(JSON.stringify({ serviceId: env.HWLAB_METRICS_SERVICE_ID || \"hwlab-unknown\", status: \"metrics-listening\", port }) + \"\\n\");\n });\n return server;\n}\n\nexport function isMainModule({ moduleUrl = import.meta.url, argvPath = process.argv[1], realpath = realpathSync } = {}) {\n if (!argvPath) return false;\n if (moduleUrl === pathToFileURL(argvPath).href) return true;\n try {\n return moduleUrl === pathToFileURL(realpath(argvPath)).href;\n } catch {\n return false;\n }\n}\n\nif (isMainModule()) {\n startMetricsSidecar();\n}\n" + } + } + ] +} diff --git a/deploy/gitops/node/d601/runtime-v03/services.yaml b/deploy/gitops/node/d601/runtime-v03/services.yaml index c3281738..6da4d399 100644 --- a/deploy/gitops/node/d601/runtime-v03/services.yaml +++ b/deploy/gitops/node/d601/runtime-v03/services.yaml @@ -1,130 +1,191 @@ -apiVersion: v1 -kind: List -items: - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-cloud-api - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-cloud-api - hwlab.pikastech.local/service-id: hwlab-cloud-api - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: hwlab-cloud-api - ports: - - name: http - port: 6667 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-cloud-web - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-cloud-web - hwlab.pikastech.local/service-id: hwlab-cloud-web - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: hwlab-cloud-web - ports: - - name: http - port: 8080 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-gateway - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-gateway - hwlab.pikastech.local/service-id: hwlab-gateway - hwlab.pikastech.local/activation: manual - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: hwlab-gateway - ports: - - name: http - port: 7001 - targetPort: http - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-agent-skills - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-agent-skills - hwlab.pikastech.local/service-id: hwlab-agent-skills - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: hwlab-agent-skills - ports: - - name: http - port: 7430 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-edge-proxy - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-edge-proxy - hwlab.pikastech.local/service-id: hwlab-edge-proxy - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: hwlab-edge-proxy - ports: - - name: http - port: 6667 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-cloud-api", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-api", + "hwlab.pikastech.local/service-id": "hwlab-cloud-api", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "hwlab-cloud-api" + }, + "ports": [ + { + "name": "http", + "port": 6667, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-cloud-web", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-web", + "hwlab.pikastech.local/service-id": "hwlab-cloud-web", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "hwlab-cloud-web" + }, + "ports": [ + { + "name": "http", + "port": 8080, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-gateway", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-gateway", + "hwlab.pikastech.local/service-id": "hwlab-gateway", + "hwlab.pikastech.local/activation": "manual", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "hwlab-gateway" + }, + "ports": [ + { + "name": "http", + "port": 7001, + "targetPort": "http" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-agent-skills", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-agent-skills", + "hwlab.pikastech.local/service-id": "hwlab-agent-skills", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "hwlab-agent-skills" + }, + "ports": [ + { + "name": "http", + "port": 7430, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-edge-proxy", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-edge-proxy", + "hwlab.pikastech.local/service-id": "hwlab-edge-proxy", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "hwlab-edge-proxy" + }, + "ports": [ + { + "name": "http", + "port": 6667, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + } + ] +} diff --git a/deploy/gitops/node/d601/runtime-v03/workloads.yaml b/deploy/gitops/node/d601/runtime-v03/workloads.yaml index 2059be26..12592943 100644 --- a/deploy/gitops/node/d601/runtime-v03/workloads.yaml +++ b/deploy/gitops/node/d601/runtime-v03/workloads.yaml @@ -1,904 +1,1786 @@ -apiVersion: v1 -kind: List -items: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - labels: - app.kubernetes.io/name: hwlab-user-skills - hwlab.pikastech.local/service-id: hwlab-user-skills - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - name: hwlab-user-skills - namespace: hwlab-v03 - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-cloud-api - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-cloud-api - hwlab.pikastech.local/service-id: hwlab-cloud-api - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - app.kubernetes.io/name: hwlab-cloud-api - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-cloud-api - hwlab.pikastech.local/service-id: hwlab-cloud-api - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - annotations: - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-cloud-api.sh - hwlab.pikastech.local/environment-digest: sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - hwlab.pikastech.local/environment-input-hash: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - hwlab.pikastech.local/code-input-hash: e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e - spec: - initContainers: [] - containers: - - name: hwlab-cloud-api - image: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - ports: - - name: http - containerPort: 6667 - env: - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_PUBLIC_ENDPOINT - value: http://74.48.78.17:20667 - - name: HWLAB_CLOUD_API_PORT - value: "6667" - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN - value: unidesk-backend,provider-gateway,microservice-proxy - - name: HWLAB_CLOUD_DB_URL - valueFrom: - secretKeyRef: - name: hwlab-cloud-api-v03-db - key: database-url - optional: true - - name: HWLAB_CLOUD_DB_SSL_MODE - value: require - - name: HWLAB_CLOUD_DB_CONTRACT - value: v03-redacted-presence-only - - name: HWLAB_CLOUD_RUNTIME_ADAPTER - value: postgres - - name: HWLAB_CLOUD_RUNTIME_DURABLE - value: "true" - - name: HWLAB_M3_IO_CONTROL_ENABLED - value: "false" - - name: HWLAB_CODE_AGENT_TIMEOUT_MS - value: "1200000" - - name: NO_PROXY - value: hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com - - name: no_proxy - value: hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com - - name: HWLAB_CODE_AGENT_SKILLS_DIRS - value: /app/skills:/data/user-skills - - name: HWLAB_PREINSTALLED_SKILLS_DIR - value: /app/skills - - name: HWLAB_USER_SKILLS_DIR - value: /data/user-skills - - name: HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE - value: deepseek - - name: HWLAB_CODE_AGENT_DEEPSEEK_MODEL - value: deepseek-chat - - name: HWLAB_CODE_AGENT_DEEPSEEK_BASE_URL - value: http://hwlab-deepseek-proxy.hwlab-v03.svc.cluster.local:4000/v1/responses - - name: HWLAB_CODE_AGENT_CODEX_API_MODEL - value: gpt-5.5 - - name: HWLAB_CODE_AGENT_CODEX_API_BASE_URL - value: http://127.0.0.1:49280/responses - - name: HWLAB_CODE_AGENT_CODEX_API_UPSTREAM_BASE_URL - value: https://hyueapi.com - - name: HWLAB_CODE_AGENT_CODEX_API_FORWARDER_PORT - value: "49280" - - name: HWLAB_ACCESS_CONTROL_REQUIRED - value: "1" - - name: HWLAB_BOOTSTRAP_ADMIN_ID - value: usr_v03_admin - - name: HWLAB_BOOTSTRAP_ADMIN_USERNAME - value: admin - - name: HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME - value: HWLAB v0.3 Admin - - name: HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-bootstrap-admin - key: password-hash - optional: true - - name: HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID - value: key_master_server_admin - - name: HWLAB_BOOTSTRAP_ADMIN_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-master-server-admin-api-key - key: api-key - optional: true - - name: HWLAB_KEYCLOAK_ISSUER - value: https://auth.74-48-78-17.nip.io/realms/hwlab - - name: HWLAB_KEYCLOAK_CLIENT_ID - value: hwlab-cloud-web - - name: HWLAB_KEYCLOAK_CLIENT_SECRET - valueFrom: - secretKeyRef: - name: hwlab-cloud-web-client - key: client-secret - optional: true - - name: HWLAB_CODE_AGENT_ADAPTER - value: agentrun-v01 - - name: AGENTRUN_MGR_URL - value: http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080 - - name: HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE - value: agentrun-v01 - - name: HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE - value: agentrun-v01 - - name: HWLAB_CODE_AGENT_AGENTRUN_REPO_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-cloud-api.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e - - name: HWLAB_IMAGE_DIGEST - value: sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID - value: D601 - - name: HWLAB_OPENFGA_MODE - value: enforce - - name: HWLAB_OPENFGA_API_URL - value: http://hwlab-openfga.hwlab-v03.svc.cluster.local:8080 - - name: HWLAB_OPENFGA_AUTHN_TOKEN - valueFrom: - secretKeyRef: - name: hwlab-v03-openfga - key: authn-preshared-key - optional: true - - name: UNIDESK_MAIN_SERVER_IP - value: http://74.48.78.17:18081 - readinessProbe: - httpGet: - path: /health/live - port: http - livenessProbe: - httpGet: - path: /health/live - port: http - volumeMounts: - - name: hwlab-user-skills - mountPath: /data/user-skills - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 2 - failureThreshold: 30 - successThreshold: 1 - - name: hwlab-codex-api-forwarder - image: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - ports: - - name: codex-api - containerPort: 49280 - env: - - name: HWLAB_CODE_AGENT_CODEX_API_FORWARDER_HOST - value: 127.0.0.1 - - name: HWLAB_CODE_AGENT_CODEX_API_FORWARDER_PORT - value: "49280" - - name: HWLAB_CODE_AGENT_CODEX_API_UPSTREAM_BASE_URL - value: https://hyueapi.com - - name: NO_PROXY - value: hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com - - name: no_proxy - value: hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com - - name: HWLAB_M3_IO_CONTROL_ENABLED - value: "false" - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_PUBLIC_ENDPOINT - value: http://74.48.78.17:20667 - - name: HWLAB_CLOUD_API_PORT - value: "6667" - - name: HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN - value: unidesk-backend,provider-gateway,microservice-proxy - - name: HWLAB_CLOUD_DB_URL - valueFrom: - secretKeyRef: - name: hwlab-cloud-api-v03-db - key: database-url - optional: true - - name: HWLAB_CLOUD_DB_SSL_MODE - value: require - - name: HWLAB_CLOUD_DB_CONTRACT - value: v03-redacted-presence-only - - name: HWLAB_CLOUD_RUNTIME_ADAPTER - value: postgres - - name: HWLAB_CLOUD_RUNTIME_DURABLE - value: "true" - - name: HWLAB_CODE_AGENT_TIMEOUT_MS - value: "1200000" - - name: HWLAB_CODE_AGENT_SKILLS_DIRS - value: /app/skills:/data/user-skills - - name: HWLAB_PREINSTALLED_SKILLS_DIR - value: /app/skills - - name: HWLAB_USER_SKILLS_DIR - value: /data/user-skills - - name: HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE - value: deepseek - - name: HWLAB_CODE_AGENT_DEEPSEEK_MODEL - value: deepseek-chat - - name: HWLAB_CODE_AGENT_DEEPSEEK_BASE_URL - value: http://hwlab-deepseek-proxy.hwlab-v03.svc.cluster.local:4000/v1/responses - - name: HWLAB_CODE_AGENT_CODEX_API_MODEL - value: gpt-5.5 - - name: HWLAB_CODE_AGENT_CODEX_API_BASE_URL - value: http://127.0.0.1:49280/responses - - name: HWLAB_ACCESS_CONTROL_REQUIRED - value: "1" - - name: HWLAB_BOOTSTRAP_ADMIN_ID - value: usr_v03_admin - - name: HWLAB_BOOTSTRAP_ADMIN_USERNAME - value: admin - - name: HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME - value: HWLAB v0.3 Admin - - name: HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-bootstrap-admin - key: password-hash - optional: true - - name: HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID - value: key_master_server_admin - - name: HWLAB_BOOTSTRAP_ADMIN_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-master-server-admin-api-key - key: api-key - optional: true - - name: HWLAB_KEYCLOAK_ISSUER - value: https://auth.74-48-78-17.nip.io/realms/hwlab - - name: HWLAB_KEYCLOAK_CLIENT_ID - value: hwlab-cloud-web - - name: HWLAB_KEYCLOAK_CLIENT_SECRET - valueFrom: - secretKeyRef: - name: hwlab-cloud-web-client - key: client-secret - optional: true - - name: HWLAB_CODE_AGENT_ADAPTER - value: agentrun-v01 - - name: AGENTRUN_MGR_URL - value: http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080 - - name: HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE - value: agentrun-v01 - - name: HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE - value: agentrun-v01 - - name: HWLAB_CODE_AGENT_AGENTRUN_REPO_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-codex-api-responses-forwarder.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e - - name: HWLAB_IMAGE_DIGEST - value: sha256:4291c2884e03a7895e2be1f6a5e5b929f3e09fe91da243f5c463ef692377d33d - - name: HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID - value: D601 - - name: HWLAB_OPENFGA_MODE - value: enforce - - name: HWLAB_OPENFGA_API_URL - value: http://hwlab-openfga.hwlab-v03.svc.cluster.local:8080 - - name: HWLAB_OPENFGA_AUTHN_TOKEN - valueFrom: - secretKeyRef: - name: hwlab-v03-openfga - key: authn-preshared-key - optional: true - - name: UNIDESK_MAIN_SERVER_IP - value: http://74.48.78.17:18081 - readinessProbe: - exec: - command: - - node - - -e - - "fetch('http://127.0.0.1:49280/health/readiness').then((r\ - esponse) => process.exit(response.ok ? 0 : 1)).catch(() => - process.exit(1))" - timeoutSeconds: 2 - livenessProbe: - exec: - command: - - node - - -e - - "fetch('http://127.0.0.1:49280/health/live').then((respon\ - se) => process.exit(response.ok ? 0 : 1)).catch(() => - process.exit(1))" - timeoutSeconds: 2 - volumeMounts: [] - imagePullPolicy: IfNotPresent - startupProbe: - exec: - command: - - node - - -e - - "fetch('http://127.0.0.1:49280/health/readiness').then((r\ - esponse) => process.exit(response.ok ? 0 : 1)).catch(() => - process.exit(1))" - timeoutSeconds: 2 - periodSeconds: 10 - failureThreshold: 30 - successThreshold: 1 - volumes: - - name: hwlab-user-skills - persistentVolumeClaim: - claimName: hwlab-user-skills - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-cloud-web - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-cloud-web - hwlab.pikastech.local/service-id: hwlab-cloud-web - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-cloud-web - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-cloud-web - hwlab.pikastech.local/service-id: hwlab-cloud-web - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - annotations: - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-cloud-web.sh - hwlab.pikastech.local/environment-digest: sha256:a53c710c92c5253c1feca456294058c6a1e45ff6b6e0440ebc0794ad24e4337c - hwlab.pikastech.local/environment-input-hash: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - hwlab.pikastech.local/code-input-hash: fc88b16995fd65a887e8840762cfa656058fc4f5a8f099ec7762354b70918985 - spec: - containers: - - name: hwlab-cloud-web - image: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:a53c710c92c5253c1feca456294058c6a1e45ff6b6e0440ebc0794ad24e4337c - ports: - - name: http - containerPort: 8080 - env: - - name: HWLAB_API_BASE_URL - value: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 - - name: HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS - value: "1260000" - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:a53c710c92c5253c1feca456294058c6a1e45ff6b6e0440ebc0794ad24e4337c - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-cloud-web.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:a53c710c92c5253c1feca456294058c6a1e45ff6b6e0440ebc0794ad24e4337c - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: fc88b16995fd65a887e8840762cfa656058fc4f5a8f099ec7762354b70918985 - - name: HWLAB_IMAGE_DIGEST - value: sha256:a53c710c92c5253c1feca456294058c6a1e45ff6b6e0440ebc0794ad24e4337c - - name: HWLAB_PUBLIC_ENDPOINT - value: http://74.48.78.17:20666 - readinessProbe: - httpGet: - path: /health/live - port: http - livenessProbe: - httpGet: - path: /health/live - port: http - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 2 - failureThreshold: 30 - successThreshold: 1 - volumes: [] - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-gateway - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-gateway - hwlab.pikastech.local/service-id: hwlab-gateway - hwlab.pikastech.local/activation: manual - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - replicas: 0 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-gateway - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-gateway - hwlab.pikastech.local/service-id: hwlab-gateway - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - annotations: - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-gateway.sh - hwlab.pikastech.local/environment-digest: sha256:30aabe46d235788ebd7c59258f8b47217a6e79a9b1360a765db10d7f85fef1f3 - hwlab.pikastech.local/environment-input-hash: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - hwlab.pikastech.local/code-input-hash: 9693556c71091e3e85d61efc6ef7d62e1064fba145ec83b3b9c196477f0b2870 - spec: - containers: - - name: hwlab-gateway - image: 127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:30aabe46d235788ebd7c59258f8b47217a6e79a9b1360a765db10d7f85fef1f3 - ports: - - name: http - containerPort: 7001 - env: - - name: HWLAB_GATEWAY_MODE - value: hardware-boundary - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:30aabe46d235788ebd7c59258f8b47217a6e79a9b1360a765db10d7f85fef1f3 - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-gateway.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-gateway-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:30aabe46d235788ebd7c59258f8b47217a6e79a9b1360a765db10d7f85fef1f3 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: 9693556c71091e3e85d61efc6ef7d62e1064fba145ec83b3b9c196477f0b2870 - - name: HWLAB_IMAGE_DIGEST - value: sha256:30aabe46d235788ebd7c59258f8b47217a6e79a9b1360a765db10d7f85fef1f3 - readinessProbe: - httpGet: - path: /health/live - port: http - livenessProbe: - httpGet: - path: /health/live - port: http - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 2 - failureThreshold: 30 - successThreshold: 1 - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-edge-proxy - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-edge-proxy - hwlab.pikastech.local/service-id: hwlab-edge-proxy - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-edge-proxy - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-edge-proxy - hwlab.pikastech.local/service-id: hwlab-edge-proxy - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - annotations: - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-edge-proxy.sh - hwlab.pikastech.local/environment-digest: sha256:0679fba942cb6b4580fb5dc1d24f6e37942a333c98050d262a41dffa4f82fe6a - hwlab.pikastech.local/environment-input-hash: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - hwlab.pikastech.local/code-input-hash: feaa7c30c37eb42248165bd2f574362dc91908d531d79f4211733b32929b1fa6 - spec: - containers: - - name: hwlab-edge-proxy - image: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:0679fba942cb6b4580fb5dc1d24f6e37942a333c98050d262a41dffa4f82fe6a - ports: - - name: http - containerPort: 6667 - env: - - name: HWLAB_EDGE_LISTEN - value: 0.0.0.0:6667 - - name: HWLAB_EDGE_UPSTREAM - value: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667 - - name: HWLAB_EDGE_PROXY_TIMEOUT_MS - value: "1260000" - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:0679fba942cb6b4580fb5dc1d24f6e37942a333c98050d262a41dffa4f82fe6a - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-edge-proxy.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:0679fba942cb6b4580fb5dc1d24f6e37942a333c98050d262a41dffa4f82fe6a - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: feaa7c30c37eb42248165bd2f574362dc91908d531d79f4211733b32929b1fa6 - - name: HWLAB_IMAGE_DIGEST - value: sha256:0679fba942cb6b4580fb5dc1d24f6e37942a333c98050d262a41dffa4f82fe6a - - name: HWLAB_PUBLIC_ENDPOINT - value: http://74.48.78.17:20667 - readinessProbe: - httpGet: - path: /health - port: http - livenessProbe: - httpGet: - path: /health - port: http - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 2 - failureThreshold: 30 - successThreshold: 1 - volumes: [] - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-agent-skills - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-agent-skills - hwlab.pikastech.local/service-id: hwlab-agent-skills - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/source-commit: 004235736f9168145885f1be57bd3c46fcb6ce6a - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-agent-skills - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-agent-skills - hwlab.pikastech.local/service-id: hwlab-agent-skills - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - annotations: - hwlab.pikastech.local/source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/artifact-source-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/boot-commit: e1566e22c882b98de00041fafccffa2ffdc02ee6 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-agent-skills.sh - hwlab.pikastech.local/environment-digest: sha256:f5e71b0e02756f25ea1e82c36dc34aa79caeb17e25d222e94f1be44106b19664 - hwlab.pikastech.local/environment-input-hash: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - hwlab.pikastech.local/code-input-hash: 369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a - spec: - containers: - - name: hwlab-agent-skills - image: 127.0.0.1:5000/hwlab/hwlab-agent-skills-env@sha256:f5e71b0e02756f25ea1e82c36dc34aa79caeb17e25d222e94f1be44106b19664 - ports: - - name: http - containerPort: 7430 - env: - - name: HWLAB_SKILLS_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-agent-skills-env@sha256:f5e71b0e02756f25ea1e82c36dc34aa79caeb17e25d222e94f1be44106b19664 - - name: HWLAB_IMAGE_TAG - value: env-b0c5874f30a9 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_RUNTIME_MODE - value: env-reuse-git-mirror-checkout - - name: HWLAB_BOOT_REPO - value: git@github.com:pikasTech/HWLAB.git - - name: HWLAB_BOOT_COMMIT - value: e1566e22c882b98de00041fafccffa2ffdc02ee6 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-agent-skills.sh - - name: HWLAB_BOOT_READ_URL - value: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-b0c5874f30a9 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:f5e71b0e02756f25ea1e82c36dc34aa79caeb17e25d222e94f1be44106b19664 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: b0c5874f30a91469c823685cbb8dbb5b9875b4430cf914d2fd741f52f8531050 - - name: HWLAB_CODE_INPUT_HASH - value: 369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a - - name: HWLAB_IMAGE_DIGEST - value: sha256:f5e71b0e02756f25ea1e82c36dc34aa79caeb17e25d222e94f1be44106b19664 - readinessProbe: - httpGet: - path: /health/live - port: http - livenessProbe: - httpGet: - path: /health/live - port: http - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 2 - failureThreshold: 30 - successThreshold: 1 - volumes: [] +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-user-skills", + "hwlab.pikastech.local/service-id": "hwlab-user-skills", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false" + }, + "name": "hwlab-user-skills", + "namespace": "hwlab-v03", + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-cloud-api", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-api", + "hwlab.pikastech.local/service-id": "hwlab-cloud-api", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-cloud-api", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-api", + "hwlab.pikastech.local/service-id": "hwlab-cloud-api", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-cloud-api.sh", + "hwlab.pikastech.local/environment-digest": "sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb", + "hwlab.pikastech.local/environment-input-hash": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a", + "hwlab.pikastech.local/code-input-hash": "e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e" + } + }, + "spec": { + "initContainers": [], + "containers": [ + { + "name": "hwlab-cloud-api", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb", + "ports": [ + { + "name": "http", + "containerPort": 6667 + } + ], + "env": [ + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://v03.hwpod.com" + }, + { + "name": "HWLAB_CLOUD_API_PORT", + "value": "6667" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN", + "value": "unidesk-backend,provider-gateway,microservice-proxy" + }, + { + "name": "HWLAB_CLOUD_DB_URL", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-api-v03-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "HWLAB_CLOUD_DB_SSL_MODE", + "value": "disable" + }, + { + "name": "HWLAB_CLOUD_DB_CONTRACT", + "value": "v03-redacted-presence-only" + }, + { + "name": "HWLAB_CLOUD_RUNTIME_ADAPTER", + "value": "postgres" + }, + { + "name": "HWLAB_CLOUD_RUNTIME_DURABLE", + "value": "true" + }, + { + "name": "HWLAB_M3_IO_CONTROL_ENABLED", + "value": "false" + }, + { + "name": "HWLAB_CODE_AGENT_TIMEOUT_MS", + "value": "1200000" + }, + { + "name": "NO_PROXY", + "value": "hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com" + }, + { + "name": "no_proxy", + "value": "hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com" + }, + { + "name": "HWLAB_CODE_AGENT_SKILLS_DIRS", + "value": "/app/skills:/data/user-skills" + }, + { + "name": "HWLAB_PREINSTALLED_SKILLS_DIR", + "value": "/app/skills" + }, + { + "name": "HWLAB_USER_SKILLS_DIR", + "value": "/data/user-skills" + }, + { + "name": "HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE", + "value": "deepseek" + }, + { + "name": "HWLAB_CODE_AGENT_DEEPSEEK_MODEL", + "value": "deepseek-chat" + }, + { + "name": "HWLAB_CODE_AGENT_DEEPSEEK_BASE_URL", + "value": "http://hwlab-deepseek-proxy.hwlab-v03.svc.cluster.local:4000/v1/responses" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_MODEL", + "value": "gpt-5.5" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_BASE_URL", + "value": "http://127.0.0.1:49280/responses" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_UPSTREAM_BASE_URL", + "value": "https://hyueapi.com" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_FORWARDER_PORT", + "value": "49280" + }, + { + "name": "HWLAB_ACCESS_CONTROL_REQUIRED", + "value": "1" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_ID", + "value": "usr_v03_admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_USERNAME", + "value": "admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME", + "value": "HWLAB v0.3 Admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-bootstrap-admin", + "key": "password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID", + "value": "key_master_server_admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-master-server-admin-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_KEYCLOAK_ISSUER", + "value": "https://auth.74-48-78-17.nip.io/realms/hwlab" + }, + { + "name": "HWLAB_KEYCLOAK_CLIENT_ID", + "value": "hwlab-cloud-web" + }, + { + "name": "HWLAB_KEYCLOAK_CLIENT_SECRET", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-web-client", + "key": "client-secret", + "optional": true + } + } + }, + { + "name": "HWLAB_CODE_AGENT_ADAPTER", + "value": "agentrun-v01" + }, + { + "name": "AGENTRUN_MGR_URL", + "value": "http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE", + "value": "agentrun-v01" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE", + "value": "agentrun-v01" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_REPO_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-cloud-api.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID", + "value": "G14" + }, + { + "name": "HWLAB_OPENFGA_MODE", + "value": "enforce" + }, + { + "name": "HWLAB_OPENFGA_API_URL", + "value": "http://hwlab-openfga.hwlab-v03.svc.cluster.local:8080" + }, + { + "name": "HWLAB_OPENFGA_AUTHN_TOKEN", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-openfga", + "key": "authn-preshared-key", + "optional": true + } + } + }, + { + "name": "UNIDESK_MAIN_SERVER_IP", + "value": "http://74.48.78.17:18081" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "volumeMounts": [ + { + "name": "hwlab-user-skills", + "mountPath": "/data/user-skills" + } + ], + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 30, + "successThreshold": 1 + } + }, + { + "name": "hwlab-codex-api-forwarder", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb", + "ports": [ + { + "name": "codex-api", + "containerPort": 49280 + } + ], + "env": [ + { + "name": "HWLAB_CODE_AGENT_CODEX_API_FORWARDER_HOST", + "value": "127.0.0.1" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_FORWARDER_PORT", + "value": "49280" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_UPSTREAM_BASE_URL", + "value": "https://hyueapi.com" + }, + { + "name": "NO_PROXY", + "value": "hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com" + }, + { + "name": "no_proxy", + "value": "hwlab-v03.svc.cluster.local,.svc,.cluster.local,hyueapi.com,.hyueapi.com,hyui.com,.hyui.com,127.0.0.1,localhost,::1,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,api.minimaxi.com,.minimaxi.com" + }, + { + "name": "HWLAB_M3_IO_CONTROL_ENABLED", + "value": "false" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://v03.hwpod.com" + }, + { + "name": "HWLAB_CLOUD_API_PORT", + "value": "6667" + }, + { + "name": "HWLAB_RUNTIME_SUBSTITUTE_FORBIDDEN", + "value": "unidesk-backend,provider-gateway,microservice-proxy" + }, + { + "name": "HWLAB_CLOUD_DB_URL", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-api-v03-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "HWLAB_CLOUD_DB_SSL_MODE", + "value": "disable" + }, + { + "name": "HWLAB_CLOUD_DB_CONTRACT", + "value": "v03-redacted-presence-only" + }, + { + "name": "HWLAB_CLOUD_RUNTIME_ADAPTER", + "value": "postgres" + }, + { + "name": "HWLAB_CLOUD_RUNTIME_DURABLE", + "value": "true" + }, + { + "name": "HWLAB_CODE_AGENT_TIMEOUT_MS", + "value": "1200000" + }, + { + "name": "HWLAB_CODE_AGENT_SKILLS_DIRS", + "value": "/app/skills:/data/user-skills" + }, + { + "name": "HWLAB_PREINSTALLED_SKILLS_DIR", + "value": "/app/skills" + }, + { + "name": "HWLAB_USER_SKILLS_DIR", + "value": "/data/user-skills" + }, + { + "name": "HWLAB_CODE_AGENT_DEFAULT_PROVIDER_PROFILE", + "value": "deepseek" + }, + { + "name": "HWLAB_CODE_AGENT_DEEPSEEK_MODEL", + "value": "deepseek-chat" + }, + { + "name": "HWLAB_CODE_AGENT_DEEPSEEK_BASE_URL", + "value": "http://hwlab-deepseek-proxy.hwlab-v03.svc.cluster.local:4000/v1/responses" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_MODEL", + "value": "gpt-5.5" + }, + { + "name": "HWLAB_CODE_AGENT_CODEX_API_BASE_URL", + "value": "http://127.0.0.1:49280/responses" + }, + { + "name": "HWLAB_ACCESS_CONTROL_REQUIRED", + "value": "1" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_ID", + "value": "usr_v03_admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_USERNAME", + "value": "admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME", + "value": "HWLAB v0.3 Admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-bootstrap-admin", + "key": "password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_API_KEY_ID", + "value": "key_master_server_admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-master-server-admin-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_KEYCLOAK_ISSUER", + "value": "https://auth.74-48-78-17.nip.io/realms/hwlab" + }, + { + "name": "HWLAB_KEYCLOAK_CLIENT_ID", + "value": "hwlab-cloud-web" + }, + { + "name": "HWLAB_KEYCLOAK_CLIENT_SECRET", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-web-client", + "key": "client-secret", + "optional": true + } + } + }, + { + "name": "HWLAB_CODE_AGENT_ADAPTER", + "value": "agentrun-v01" + }, + { + "name": "AGENTRUN_MGR_URL", + "value": "http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE", + "value": "agentrun-v01" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE", + "value": "agentrun-v01" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_REPO_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-codex-api-responses-forwarder.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "e2d48031bdb318a3bf175c7eb33c62963c94aaebe20d15445b3a4690bfb2530e" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:bf29c6a72e12f599973c51da86cde12ae501fe7c998d95f1d3fde02e54be5ecb" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID", + "value": "G14" + }, + { + "name": "HWLAB_OPENFGA_MODE", + "value": "enforce" + }, + { + "name": "HWLAB_OPENFGA_API_URL", + "value": "http://hwlab-openfga.hwlab-v03.svc.cluster.local:8080" + }, + { + "name": "HWLAB_OPENFGA_AUTHN_TOKEN", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-openfga", + "key": "authn-preshared-key", + "optional": true + } + } + }, + { + "name": "UNIDESK_MAIN_SERVER_IP", + "value": "http://74.48.78.17:18081" + } + ], + "readinessProbe": { + "exec": { + "command": [ + "node", + "-e", + "fetch('http://127.0.0.1:49280/health/readiness').then((response) => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))" + ] + }, + "timeoutSeconds": 2 + }, + "livenessProbe": { + "exec": { + "command": [ + "node", + "-e", + "fetch('http://127.0.0.1:49280/health/live').then((response) => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))" + ] + }, + "timeoutSeconds": 2 + }, + "volumeMounts": [], + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "exec": { + "command": [ + "node", + "-e", + "fetch('http://127.0.0.1:49280/health/readiness').then((response) => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))" + ] + }, + "timeoutSeconds": 2, + "periodSeconds": 10, + "failureThreshold": 30, + "successThreshold": 1 + } + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-cloud-api" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:6667/health/live" + }, + { + "name": "HWLAB_METRICS_TARGET_TIMEOUT_MS", + "value": "2000" + }, + { + "name": "HWLAB_METRICS_EXTRA_URL", + "value": "http://127.0.0.1:6667/v1/web-performance/metrics" + }, + { + "name": "HWLAB_METRICS_EXTRA_TIMEOUT_MS", + "value": "2000" + } + ], + "ports": [ + { + "name": "metrics", + "containerPort": 9100 + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 3, + "periodSeconds": 10 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 10, + "periodSeconds": 20 + }, + "volumeMounts": [ + { + "name": "hwlab-metrics-sidecar", + "mountPath": "/metrics", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "hwlab-user-skills", + "persistentVolumeClaim": { + "claimName": "hwlab-user-skills" + } + }, + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v03-metrics-sidecar" + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-cloud-web", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-web", + "hwlab.pikastech.local/service-id": "hwlab-cloud-web", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-cloud-web", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-cloud-web", + "hwlab.pikastech.local/service-id": "hwlab-cloud-web", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-cloud-web.sh", + "hwlab.pikastech.local/environment-digest": "sha256:eadedd8ea91fe0ab9d4b29b588a14906e52082c618d326954e7cc83b3da99b77", + "hwlab.pikastech.local/environment-input-hash": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a", + "hwlab.pikastech.local/code-input-hash": "fc88b16995fd65a887e8840762cfa656058fc4f5a8f099ec7762354b70918985" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-cloud-web", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:eadedd8ea91fe0ab9d4b29b588a14906e52082c618d326954e7cc83b3da99b77", + "ports": [ + { + "name": "http", + "containerPort": 8080 + } + ], + "env": [ + { + "name": "HWLAB_API_BASE_URL", + "value": "http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667" + }, + { + "name": "HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS", + "value": "1260000" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:eadedd8ea91fe0ab9d4b29b588a14906e52082c618d326954e7cc83b3da99b77" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-cloud-web.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:eadedd8ea91fe0ab9d4b29b588a14906e52082c618d326954e7cc83b3da99b77" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "fc88b16995fd65a887e8840762cfa656058fc4f5a8f099ec7762354b70918985" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:eadedd8ea91fe0ab9d4b29b588a14906e52082c618d326954e7cc83b3da99b77" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://v03.hwpod.com" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 30, + "successThreshold": 1 + } + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-cloud-web" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:8080/health/live" + }, + { + "name": "HWLAB_METRICS_TARGET_TIMEOUT_MS", + "value": "2000" + } + ], + "ports": [ + { + "name": "metrics", + "containerPort": 9100 + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 3, + "periodSeconds": 10 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 10, + "periodSeconds": 20 + }, + "volumeMounts": [ + { + "name": "hwlab-metrics-sidecar", + "mountPath": "/metrics", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v03-metrics-sidecar" + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-gateway", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-gateway", + "hwlab.pikastech.local/service-id": "hwlab-gateway", + "hwlab.pikastech.local/activation": "manual", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "replicas": 0, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-gateway", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-gateway", + "hwlab.pikastech.local/service-id": "hwlab-gateway", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + "annotations": { + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-gateway.sh", + "hwlab.pikastech.local/environment-digest": "sha256:e9b1dfdf18605498917a34dd0c71c6d5d1b91ef4ae073c5c21e2d5480b63abc8", + "hwlab.pikastech.local/environment-input-hash": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a", + "hwlab.pikastech.local/code-input-hash": "9693556c71091e3e85d61efc6ef7d62e1064fba145ec83b3b9c196477f0b2870" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-gateway", + "image": "127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:e9b1dfdf18605498917a34dd0c71c6d5d1b91ef4ae073c5c21e2d5480b63abc8", + "ports": [ + { + "name": "http", + "containerPort": 7001 + } + ], + "env": [ + { + "name": "HWLAB_GATEWAY_MODE", + "value": "hardware-boundary" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:e9b1dfdf18605498917a34dd0c71c6d5d1b91ef4ae073c5c21e2d5480b63abc8" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-gateway.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-gateway-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:e9b1dfdf18605498917a34dd0c71c6d5d1b91ef4ae073c5c21e2d5480b63abc8" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "9693556c71091e3e85d61efc6ef7d62e1064fba145ec83b3b9c196477f0b2870" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:e9b1dfdf18605498917a34dd0c71c6d5d1b91ef4ae073c5c21e2d5480b63abc8" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 30, + "successThreshold": 1 + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-edge-proxy", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-edge-proxy", + "hwlab.pikastech.local/service-id": "hwlab-edge-proxy", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-edge-proxy", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-edge-proxy", + "hwlab.pikastech.local/service-id": "hwlab-edge-proxy", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-edge-proxy.sh", + "hwlab.pikastech.local/environment-digest": "sha256:07e80adfbe753d88fb4037c21623badb7dad0d0c640121d16798ec121af06aa7", + "hwlab.pikastech.local/environment-input-hash": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a", + "hwlab.pikastech.local/code-input-hash": "feaa7c30c37eb42248165bd2f574362dc91908d531d79f4211733b32929b1fa6" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-edge-proxy", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:07e80adfbe753d88fb4037c21623badb7dad0d0c640121d16798ec121af06aa7", + "ports": [ + { + "name": "http", + "containerPort": 6667 + } + ], + "env": [ + { + "name": "HWLAB_EDGE_LISTEN", + "value": "0.0.0.0:6667" + }, + { + "name": "HWLAB_EDGE_UPSTREAM", + "value": "http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667" + }, + { + "name": "HWLAB_EDGE_PROXY_TIMEOUT_MS", + "value": "1260000" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:07e80adfbe753d88fb4037c21623badb7dad0d0c640121d16798ec121af06aa7" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-edge-proxy.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:07e80adfbe753d88fb4037c21623badb7dad0d0c640121d16798ec121af06aa7" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "feaa7c30c37eb42248165bd2f574362dc91908d531d79f4211733b32929b1fa6" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:07e80adfbe753d88fb4037c21623badb7dad0d0c640121d16798ec121af06aa7" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://v03.hwpod.com" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health", + "port": "http" + } + }, + "livenessProbe": { + "httpGet": { + "path": "/health", + "port": "http" + } + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 30, + "successThreshold": 1 + } + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-edge-proxy" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:6667/health" + }, + { + "name": "HWLAB_METRICS_TARGET_TIMEOUT_MS", + "value": "2000" + } + ], + "ports": [ + { + "name": "metrics", + "containerPort": 9100 + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 3, + "periodSeconds": 10 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 10, + "periodSeconds": 20 + }, + "volumeMounts": [ + { + "name": "hwlab-metrics-sidecar", + "mountPath": "/metrics", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v03-metrics-sidecar" + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-agent-skills", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-agent-skills", + "hwlab.pikastech.local/service-id": "hwlab-agent-skills", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/source-commit": "004235736f9168145885f1be57bd3c46fcb6ce6a" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-agent-skills", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-agent-skills", + "hwlab.pikastech.local/service-id": "hwlab-agent-skills", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/artifact-source-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/boot-commit": "f3e0ad796126da7a7721b538936c971b824c2486", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-agent-skills.sh", + "hwlab.pikastech.local/environment-digest": "sha256:ca8137d03351c8f9fd32a6b73ffec321a168c6af23d4d2503b5129906dd42480", + "hwlab.pikastech.local/environment-input-hash": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a", + "hwlab.pikastech.local/code-input-hash": "369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-agent-skills", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env@sha256:ca8137d03351c8f9fd32a6b73ffec321a168c6af23d4d2503b5129906dd42480", + "ports": [ + { + "name": "http", + "containerPort": 7430 + } + ], + "env": [ + { + "name": "HWLAB_SKILLS_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env@sha256:ca8137d03351c8f9fd32a6b73ffec321a168c6af23d4d2503b5129906dd42480" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9495896df918" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_RUNTIME_MODE", + "value": "env-reuse-git-mirror-checkout" + }, + { + "name": "HWLAB_BOOT_REPO", + "value": "git@github.com:pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_BOOT_COMMIT", + "value": "f3e0ad796126da7a7721b538936c971b824c2486" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-agent-skills.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-9495896df918" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:ca8137d03351c8f9fd32a6b73ffec321a168c6af23d4d2503b5129906dd42480" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9495896df9181f06492b0a0f8673eb5dd7e951b756e66e35bda0fd101a14e74a" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:ca8137d03351c8f9fd32a6b73ffec321a168c6af23d4d2503b5129906dd42480" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + } + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 2, + "failureThreshold": 30, + "successThreshold": 1 + } + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-agent-skills" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:7430/health/live" + }, + { + "name": "HWLAB_METRICS_TARGET_TIMEOUT_MS", + "value": "2000" + } + ], + "ports": [ + { + "name": "metrics", + "containerPort": 9100 + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 3, + "periodSeconds": 10 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "metrics" + }, + "initialDelaySeconds": 10, + "periodSeconds": 20 + }, + "volumeMounts": [ + { + "name": "hwlab-metrics-sidecar", + "mountPath": "/metrics", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v03-metrics-sidecar" + } + } + ] + } + } + } + } + ] +}