From 8792b61dbd89f8385ea9982fe69527a747b166e6 Mon Sep 17 00:00:00 2001 From: HWLAB G14 GitOps Bot Date: Fri, 5 Jun 2026 00:30:40 +0000 Subject: [PATCH] chore: promote G14 GitOps source 8b24eb8 --- deploy/artifact-catalog.v02.json | 28 +- .../g14/runtime-v02/deepseek-proxy.yaml | 85 +- deploy/gitops/g14/runtime-v02/g14-frpc.yaml | 4 +- .../g14/runtime-v02/health-contract.yaml | 2 +- .../gitops/g14/runtime-v02/kustomization.yaml | 1 + deploy/gitops/g14/runtime-v02/namespace.yaml | 2 +- .../gitops/g14/runtime-v02/observability.yaml | 358 +++++++ deploy/gitops/g14/runtime-v02/postgres.yaml | 6 +- deploy/gitops/g14/runtime-v02/services.yaml | 52 +- deploy/gitops/g14/runtime-v02/workloads.yaml | 892 +++++++++++++++++- 10 files changed, 1372 insertions(+), 58 deletions(-) create mode 100644 deploy/gitops/g14/runtime-v02/observability.yaml diff --git a/deploy/artifact-catalog.v02.json b/deploy/artifact-catalog.v02.json index d409b508..2b0ab58f 100644 --- a/deploy/artifact-catalog.v02.json +++ b/deploy/artifact-catalog.v02.json @@ -5,7 +5,7 @@ "profile": "v02", "namespace": "hwlab-v02", "endpoint": "https://hwlab.74-48-78-17.nip.io", - "commitId": "869746374be36a7aeac7443de8c72a377240ca2d", + "commitId": "8b24eb87c046d9673b53424b8ecac27cded7745b", "artifactState": "published", "publish": { "registryPrefix": "127.0.0.1:5000/hwlab", @@ -14,7 +14,7 @@ "publishedAt": null, "ciPublished": true, "registryVerified": true, - "provenance": "g14-ci-artifact:hwlab-v02-ci-poll-869746374be3-collect", + "provenance": "g14-ci-artifact:hwlab-v02-ci-poll-8b24eb87c046-collect", "note": "Digest fields were copied from a successful DEV artifact publish report for this source commit." }, "allowedProfiles": [ @@ -34,7 +34,7 @@ "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:869746374be36a7aeac7443de8c72a377240ca2d", "imageTag": "869746374be36a7aeac7443de8c72a377240ca2d", "digest": "sha256:687276c4a7fbc7665cd473b4e937e99cee6eb133207c4ac43da76b373ba1c264", - "buildBackend": "buildkit", + "buildBackend": "reused-catalog", "buildCreatedAt": "2026-06-04T18:30:21.096Z", "buildSource": "git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB@869746374be36a7aeac7443de8c72a377240ca2d", "componentCommitId": "1162c0e5bd47b4a5d59e5ff98b66a2e456d12eef", @@ -48,23 +48,25 @@ "environmentInputHash": null, "codeInputHash": null, "bootRepo": null, - "bootCommit": "869746374be36a7aeac7443de8c72a377240ca2d", + "bootCommit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "bootSh": null, "bootEnvEvidence": null, "dockerfileHash": "01404b65f1bc82b4ef400e06d122ffaf072407f1dc67fb822903288ef679344d", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "445d32282d642d5089290ffe5f621ccea3206cf1d9f11b24091f82a4434cbcd5", - "ciAffected": true, + "ciAffected": false, "ciReason": [ - "component-path-changed" + "component-inputs-unchanged" ], "reuse": { - "status": "not-reused", - "reason": "component-affected" + "status": "ready", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api:869746374be36a7aeac7443de8c72a377240ca2d", + "digest": "sha256:687276c4a7fbc7665cd473b4e937e99cee6eb133207c4ac43da76b373ba1c264", + "reusedFrom": "114fc37e66d94feb9eb3fe19d41b9a7526914dbbacb96753c43535a6a04f317d" }, - "reusedFrom": null, - "publishState": "published", + "reusedFrom": "114fc37e66d94feb9eb3fe19d41b9a7526914dbbacb96753c43535a6a04f317d", + "publishState": "reused", "publishEnabled": true, "artifactRequired": true, "artifactScope": "required", @@ -215,7 +217,7 @@ "environmentInputHash": null, "codeInputHash": null, "bootRepo": null, - "bootCommit": "869746374be36a7aeac7443de8c72a377240ca2d", + "bootCommit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "bootSh": null, "bootEnvEvidence": null, "dockerfileHash": "01404b65f1bc82b4ef400e06d122ffaf072407f1dc67fb822903288ef679344d", @@ -262,7 +264,7 @@ "environmentInputHash": null, "codeInputHash": null, "bootRepo": null, - "bootCommit": "869746374be36a7aeac7443de8c72a377240ca2d", + "bootCommit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "bootSh": null, "bootEnvEvidence": null, "dockerfileHash": "01404b65f1bc82b4ef400e06d122ffaf072407f1dc67fb822903288ef679344d", @@ -309,7 +311,7 @@ "environmentInputHash": null, "codeInputHash": null, "bootRepo": null, - "bootCommit": "869746374be36a7aeac7443de8c72a377240ca2d", + "bootCommit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "bootSh": null, "bootEnvEvidence": null, "dockerfileHash": "01404b65f1bc82b4ef400e06d122ffaf072407f1dc67fb822903288ef679344d", diff --git a/deploy/gitops/g14/runtime-v02/deepseek-proxy.yaml b/deploy/gitops/g14/runtime-v02/deepseek-proxy.yaml index 0fa6d7c5..e290c583 100644 --- a/deploy/gitops/g14/runtime-v02/deepseek-proxy.yaml +++ b/deploy/gitops/g14/runtime-v02/deepseek-proxy.yaml @@ -14,7 +14,8 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/monitoring": "enabled" } }, "data": { @@ -33,7 +34,8 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/moonbridge-source-ref": "1b99888d3dae889b79ee602cb875c7907f7e76f2", @@ -60,6 +62,7 @@ "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy", "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/monitoring": "enabled", "hwlab.pikastech.local/bridge-source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" }, "annotations": { @@ -206,6 +209,70 @@ "mountPath": "/data" } ] + }, + { + "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-deepseek-proxy" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:4000/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": [ @@ -222,6 +289,12 @@ { "name": "moonbridge-data", "emptyDir": {} + }, + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v02-metrics-sidecar" + } } ] } @@ -240,7 +313,8 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/monitoring": "enabled" } }, "spec": { @@ -253,6 +327,11 @@ "name": "http", "port": 4000, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } diff --git a/deploy/gitops/g14/runtime-v02/g14-frpc.yaml b/deploy/gitops/g14/runtime-v02/g14-frpc.yaml index 15383f38..76a2f28b 100644 --- a/deploy/gitops/g14/runtime-v02/g14-frpc.yaml +++ b/deploy/gitops/g14/runtime-v02/g14-frpc.yaml @@ -14,7 +14,7 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/profile": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "data": { @@ -33,7 +33,7 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/profile": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { diff --git a/deploy/gitops/g14/runtime-v02/health-contract.yaml b/deploy/gitops/g14/runtime-v02/health-contract.yaml index a68e8ca9..7dd9ec8c 100644 --- a/deploy/gitops/g14/runtime-v02/health-contract.yaml +++ b/deploy/gitops/g14/runtime-v02/health-contract.yaml @@ -8,7 +8,7 @@ "app.kubernetes.io/name": "hwlab-v02-health-contract", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02" }, "annotations": { diff --git a/deploy/gitops/g14/runtime-v02/kustomization.yaml b/deploy/gitops/g14/runtime-v02/kustomization.yaml index da082816..ba817b1e 100644 --- a/deploy/gitops/g14/runtime-v02/kustomization.yaml +++ b/deploy/gitops/g14/runtime-v02/kustomization.yaml @@ -9,6 +9,7 @@ "workloads.yaml", "deepseek-proxy.yaml", "postgres.yaml", + "observability.yaml", "g14-frpc.yaml" ] } diff --git a/deploy/gitops/g14/runtime-v02/namespace.yaml b/deploy/gitops/g14/runtime-v02/namespace.yaml index fdcc658d..eda43a8c 100644 --- a/deploy/gitops/g14/runtime-v02/namespace.yaml +++ b/deploy/gitops/g14/runtime-v02/namespace.yaml @@ -7,7 +7,7 @@ "app.kubernetes.io/part-of": "hwlab", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02" }, "annotations": { diff --git a/deploy/gitops/g14/runtime-v02/observability.yaml b/deploy/gitops/g14/runtime-v02/observability.yaml new file mode 100644 index 00000000..bcf2c258 --- /dev/null +++ b/deploy/gitops/g14/runtime-v02/observability.yaml @@ -0,0 +1,358 @@ +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ConfigMap", + "metadata": { + "name": "hwlab-v02-metrics-sidecar", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "data": { + "metrics-sidecar.mjs": "import { createServer } from \"node:http\";\nimport { pathToFileURL } from \"node:url\";\n\nconst DEFAULT_PORT = 9100;\nconst DEFAULT_TARGET_TIMEOUT_MS = 2000;\nconst startedAtMs = Date.now();\n\nexport function sanitizeLabelValue(value, fallback = \"unknown\") {\n const text = String(value ?? \"\").trim();\n const sanitized = text.replace(/[^A-Za-z0-9_.:-]/gu, \"_\").slice(0, 120);\n return sanitized || fallback;\n}\n\nexport function escapeLabelValue(value) {\n return String(value ?? \"\").replace(/\\\\/gu, \"\\\\\\\\\").replace(/\\n/gu, \"\\\\n\").replace(/\"/gu, \"\\\\\\\"\");\n}\n\nfunction metricLabels(env) {\n const service = sanitizeLabelValue(env.HWLAB_METRICS_SERVICE_ID || env.HWLAB_SERVICE_ID);\n const namespace = sanitizeLabelValue(env.HWLAB_METRICS_NAMESPACE || env.POD_NAMESPACE || \"hwlab-v02\");\n const gitopsTarget = sanitizeLabelValue(env.HWLAB_METRICS_GITOPS_TARGET || env.HWLAB_GITOPS_TARGET || \"v02\");\n return `service=\"${escapeLabelValue(service)}\",namespace=\"${escapeLabelValue(namespace)}\",gitops_target=\"${escapeLabelValue(gitopsTarget)}\"`;\n}\n\nexport async function probeTarget({ targetUrl, timeoutMs = DEFAULT_TARGET_TIMEOUT_MS, fetchImpl = globalThis.fetch } = {}) {\n const configured = typeof targetUrl === \"string\" && targetUrl.trim().length > 0;\n if (!configured || typeof fetchImpl !== \"function\") {\n return { configured: false, success: false, statusCode: 0, durationSeconds: 0 };\n }\n const controller = new AbortController();\n const started = Date.now();\n const timeout = setTimeout(() => controller.abort(), timeoutMs);\n try {\n const response = await fetchImpl(targetUrl, { signal: controller.signal });\n return {\n configured: true,\n success: response.ok,\n statusCode: response.status || 0,\n durationSeconds: (Date.now() - started) / 1000\n };\n } catch {\n return { configured: true, success: false, statusCode: 0, durationSeconds: (Date.now() - started) / 1000 };\n } finally {\n clearTimeout(timeout);\n }\n}\n\nexport function buildMetricsText({ env = process.env, probe = 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 return [\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 \"\"\n ].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, fetchImpl = globalThis.fetch } = {}) {\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, fetchImpl });\n const payload = buildMetricsText({ env, probe });\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\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n startMetricsSidecar();\n}\n" + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-cloud-api", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-cloud-api" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-cloud-api" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-cloud-web", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-cloud-web" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-cloud-web" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-device-pod", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-device-pod" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-device-pod" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-edge-proxy", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-edge-proxy" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-edge-proxy" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-agent-skills", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-agent-skills" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-agent-skills" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v02-hwlab-deepseek-proxy", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v02" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-deepseek-proxy" + } + }, + "targetLabels": [ + "hwlab.pikastech.local/gitops-target", + "hwlab.pikastech.local/service-id" + ], + "endpoints": [ + { + "port": "metrics", + "path": "/metrics", + "interval": "30s", + "scrapeTimeout": "10s" + } + ] + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "PrometheusRule", + "metadata": { + "name": "hwlab-v02-observability", + "namespace": "hwlab-v02", + "labels": { + "hwlab.pikastech.local/gitops-target": "v02", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "hwlab.pikastech.local/environment": "v02", + "hwlab.pikastech.local/profile": "v02", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" + } + }, + "spec": { + "groups": [ + { + "name": "hwlab-v02-observability", + "rules": [ + { + "alert": "HWLABV02MetricsTargetDown", + "expr": "up{namespace=\"hwlab-v02\"} == 0", + "for": "5m", + "labels": { + "severity": "warning", + "lane": "v02" + }, + "annotations": { + "summary": "HWLAB v0.2 metrics target is down", + "description": "Prometheus cannot scrape a HWLAB v0.2 metrics target." + } + }, + { + "alert": "HWLABV02ServiceHealthProbeFailed", + "expr": "hwlab_service_health_probe_success{namespace=\"hwlab-v02\"} == 0", + "for": "5m", + "labels": { + "severity": "warning", + "lane": "v02" + }, + "annotations": { + "summary": "HWLAB v0.2 service health probe failed", + "description": "The metrics sidecar cannot reach the service health endpoint inside the pod network." + } + } + ] + } + ] + } + } + ] +} diff --git a/deploy/gitops/g14/runtime-v02/postgres.yaml b/deploy/gitops/g14/runtime-v02/postgres.yaml index 6f849afe..381bf2a8 100644 --- a/deploy/gitops/g14/runtime-v02/postgres.yaml +++ b/deploy/gitops/g14/runtime-v02/postgres.yaml @@ -14,7 +14,7 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/profile": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "data": { @@ -33,7 +33,7 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/profile": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -62,7 +62,7 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/profile": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { diff --git a/deploy/gitops/g14/runtime-v02/services.yaml b/deploy/gitops/g14/runtime-v02/services.yaml index 5a283c4b..aed4a7c2 100644 --- a/deploy/gitops/g14/runtime-v02/services.yaml +++ b/deploy/gitops/g14/runtime-v02/services.yaml @@ -12,9 +12,10 @@ "app.kubernetes.io/name": "hwlab-cloud-api", "hwlab.pikastech.local/service-id": "hwlab-cloud-api", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", - "hwlab.pikastech.local/profile": "v02" + "hwlab.pikastech.local/profile": "v02", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" @@ -30,6 +31,11 @@ "name": "http", "port": 6667, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } @@ -44,9 +50,10 @@ "app.kubernetes.io/name": "hwlab-cloud-web", "hwlab.pikastech.local/service-id": "hwlab-cloud-web", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", - "hwlab.pikastech.local/profile": "v02" + "hwlab.pikastech.local/profile": "v02", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" @@ -62,6 +69,11 @@ "name": "http", "port": 8080, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } @@ -77,7 +89,7 @@ "hwlab.pikastech.local/service-id": "hwlab-gateway", "hwlab.pikastech.local/activation": "manual", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02" }, @@ -109,9 +121,10 @@ "app.kubernetes.io/name": "hwlab-agent-skills", "hwlab.pikastech.local/service-id": "hwlab-agent-skills", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", - "hwlab.pikastech.local/profile": "v02" + "hwlab.pikastech.local/profile": "v02", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" @@ -127,6 +140,11 @@ "name": "http", "port": 7430, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } @@ -141,9 +159,10 @@ "app.kubernetes.io/name": "hwlab-device-pod", "hwlab.pikastech.local/service-id": "hwlab-device-pod", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", - "hwlab.pikastech.local/profile": "v02" + "hwlab.pikastech.local/profile": "v02", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" @@ -159,6 +178,11 @@ "name": "http", "port": 7601, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } @@ -173,9 +197,10 @@ "app.kubernetes.io/name": "hwlab-edge-proxy", "hwlab.pikastech.local/service-id": "hwlab-edge-proxy", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "hwlab.pikastech.local/environment": "v02", - "hwlab.pikastech.local/profile": "v02" + "hwlab.pikastech.local/profile": "v02", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/g14-gitops-render.mjs" @@ -191,6 +216,11 @@ "name": "http", "port": 6667, "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" } ] } diff --git a/deploy/gitops/g14/runtime-v02/workloads.yaml b/deploy/gitops/g14/runtime-v02/workloads.yaml index 1aa5b243..9870ff37 100644 --- a/deploy/gitops/g14/runtime-v02/workloads.yaml +++ b/deploy/gitops/g14/runtime-v02/workloads.yaml @@ -13,14 +13,14 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "unidesk.ai/g14-staging": "false" }, "name": "hwlab-user-skills", "namespace": "hwlab-v02", "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -47,12 +47,13 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "unidesk.ai/g14-staging": "false" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "unidesk.ai/g14-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -78,7 +79,8 @@ "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "hwlab.pikastech.local/artifact-source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/artifact-source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", @@ -315,7 +317,7 @@ }, { "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", - "value": "869746374be36a7aeac7443de8c72a377240ca2d" + "value": "8b24eb87c046d9673b53424b8ecac27cded7745b" }, { "name": "UNIDESK_MAIN_SERVER_IP", @@ -577,7 +579,7 @@ }, { "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", - "value": "869746374be36a7aeac7443de8c72a377240ca2d" + "value": "8b24eb87c046d9673b53424b8ecac27cded7745b" }, { "name": "UNIDESK_MAIN_SERVER_IP", @@ -606,6 +608,292 @@ }, "volumeMounts": [], "imagePullPolicy": "IfNotPresent" + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:687276c4a7fbc7665cd473b4e937e99cee6eb133207c4ac43da76b373ba1c264", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-cloud-api" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "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_ENVIRONMENT", + "value": "v02" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab.74-48-78-17.nip.io" + }, + { + "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-v02-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "HWLAB_CLOUD_DB_SSL_MODE", + "value": "disable" + }, + { + "name": "HWLAB_CLOUD_DB_CONTRACT", + "value": "v02-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-v02.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-v02.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-v02.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_DEVICE_POD_URL", + "value": "http://hwlab-device-pod.hwlab-v02.svc.cluster.local:7601" + }, + { + "name": "HWLAB_ACCESS_CONTROL_REQUIRED", + "value": "1" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_ID", + "value": "usr_v02_admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_USERNAME", + "value": "admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_DISPLAY_NAME", + "value": "HWLAB v0.2 Admin" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v02-bootstrap-admin", + "key": "password-hash", + "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_PROVIDER_ID", + "value": "G14" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_DEVICE_POD_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v02-device-pod-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_DEVICE_POD_INTERNAL_TOKEN", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v02-device-pod-internal", + "key": "token", + "optional": true + } + } + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "869746374be36a7aeac7443de8c72a377240ca2d" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-api@sha256:687276c4a7fbc7665cd473b4e937e99cee6eb133207c4ac43da76b373ba1c264" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "869746374be36a7aeac7443de8c72a377240ca2d" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "869746374be36a7aeac7443de8c72a377240ca2d" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", + "value": "8b24eb87c046d9673b53424b8ecac27cded7745b" + }, + { + "name": "UNIDESK_MAIN_SERVER_IP", + "value": "http://74.48.78.17:18081" + } + ], + "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": [ @@ -614,6 +902,12 @@ "persistentVolumeClaim": { "claimName": "hwlab-user-skills" } + }, + { + "name": "hwlab-metrics-sidecar", + "configMap": { + "name": "hwlab-v02-metrics-sidecar" + } } ] } @@ -633,12 +927,13 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "unidesk.ai/g14-staging": "false" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "unidesk.ai/g14-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -662,6 +957,7 @@ "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", + "hwlab.pikastech.local/monitoring": "enabled", "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", "hwlab.pikastech.local/boot-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42" }, @@ -788,6 +1084,162 @@ } }, "imagePullPolicy": "IfNotPresent" + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:97e28c1203dbcca130b3d9369e7e4a4eb740b0af5a5f8b06bd7e904e23ee8808", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-cloud-web" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "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" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v02" + }, + { + "name": "HWLAB_API_BASE_URL", + "value": "http://hwlab-cloud-api.hwlab-v02.svc.cluster.local:6667" + }, + { + "name": "HWLAB_CLOUD_WEB_PROXY_TIMEOUT_MS", + "value": "1260000" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:97e28c1203dbcca130b3d9369e7e4a4eb740b0af5a5f8b06bd7e904e23ee8808" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-18c6c806d749" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "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": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.2" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-18c6c806d749" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:97e28c1203dbcca130b3d9369e7e4a4eb740b0af5a5f8b06bd7e904e23ee8808" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "18c6c806d7494d1895e2adffd3930032fa57a8313a8ca5f6fba358acc613022e" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "653f25bd417520db88237d6a49d45dce4d6ae6364475704705b7586395bfc82e" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:97e28c1203dbcca130b3d9369e7e4a4eb740b0af5a5f8b06bd7e904e23ee8808" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab.74-48-78-17.nip.io" + } + ], + "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-v02-metrics-sidecar" + } } ] } @@ -807,12 +1259,13 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "unidesk.ai/g14-staging": "false" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "unidesk.ai/g14-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -836,6 +1289,7 @@ "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", + "hwlab.pikastech.local/monitoring": "enabled", "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", "hwlab.pikastech.local/boot-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42" }, @@ -972,6 +1426,172 @@ } }, "imagePullPolicy": "IfNotPresent" + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-device-pod-env@sha256:e0b2b049008028effb6d09dedd92c4167bcea0c35af1da2cb12188cfbdadbe2b", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-device-pod" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_METRICS_PORT", + "value": "9100" + }, + { + "name": "HWLAB_METRICS_TARGET_URL", + "value": "http://127.0.0.1:7601/health/live" + }, + { + "name": "HWLAB_METRICS_TARGET_TIMEOUT_MS", + "value": "2000" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v02" + }, + { + "name": "HWLAB_CLOUD_API_INTERNAL_URL", + "value": "http://hwlab-cloud-api.hwlab-v02.svc.cluster.local:6667" + }, + { + "name": "HWLAB_DEVICE_POD_ID", + "value": "device-pod-71-freq" + }, + { + "name": "HWLAB_DEVICE_POD_PORT", + "value": "7601" + }, + { + "name": "HWLAB_DEVICE_POD_INTERNAL_TOKEN", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v02-device-pod-internal", + "key": "token", + "optional": true + } + } + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-device-pod-env@sha256:e0b2b049008028effb6d09dedd92c4167bcea0c35af1da2cb12188cfbdadbe2b" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-18c6c806d749" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "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": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.2" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-device-pod.sh" + }, + { + "name": "HWLAB_BOOT_READ_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-device-pod-env:env-18c6c806d749" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:e0b2b049008028effb6d09dedd92c4167bcea0c35af1da2cb12188cfbdadbe2b" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "18c6c806d7494d1895e2adffd3930032fa57a8313a8ca5f6fba358acc613022e" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "bf32afca680c929a2b542c568fccf6b345e333eb70dca2c9301a5af092c761a6" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:e0b2b049008028effb6d09dedd92c4167bcea0c35af1da2cb12188cfbdadbe2b" + } + ], + "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-v02-metrics-sidecar" + } } ] } @@ -992,12 +1612,12 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", "unidesk.ai/g14-staging": "false" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -1105,12 +1725,13 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "unidesk.ai/g14-staging": "false" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "unidesk.ai/g14-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -1133,7 +1754,8 @@ "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", - "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42" + "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", @@ -1211,6 +1833,122 @@ } }, "imagePullPolicy": "IfNotPresent" + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:0041af234c6f0a97c29bbbee8c0f98becf6565d3ea2793e6f2a4a6e3238146d6", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-edge-proxy" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "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" + }, + { + "name": "HWLAB_EDGE_LISTEN", + "value": "0.0.0.0:6667" + }, + { + "name": "HWLAB_EDGE_UPSTREAM", + "value": "http://hwlab-cloud-api.hwlab-v02.svc.cluster.local:6667" + }, + { + "name": "HWLAB_EDGE_PROXY_TIMEOUT_MS", + "value": "1260000" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v02" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-edge-proxy@sha256:0041af234c6f0a97c29bbbee8c0f98becf6565d3ea2793e6f2a4a6e3238146d6" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab.74-48-78-17.nip.io" + } + ], + "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-v02-metrics-sidecar" + } } ] } @@ -1230,12 +1968,13 @@ "hwlab.pikastech.local/environment": "v02", "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d", - "unidesk.ai/g14-staging": "false" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b", + "unidesk.ai/g14-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/gitops-note": "HWLAB v0.2 GitOps target.", - "hwlab.pikastech.local/source-commit": "869746374be36a7aeac7443de8c72a377240ca2d" + "hwlab.pikastech.local/source-commit": "8b24eb87c046d9673b53424b8ecac27cded7745b" } }, "spec": { @@ -1258,7 +1997,8 @@ "hwlab.pikastech.local/profile": "v02", "hwlab.pikastech.local/gitops-target": "v02", "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", - "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42" + "hwlab.pikastech.local/artifact-source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", + "hwlab.pikastech.local/monitoring": "enabled" }, "annotations": { "hwlab.pikastech.local/source-commit": "4baea168af28f090c8cf73f8a46620a5773ffd42", @@ -1324,6 +2064,110 @@ } }, "imagePullPolicy": "IfNotPresent" + }, + { + "name": "hwlab-metrics", + "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:833b4e99e787a92287e32fde908f498bfb362276bc2a3f4cd6ee61dce40de358", + "imagePullPolicy": "IfNotPresent", + "command": [ + "node", + "/metrics/metrics-sidecar.mjs" + ], + "env": [ + { + "name": "HWLAB_METRICS_SERVICE_ID", + "value": "hwlab-agent-skills" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v02" + }, + { + "name": "HWLAB_METRICS_GITOPS_TARGET", + "value": "v02" + }, + { + "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" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v02" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-agent-skills@sha256:833b4e99e787a92287e32fde908f498bfb362276bc2a3f4cd6ee61dce40de358" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_SKILLS_COMMIT_ID", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v02" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "4baea168af28f090c8cf73f8a46620a5773ffd42" + } + ], + "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-v02-metrics-sidecar" + } } ] }