diff --git a/deploy/artifact-catalog.jd01-v03.json b/deploy/artifact-catalog.jd01-v03.json index 01e3cede..c9d3b7e9 100644 --- a/deploy/artifact-catalog.jd01-v03.json +++ b/deploy/artifact-catalog.jd01-v03.json @@ -4,13 +4,13 @@ "environment": "v03", "profile": "v03", "namespace": "hwlab-v03", - "endpoint": "https://hwlab.pikapython.com", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", + "endpoint": "https://hwlab-v03.74-48-78-17.nip.io", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", "artifactState": "published", "publish": { "ciPublished": true, "registryVerified": true, - "provenance": "node-ci-artifact:hwlab-jd01-v03-ci-poll-rcjj2-collect", + "provenance": "node-ci-artifact:hwlab-jd01-v03-ci-poll-mm4fh-collect", "note": "Digest fields were copied from a successful DEV artifact publish report for this source commit." }, "healthContract": { @@ -33,11 +33,11 @@ "services": [ { "serviceId": "hwlab-cloud-api", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", "publishState": "published", "profile": "v03", "namespace": "hwlab-v03", @@ -47,44 +47,45 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:20.118Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "buildCreatedAt": "2026-07-06T07:08:06.430Z", + "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "26ea6f902f23d7bd81e4c671d2b422a90e4ae1b5317dc91b0e012cb43559865d", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "a4a2d2a3f81a389b633415f573e4bcf7d0162d9a14a2d9524a1a776593373026", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c", - "environmentDigest": "sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-cloud-api.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c", + "environmentDigest": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-cloud-api.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-cloud-api.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "5d7057a50fceca36a65e7e408e037faf8d4627c5f28cead08f761826681c9ae3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "445d32282d642d5089290ffe5f621ccea3206cf1d9f11b24091f82a4434cbcd5", "ciAffected": true, "ciReason": [ "environment-input-mismatch", + "reuse-registry-missing", "runtime-deps-changed" ], "reuse": { @@ -95,10 +96,10 @@ }, { "serviceId": "hwlab-workbench-runtime", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-a7047ddc77f2", - "imageTag": "env-a7047ddc77f2", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-9115558e9e2c", + "imageTag": "env-9115558e9e2c", "digest": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10", "publishState": "reused", "profile": "v03", @@ -112,35 +113,35 @@ "buildCreatedAt": "2026-06-29T06:11:38.065Z", "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:2cf8ee7ed635a31a8c16f5aa35c28d6cfbf1234d32176f2e6e8d40b1cceefb5d", "buildBackend": "reused-env-catalog", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "81c73f691a8f2d41d5731248132a3c267d119d51b8be58f87a997e5bd28c5c65", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "b2083d4aba9d4f4dece9ac25cf9b3673544479698149b60cd08ff8c8b5fd8126", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-a7047ddc77f2", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-9115558e9e2c", "environmentDigest": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10", - "environmentInputHash": "a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af", + "environmentInputHash": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2", "codeInputHash": "2db125ce4bebccf3c3e95b50291559144cf647eb905628d59ebebc17c65e2c8b", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-workbench-runtime.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", "environmentDigest": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-a7047ddc77f2", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-9115558e9e2c", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-workbench-runtime.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-workbench-runtime.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-a7047ddc77f2", + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-9115558e9e2c", "HWLAB_ENVIRONMENT_DIGEST": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10" } }, - "dockerfileHash": "642638baf3e97b4670f0794eb5ff25baf0703da874218b1a55827d623dd52947", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "4269b9316d150facffb495f7c4900ee56af391c071b86063ae850defa7e64e99", @@ -152,14 +153,14 @@ "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af" + "reusedFrom": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2" }, { "serviceId": "hwlab-user-billing", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-a7047ddc77f2", - "imageTag": "env-a7047ddc77f2", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-9115558e9e2c", + "imageTag": "env-9115558e9e2c", "digest": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6", "publishState": "reused", "profile": "v03", @@ -173,35 +174,35 @@ "buildCreatedAt": "2026-06-29T06:11:40.177Z", "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:2cf8ee7ed635a31a8c16f5aa35c28d6cfbf1234d32176f2e6e8d40b1cceefb5d", "buildBackend": "reused-env-catalog", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "91797c6916d230526fa175bf2c2fb920e2a66548978301790907058be353609a", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "7979238a67a9290b85ecd08a2dff8dcd4944849d657a9ead10ef5f3213f3e608", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-a7047ddc77f2", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-9115558e9e2c", "environmentDigest": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6", - "environmentInputHash": "a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af", + "environmentInputHash": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2", "codeInputHash": "1c7f8090dc17d9a7dfc7cdd0714e7294bb231db899c396b388e4ab3642e5134e", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-user-billing.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", "environmentDigest": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-a7047ddc77f2", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-9115558e9e2c", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-user-billing.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-user-billing.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-a7047ddc77f2", + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-9115558e9e2c", "HWLAB_ENVIRONMENT_DIGEST": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6" } }, - "dockerfileHash": "642638baf3e97b4670f0794eb5ff25baf0703da874218b1a55827d623dd52947", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "490a070de1a6975b4935670478f0e64345d20e1aa9b80096b1318106b25d9310", @@ -213,16 +214,16 @@ "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af" + "reusedFrom": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2" }, { "serviceId": "hwlab-project-management", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-project-management-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0", - "publishState": "published", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf", + "publishState": "reused", "profile": "v03", "namespace": "hwlab-v03", "healthPath": "/health/live", @@ -231,60 +232,62 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:21.377Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", - "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "e043736347c99a97f1b2708a8f698dad9daba36a4d49dbba20fa282f3ecd3c52", + "buildCreatedAt": "2026-06-29T06:11:41.256Z", + "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:5ff41b539190849e76511ed722a4539f5921622e98eea1444b606475f8ef55aa", + "buildBackend": "reused-env-catalog", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "8bd0d4b3a5f4accdf8d7364064614e8009d95c24c6f91db02eccd01d324f991c", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-project-management-env:env-efd2e5a6509c", - "environmentDigest": "sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "4cbd4e24c3020037d215271ed248ac38d5a1c385855443ffe5c112b1a04118f6", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-project-management.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-project-management-env:env-efd2e5a6509c", + "environmentDigest": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-project-management.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-project-management.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-project-management-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "30d9f35c4d70555725db1ef7a591b9af9cb158e82d924d3c6dc82326fbeffbd4", "ciAffected": true, "ciReason": [ "environment-input-mismatch", - "runtime-deps-changed" + "reuse-registry-missing", + "runtime-deps-changed", + "shared-env-artifact-consumer" ], "reuse": { "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "f5109d26020b05d9023ab1a6dd4e34ed07c9bbca03fc8d0a4697cc208c85a175" + "reusedFrom": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" }, { "serviceId": "hwlab-cloud-web", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642", - "publishState": "published", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "publishState": "reused", "profile": "v03", "namespace": "hwlab-v03", "healthPath": "/health/live", @@ -293,60 +296,62 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:20.620Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", - "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "2cbf52295738dd1d7b4982075bcaa6730db5987c82d2e28daafc3b3e8dad9a01", + "buildCreatedAt": "2026-06-29T06:11:41.852Z", + "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:5ff41b539190849e76511ed722a4539f5921622e98eea1444b606475f8ef55aa", + "buildBackend": "reused-env-catalog", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "03e094373fd86a99c25feb95dce775632faa00301d5378bdc3e782d0192c1a56", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c", - "environmentDigest": "sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-cloud-web.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c", + "environmentDigest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-cloud-web.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-cloud-web.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "39effb18af665e5e286cca9f84ef2a30f577ad11c9acca098589b7ee37f6950c", "ciAffected": true, "ciReason": [ "environment-input-mismatch", - "runtime-deps-changed" + "reuse-registry-missing", + "runtime-deps-changed", + "shared-env-artifact-consumer" ], "reuse": { "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "f5109d26020b05d9023ab1a6dd4e34ed07c9bbca03fc8d0a4697cc208c85a175" + "reusedFrom": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" }, { "serviceId": "hwlab-gateway", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-gateway-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f", - "publishState": "published", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964", + "publishState": "reused", "profile": "v03", "namespace": "hwlab-v03", "healthPath": "/health/live", @@ -355,61 +360,63 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:22.268Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", - "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "980bb131341e24fae5def47c93446a189c187011b7c221c82349a6aae35295dd", + "buildCreatedAt": "2026-06-29T06:11:38.222Z", + "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:5ff41b539190849e76511ed722a4539f5921622e98eea1444b606475f8ef55aa", + "buildBackend": "reused-env-catalog", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "66793083ed1b656482c60efb0a05afc8d8d00314efdec95c84fcd1e89317fe2b", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": true, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-gateway-env:env-efd2e5a6509c", - "environmentDigest": "sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "25f753b252593891ed7b03b53a69d266e7a324728cf83fea8654bab4196fa399", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-gateway.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-gateway-env:env-efd2e5a6509c", + "environmentDigest": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-gateway.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-gateway.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-gateway-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "3fed509f00ba3448138a999f51dad3d38b822bb4a5c152011e3e57526972fd41", "ciAffected": true, "ciReason": [ - "environment-input-mismatch", "code-input-changed", - "runtime-deps-changed" + "environment-input-mismatch", + "reuse-registry-missing", + "runtime-deps-changed", + "shared-env-artifact-consumer" ], "reuse": { "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "f5109d26020b05d9023ab1a6dd4e34ed07c9bbca03fc8d0a4697cc208c85a175" + "reusedFrom": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" }, { "serviceId": "hwlab-edge-proxy", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2", - "publishState": "published", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028", + "publishState": "reused", "profile": "v03", "namespace": "hwlab-v03", "healthPath": "/health/live", @@ -418,60 +425,62 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:22.361Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", - "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "66c15a5b290b2508d33bdbbc24cf0c00b44912d4f455f380b322b85ae580f6b4", + "buildCreatedAt": "2026-06-29T06:11:40.046Z", + "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:5ff41b539190849e76511ed722a4539f5921622e98eea1444b606475f8ef55aa", + "buildBackend": "reused-env-catalog", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "98a97d88679efdb9d1fb82141e6e10ad19e7252ae764b48311ed4c3445d443d4", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-efd2e5a6509c", - "environmentDigest": "sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "c97d19939c872e128a6931bdf73f28a75a684948a76a2b1af37508dd47481544", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-edge-proxy.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-efd2e5a6509c", + "environmentDigest": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-edge-proxy.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-edge-proxy.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "68746696603227763e5768f8daf45d31331f4c8425e6d756b21482ad104e6183", "ciAffected": true, "ciReason": [ "environment-input-mismatch", - "runtime-deps-changed" + "reuse-registry-missing", + "runtime-deps-changed", + "shared-env-artifact-consumer" ], "reuse": { "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "f5109d26020b05d9023ab1a6dd4e34ed07c9bbca03fc8d0a4697cc208c85a175" + "reusedFrom": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" }, { "serviceId": "hwlab-agent-skills", - "commitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "sourceCommitId": "fac4b7ead925be576e9611c937de84cf08b38160", - "image": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-efd2e5a6509c", - "imageTag": "env-efd2e5a6509c", - "digest": "sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0", - "publishState": "published", + "commitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "sourceCommitId": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "imageTag": "env-d27ecbf7ba13", + "digest": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf", + "publishState": "reused", "profile": "v03", "namespace": "hwlab-v03", "healthPath": "/health/live", @@ -480,51 +489,53 @@ "artifactRequired": true, "artifactScope": "required", "notPublishedReason": null, - "buildCreatedAt": "2026-07-06T03:44:24.860Z", - "buildSource": "gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB@env:efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", - "buildBackend": "buildkit-env-reuse", - "componentCommitId": "bbec00b85f270ff38387cd130a2900397570d759", - "componentInputHash": "09bc4c9fa230eee4c9d3c13f0365df61ad3d8fed3b6e50aefb39fa323a86d67a", + "buildCreatedAt": "2026-06-29T06:11:40.169Z", + "buildSource": "git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB@env:5ff41b539190849e76511ed722a4539f5921622e98eea1444b606475f8ef55aa", + "buildBackend": "reused-env-catalog", + "componentCommitId": "d4b56a7f7577905a8333c4a353281231814f6356", + "componentInputHash": "c78cb3e64c238a1292b3363883b22d90a7eaccebaf49681f273b81e9be061112", "runtimeMode": "env-reuse-git-mirror-checkout", "envReuse": true, "envChanged": true, "codeChanged": false, - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-efd2e5a6509c", - "environmentDigest": "sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0", - "environmentInputHash": "efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "environmentDigest": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf", + "environmentInputHash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", "codeInputHash": "369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-agent-skills.sh", "bootEnvEvidence": { "runtimeMode": "env-reuse-git-mirror-checkout", - "environmentDigest": "sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0", - "environmentImage": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-efd2e5a6509c", + "environmentDigest": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf", + "environmentImage": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", "bootRepo": "git@github.com:pikasTech/HWLAB.git", - "bootCommit": "fac4b7ead925be576e9611c937de84cf08b38160", + "bootCommit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "bootSh": "deploy/runtime/boot/hwlab-agent-skills.sh", "env": { "HWLAB_BOOT_REPO": "git@github.com:pikasTech/HWLAB.git", - "HWLAB_BOOT_COMMIT": "fac4b7ead925be576e9611c937de84cf08b38160", + "HWLAB_BOOT_COMMIT": "2e7c55a0e9669f635235d428cd24ced4e7783175", "HWLAB_BOOT_SH": "deploy/runtime/boot/hwlab-agent-skills.sh", - "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-efd2e5a6509c", - "HWLAB_ENVIRONMENT_DIGEST": "sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0" + "HWLAB_ENVIRONMENT_IMAGE": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13", + "HWLAB_ENVIRONMENT_DIGEST": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf" } }, - "dockerfileHash": "76c94f62575980f8e291dd043af72e6fd6bb5a922296f3fb818089aec61d3415", + "dockerfileHash": "6680b3c8554af5705ea905e5fd2c18588676213a3f31fd3d694f0d7bef976dd3", "baseImageReference": "127.0.0.1:5000/hwlab/hwlab-node20-base:20-bookworm-slim", "baseImageDigest": null, "buildArgsHash": "d5e50a18e70c6a8b4896e527fa07b5dd2c85458ed9ef512c1d46775ef4e40a10", "ciAffected": true, "ciReason": [ "environment-input-mismatch", - "runtime-deps-changed" + "reuse-registry-missing", + "runtime-deps-changed", + "shared-env-artifact-consumer" ], "reuse": { "status": "not-reused", "reason": "environment-affected" }, - "reusedFrom": "f5109d26020b05d9023ab1a6dd4e34ed07c9bbca03fc8d0a4697cc208c85a175" + "reusedFrom": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" } ], "serviceInventory": { diff --git a/deploy/gitops/node/jd01/runtime-v03/configmaps.yaml b/deploy/gitops/node/jd01/runtime-v03/configmaps.yaml index 78ebaacb..d5ea7bcc 100644 --- a/deploy/gitops/node/jd01/runtime-v03/configmaps.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/configmaps.yaml @@ -10,7 +10,7 @@ "namespace": "hwlab-v03", "labels": { "hwlab.pikastech.local/gitops-target": "v03", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "hwlab.pikastech.local/environment": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/config-kind": "hwpod-preinstalled-specs" @@ -34,7 +34,7 @@ "namespace": "hwlab-v03", "labels": { "hwlab.pikastech.local/gitops-target": "v03", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", "hwlab.pikastech.local/environment": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/config-kind": "project-management-bootstrap-sources" diff --git a/deploy/gitops/node/jd01/runtime-v03/deepseek-proxy.yaml b/deploy/gitops/node/jd01/runtime-v03/deepseek-proxy.yaml index a889abab..43f45d98 100644 --- a/deploy/gitops/node/jd01/runtime-v03/deepseek-proxy.yaml +++ b/deploy/gitops/node/jd01/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: fac4b7ead925be576e9611c937de84cf08b38160 - 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" + } + }, + { + "apiVersion": "monitoring.coreos.com/v1", + "kind": "ServiceMonitor", + "metadata": { + "name": "hwlab-v03-hwlab-cloud-api", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "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/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "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-v03-hwlab-workbench-runtime", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-workbench-runtime" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-workbench-runtime" + } + }, + "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-v03-hwlab-user-billing", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-user-billing" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-user-billing" + } + }, + "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-v03-hwlab-project-management", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-project-management" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/service-id": "hwlab-project-management" + } + }, + "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-v03-hwlab-cloud-web", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "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/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "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-v03-hwlab-edge-proxy", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "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/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "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-v03-hwlab-agent-skills", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "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/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "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-v03-hwlab-deepseek-proxy", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "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/gitops-render.mjs" + } + }, + "spec": { + "namespaceSelector": { + "matchNames": [ + "hwlab-v03" + ] + }, + "selector": { + "matchLabels": { + "hwlab.pikastech.local/gitops-target": "v03", + "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-v03-observability", + "namespace": "hwlab-v03", + "labels": { + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" + } + }, + "spec": { + "groups": [ + { + "name": "hwlab-v03-observability", + "rules": [ + { + "alert": "HWLABV03MetricsTargetDown", + "expr": "up{namespace=\"hwlab-v03\"} == 0", + "for": "5m", + "labels": { + "severity": "warning", + "lane": "v03" + }, + "annotations": { + "summary": "HWLAB v0.3 metrics target is down", + "description": "Prometheus cannot scrape a HWLAB v0.3 metrics target." + } + }, + { + "alert": "HWLABV03ServiceHealthProbeFailed", + "expr": "hwlab_service_health_probe_success{namespace=\"hwlab-v03\"} == 0", + "for": "5m", + "labels": { + "severity": "warning", + "lane": "v03" + }, + "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/node/jd01/runtime-v03/opencode.yaml b/deploy/gitops/node/jd01/runtime-v03/opencode.yaml index 5d78a5b1..28f2101a 100644 --- a/deploy/gitops/node/jd01/runtime-v03/opencode.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/opencode.yaml @@ -1,386 +1,537 @@ -apiVersion: v1 -kind: List -items: - - apiVersion: v1 - kind: ServiceAccount - metadata: - name: opencode-server - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/component: opencode - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: opencode-server - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/opencode-provider-profile: dsflash-go - hwlab.pikastech.local/opencode-provider-id: dsflash-go - hwlab.pikastech.local/opencode-model: deepseek-v4-flash - hwlab.pikastech.local/opencode-provider-base-url: http://127.0.0.1:4097/v1 - hwlab.pikastech.local/opencode-provider-upstream-base-url: https://opencode.ai/zen/go/v1 - hwlab.pikastech.local/opencode-image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - hwlab.pikastech.local/opencode-config-sha256: 40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234 - hwlab.pikastech.local/opencode-api-key-secret-ref: hwlab-v03-code-agent-provider/opencode-api-key - hwlab.pikastech.local/agentrun-provider-secret-ref: agentrun-v02/agentrun-v01-provider-dsflash-go - hwlab.pikastech.local/agentrun-provider-secret-keys: auth.json,config.toml,model-catalog.json - hwlab.pikastech.local/values-printed: "false" - hwlab.pikastech.local/opencode-provider-proxy-runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/opencode-provider-proxy-boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/opencode-provider-proxy-boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/opencode-provider-proxy-boot-sh: deploy/runtime/boot/opencode-provider-proxy.sh - hwlab.pikastech.local/opencode-provider-proxy-environment-digest: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: opencode-server-data - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/component: opencode - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: opencode-server - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/opencode-provider-profile: dsflash-go - hwlab.pikastech.local/opencode-provider-id: dsflash-go - hwlab.pikastech.local/opencode-model: deepseek-v4-flash - hwlab.pikastech.local/opencode-provider-base-url: http://127.0.0.1:4097/v1 - hwlab.pikastech.local/opencode-provider-upstream-base-url: https://opencode.ai/zen/go/v1 - hwlab.pikastech.local/opencode-image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - hwlab.pikastech.local/opencode-config-sha256: 40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234 - hwlab.pikastech.local/opencode-api-key-secret-ref: hwlab-v03-code-agent-provider/opencode-api-key - hwlab.pikastech.local/agentrun-provider-secret-ref: agentrun-v02/agentrun-v01-provider-dsflash-go - hwlab.pikastech.local/agentrun-provider-secret-keys: auth.json,config.toml,model-catalog.json - hwlab.pikastech.local/values-printed: "false" - hwlab.pikastech.local/opencode-provider-proxy-runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/opencode-provider-proxy-boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/opencode-provider-proxy-boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/opencode-provider-proxy-boot-sh: deploy/runtime/boot/opencode-provider-proxy.sh - hwlab.pikastech.local/opencode-provider-proxy-environment-digest: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 8Gi - - apiVersion: v1 - kind: Service - metadata: - name: opencode-server - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/component: opencode - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: opencode-server - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/opencode-provider-profile: dsflash-go - hwlab.pikastech.local/opencode-provider-id: dsflash-go - hwlab.pikastech.local/opencode-model: deepseek-v4-flash - hwlab.pikastech.local/opencode-provider-base-url: http://127.0.0.1:4097/v1 - hwlab.pikastech.local/opencode-provider-upstream-base-url: https://opencode.ai/zen/go/v1 - hwlab.pikastech.local/opencode-image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - hwlab.pikastech.local/opencode-config-sha256: 40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234 - hwlab.pikastech.local/opencode-api-key-secret-ref: hwlab-v03-code-agent-provider/opencode-api-key - hwlab.pikastech.local/agentrun-provider-secret-ref: agentrun-v02/agentrun-v01-provider-dsflash-go - hwlab.pikastech.local/agentrun-provider-secret-keys: auth.json,config.toml,model-catalog.json - hwlab.pikastech.local/values-printed: "false" - hwlab.pikastech.local/opencode-provider-proxy-runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/opencode-provider-proxy-boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/opencode-provider-proxy-boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/opencode-provider-proxy-boot-sh: deploy/runtime/boot/opencode-provider-proxy.sh - hwlab.pikastech.local/opencode-provider-proxy-environment-digest: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - spec: - type: ClusterIP - selector: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - ports: - - name: http - port: 4096 - targetPort: http - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: opencode-server - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/component: opencode - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: opencode-server - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/opencode-provider-profile: dsflash-go - hwlab.pikastech.local/opencode-provider-id: dsflash-go - hwlab.pikastech.local/opencode-model: deepseek-v4-flash - hwlab.pikastech.local/opencode-provider-base-url: http://127.0.0.1:4097/v1 - hwlab.pikastech.local/opencode-provider-upstream-base-url: https://opencode.ai/zen/go/v1 - hwlab.pikastech.local/opencode-image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - hwlab.pikastech.local/opencode-config-sha256: 40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234 - hwlab.pikastech.local/opencode-api-key-secret-ref: hwlab-v03-code-agent-provider/opencode-api-key - hwlab.pikastech.local/agentrun-provider-secret-ref: agentrun-v02/agentrun-v01-provider-dsflash-go - hwlab.pikastech.local/agentrun-provider-secret-keys: auth.json,config.toml,model-catalog.json - hwlab.pikastech.local/values-printed: "false" - hwlab.pikastech.local/opencode-provider-proxy-runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/opencode-provider-proxy-boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/opencode-provider-proxy-boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/opencode-provider-proxy-boot-sh: deploy/runtime/boot/opencode-provider-proxy.sh - hwlab.pikastech.local/opencode-provider-proxy-environment-digest: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: opencode-server - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - hwlab.pikastech.local/component: opencode - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/service-id: opencode-server - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs - hwlab.pikastech.local/opencode-provider-profile: dsflash-go - hwlab.pikastech.local/opencode-provider-id: dsflash-go - hwlab.pikastech.local/opencode-model: deepseek-v4-flash - hwlab.pikastech.local/opencode-provider-base-url: http://127.0.0.1:4097/v1 - hwlab.pikastech.local/opencode-provider-upstream-base-url: https://opencode.ai/zen/go/v1 - hwlab.pikastech.local/opencode-image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - hwlab.pikastech.local/opencode-config-sha256: 40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234 - hwlab.pikastech.local/opencode-api-key-secret-ref: hwlab-v03-code-agent-provider/opencode-api-key - hwlab.pikastech.local/agentrun-provider-secret-ref: agentrun-v02/agentrun-v01-provider-dsflash-go - hwlab.pikastech.local/agentrun-provider-secret-keys: auth.json,config.toml,model-catalog.json - hwlab.pikastech.local/values-printed: "false" - hwlab.pikastech.local/opencode-provider-proxy-runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/opencode-provider-proxy-boot-repo: git@github.com:pikasTech/HWLAB.git - hwlab.pikastech.local/opencode-provider-proxy-boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/opencode-provider-proxy-boot-sh: deploy/runtime/boot/opencode-provider-proxy.sh - hwlab.pikastech.local/opencode-provider-proxy-environment-digest: - sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - spec: - serviceAccountName: opencode-server - securityContext: - fsGroup: 1000 - fsGroupChangePolicy: OnRootMismatch - initContainers: - - name: opencode-workspace-git-init - image: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -ec - args: - - >- - set -eu - - mkdir -p /workspace - - if [ ! -d /workspace/.git ]; then - git -C /workspace init - fi - - git -C /workspace config user.name 'HWLAB OpenCode' || true - - git -C /workspace config user.email 'opencode@hwlab.local' || - true - - chgrp -R 1000 /workspace/.git 2>/dev/null || true - - chmod -R g+rwX /workspace/.git 2>/dev/null || true - resources: - requests: - cpu: 25m - memory: 64Mi - limits: - cpu: 250m - memory: 256Mi - volumeMounts: - - name: workspace - mountPath: /workspace - containers: - - name: opencode-server - image: 127.0.0.1:5000/hwlab/opencode:1.17.7-git - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -ec - args: - - exec opencode serve --hostname 0.0.0.0 --port 4096 - workingDir: /workspace - env: - - name: HOME - value: /workspace - - name: XDG_CONFIG_HOME - value: /workspace/.config - - name: XDG_DATA_HOME - value: /workspace/.local/share - - name: HTTP_PROXY - value: http://10.42.0.1:10808 - - name: HTTPS_PROXY - value: http://10.42.0.1:10808 - - name: http_proxy - value: http://10.42.0.1:10808 - - name: https_proxy - value: http://10.42.0.1:10808 - - name: NO_PROXY - value: localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,kubernetes,kubernetes.default,kubernetes.default.svc,argocd-repo-server,argocd-repo-server.argocd,argocd-redis,argocd-redis.argocd,git-mirror-http,git-mirror-http.devops-infra,git-mirror-write,git-mirror-write.devops-infra,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,172.16.0.0/12,192.168.0.0/16,82.156.23.220,74.48.78.17,hyueapi.com,.hyueapi.com - - name: no_proxy - value: localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,kubernetes,kubernetes.default,kubernetes.default.svc,argocd-repo-server,argocd-repo-server.argocd,argocd-redis,argocd-redis.argocd,git-mirror-http,git-mirror-http.devops-infra,git-mirror-write,git-mirror-write.devops-infra,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,172.16.0.0/12,192.168.0.0/16,82.156.23.220,74.48.78.17,hyueapi.com,.hyueapi.com - - name: OPENCODE_CONFIG_CONTENT - value: '{"$schema":"https://opencode.ai/config.json","autoupdate":false,"share":"disabled","model":"dsflash-go/deepseek-v4-flash","small_model":"dsflash-go/deepseek-v4-flash","provider":{"dsflash-go":{"npm":"@ai-sdk/openai-compatible","name":"AgentRun - dsflash-go","options":{"baseURL":"http://127.0.0.1:4097/v1","apiKey":"{env:OPENCODE_DSFLASH_GO_API_KEY}","timeout":600000,"headerTimeout":600000,"chunkTimeout":300000},"models":{"deepseek-v4-flash":{"name":"deepseek-v4-flash","reasoning":false,"tool_call":true,"limit":{"context":1000000,"output":384000}}}}}}' - - name: OPENCODE_DSFLASH_GO_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-code-agent-provider - key: opencode-api-key - optional: true - - name: OPENCODE_SERVER_USERNAME - valueFrom: - secretKeyRef: - name: hwlab-v03-opencode-server-auth - key: username - - name: OPENCODE_SERVER_PASSWORD - valueFrom: - secretKeyRef: - name: hwlab-v03-opencode-server-auth - key: password - ports: - - name: http - containerPort: 4096 - startupProbe: - tcpSocket: - port: http - periodSeconds: 5 - failureThreshold: 60 - readinessProbe: - tcpSocket: - port: http - periodSeconds: 10 - failureThreshold: 3 - livenessProbe: - tcpSocket: - port: http - periodSeconds: 20 - failureThreshold: 3 - resources: - requests: - cpu: 100m - memory: 256Mi - limits: - cpu: "1" - memory: 1Gi - volumeMounts: - - name: workspace - mountPath: /workspace - - name: opencode-provider-proxy - image: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - imagePullPolicy: IfNotPresent - env: - - name: HWLAB_SERVICE_ID - value: opencode-provider-proxy - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: PORT - value: "4097" - - name: HWLAB_OPENCODE_PROVIDER_PROXY_UPSTREAM_BASE_URL - value: https://opencode.ai/zen/go/v1 - - name: HWLAB_OPENCODE_PROVIDER_PROXY_PUBLIC_BASE_PATH - value: /v1 - - name: HWLAB_OPENCODE_PROVIDER_PROXY_TIMEOUT_MS - value: "600000" - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: opencode-provider-proxy - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/opencode-provider-proxy.sh - - name: HWLAB_BOOT_READ_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780 - - name: HWLAB_IMAGE_DIGEST - value: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - ports: - - name: provider - containerPort: 4097 - readinessProbe: - httpGet: - path: /health/readiness - port: provider - periodSeconds: 10 - failureThreshold: 3 - livenessProbe: - httpGet: - path: /health/live - port: provider - periodSeconds: 20 - failureThreshold: 3 - resources: - requests: - cpu: 25m - memory: 64Mi - limits: - cpu: 250m - memory: 256Mi - startupProbe: - httpGet: - path: /health/readiness - port: provider - periodSeconds: 10 - failureThreshold: 30 - timeoutSeconds: 2 - successThreshold: 1 - volumes: - - name: workspace - persistentVolumeClaim: - claimName: opencode-server-data +{ + "apiVersion": "v1", + "kind": "List", + "items": [ + { + "apiVersion": "v1", + "kind": "ServiceAccount", + "metadata": { + "name": "opencode-server", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/component": "opencode", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/service-id": "opencode-server", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/opencode-provider-profile": "dsflash-go", + "hwlab.pikastech.local/opencode-provider-id": "dsflash-go", + "hwlab.pikastech.local/opencode-model": "deepseek-v4-flash", + "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", + "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://opencode.ai/zen/go/v1", + "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "hwlab.pikastech.local/opencode-config-sha256": "40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234", + "hwlab.pikastech.local/opencode-api-key-secret-ref": "hwlab-v03-code-agent-provider/opencode-api-key", + "hwlab.pikastech.local/agentrun-provider-secret-ref": "agentrun-v02/agentrun-v01-provider-dsflash-go", + "hwlab.pikastech.local/agentrun-provider-secret-keys": "auth.json,config.toml,model-catalog.json", + "hwlab.pikastech.local/values-printed": "false", + "hwlab.pikastech.local/opencode-provider-proxy-runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/opencode-provider-proxy-boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/opencode-provider-proxy-boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", + "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + } + }, + { + "apiVersion": "v1", + "kind": "PersistentVolumeClaim", + "metadata": { + "name": "opencode-server-data", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/component": "opencode", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/service-id": "opencode-server", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/opencode-provider-profile": "dsflash-go", + "hwlab.pikastech.local/opencode-provider-id": "dsflash-go", + "hwlab.pikastech.local/opencode-model": "deepseek-v4-flash", + "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", + "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://opencode.ai/zen/go/v1", + "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "hwlab.pikastech.local/opencode-config-sha256": "40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234", + "hwlab.pikastech.local/opencode-api-key-secret-ref": "hwlab-v03-code-agent-provider/opencode-api-key", + "hwlab.pikastech.local/agentrun-provider-secret-ref": "agentrun-v02/agentrun-v01-provider-dsflash-go", + "hwlab.pikastech.local/agentrun-provider-secret-keys": "auth.json,config.toml,model-catalog.json", + "hwlab.pikastech.local/values-printed": "false", + "hwlab.pikastech.local/opencode-provider-proxy-runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/opencode-provider-proxy-boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/opencode-provider-proxy-boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", + "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "8Gi" + } + } + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "opencode-server", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/component": "opencode", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/service-id": "opencode-server", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/opencode-provider-profile": "dsflash-go", + "hwlab.pikastech.local/opencode-provider-id": "dsflash-go", + "hwlab.pikastech.local/opencode-model": "deepseek-v4-flash", + "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", + "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://opencode.ai/zen/go/v1", + "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "hwlab.pikastech.local/opencode-config-sha256": "40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234", + "hwlab.pikastech.local/opencode-api-key-secret-ref": "hwlab-v03-code-agent-provider/opencode-api-key", + "hwlab.pikastech.local/agentrun-provider-secret-ref": "agentrun-v02/agentrun-v01-provider-dsflash-go", + "hwlab.pikastech.local/agentrun-provider-secret-keys": "auth.json,config.toml,model-catalog.json", + "hwlab.pikastech.local/values-printed": "false", + "hwlab.pikastech.local/opencode-provider-proxy-runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/opencode-provider-proxy-boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/opencode-provider-proxy-boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", + "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + }, + "spec": { + "type": "ClusterIP", + "selector": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + }, + "ports": [ + { + "name": "http", + "port": 4096, + "targetPort": "http" + } + ] + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "opencode-server", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/component": "opencode", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/service-id": "opencode-server", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/opencode-provider-profile": "dsflash-go", + "hwlab.pikastech.local/opencode-provider-id": "dsflash-go", + "hwlab.pikastech.local/opencode-model": "deepseek-v4-flash", + "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", + "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://opencode.ai/zen/go/v1", + "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "hwlab.pikastech.local/opencode-config-sha256": "40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234", + "hwlab.pikastech.local/opencode-api-key-secret-ref": "hwlab-v03-code-agent-provider/opencode-api-key", + "hwlab.pikastech.local/agentrun-provider-secret-ref": "agentrun-v02/agentrun-v01-provider-dsflash-go", + "hwlab.pikastech.local/agentrun-provider-secret-keys": "auth.json,config.toml,model-catalog.json", + "hwlab.pikastech.local/values-printed": "false", + "hwlab.pikastech.local/opencode-provider-proxy-runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/opencode-provider-proxy-boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/opencode-provider-proxy-boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", + "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + }, + "spec": { + "replicas": 1, + "strategy": { + "type": "Recreate" + }, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "opencode-server", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03", + "hwlab.pikastech.local/component": "opencode", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/service-id": "opencode-server", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", + "hwlab.pikastech.local/opencode-provider-profile": "dsflash-go", + "hwlab.pikastech.local/opencode-provider-id": "dsflash-go", + "hwlab.pikastech.local/opencode-model": "deepseek-v4-flash", + "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", + "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://opencode.ai/zen/go/v1", + "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "hwlab.pikastech.local/opencode-config-sha256": "40a92e2d93f344d7c9dbcb98bd67760078f90a0af085f83b4b5385513bb26234", + "hwlab.pikastech.local/opencode-api-key-secret-ref": "hwlab-v03-code-agent-provider/opencode-api-key", + "hwlab.pikastech.local/agentrun-provider-secret-ref": "agentrun-v02/agentrun-v01-provider-dsflash-go", + "hwlab.pikastech.local/agentrun-provider-secret-keys": "auth.json,config.toml,model-catalog.json", + "hwlab.pikastech.local/values-printed": "false", + "hwlab.pikastech.local/opencode-provider-proxy-runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/opencode-provider-proxy-boot-repo": "git@github.com:pikasTech/HWLAB.git", + "hwlab.pikastech.local/opencode-provider-proxy-boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", + "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + }, + "spec": { + "serviceAccountName": "opencode-server", + "securityContext": { + "fsGroup": 1000, + "fsGroupChangePolicy": "OnRootMismatch" + }, + "initContainers": [ + { + "name": "opencode-workspace-git-init", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "imagePullPolicy": "IfNotPresent", + "command": [ + "/bin/sh", + "-ec" + ], + "args": [ + "set -eu\nmkdir -p /workspace\nif [ ! -d /workspace/.git ]; then\n git -C /workspace init\nfi\ngit -C /workspace config user.name 'HWLAB OpenCode' || true\ngit -C /workspace config user.email 'opencode@hwlab.local' || true\nchgrp -R 1000 /workspace/.git 2>/dev/null || true\nchmod -R g+rwX /workspace/.git 2>/dev/null || true" + ], + "resources": { + "requests": { + "cpu": "25m", + "memory": "64Mi" + }, + "limits": { + "cpu": "250m", + "memory": "256Mi" + } + }, + "volumeMounts": [ + { + "name": "workspace", + "mountPath": "/workspace" + } + ] + } + ], + "containers": [ + { + "name": "opencode-server", + "image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", + "imagePullPolicy": "IfNotPresent", + "command": [ + "/bin/sh", + "-ec" + ], + "args": [ + "exec opencode serve --hostname 0.0.0.0 --port 4096" + ], + "workingDir": "/workspace", + "env": [ + { + "name": "HOME", + "value": "/workspace" + }, + { + "name": "XDG_CONFIG_HOME", + "value": "/workspace/.config" + }, + { + "name": "XDG_DATA_HOME", + "value": "/workspace/.local/share" + }, + { + "name": "HTTP_PROXY", + "value": "http://sub2api-egress-proxy.platform-infra.svc.cluster.local:10808" + }, + { + "name": "HTTPS_PROXY", + "value": "http://sub2api-egress-proxy.platform-infra.svc.cluster.local:10808" + }, + { + "name": "http_proxy", + "value": "http://sub2api-egress-proxy.platform-infra.svc.cluster.local:10808" + }, + { + "name": "https_proxy", + "value": "http://sub2api-egress-proxy.platform-infra.svc.cluster.local:10808" + }, + { + "name": "NO_PROXY", + "value": "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,kubernetes,kubernetes.default,kubernetes.default.svc,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,172.16.0.0/12,192.168.0.0/16,82.156.23.220,74.48.78.17,hyueapi.com,.hyueapi.com" + }, + { + "name": "no_proxy", + "value": "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,kubernetes,kubernetes.default,kubernetes.default.svc,10.0.0.0/8,10.42.0.0/16,10.43.0.0/16,172.16.0.0/12,192.168.0.0/16,82.156.23.220,74.48.78.17,hyueapi.com,.hyueapi.com" + }, + { + "name": "OPENCODE_CONFIG_CONTENT", + "value": "{\"$schema\":\"https://opencode.ai/config.json\",\"autoupdate\":false,\"share\":\"disabled\",\"model\":\"dsflash-go/deepseek-v4-flash\",\"small_model\":\"dsflash-go/deepseek-v4-flash\",\"provider\":{\"dsflash-go\":{\"npm\":\"@ai-sdk/openai-compatible\",\"name\":\"AgentRun dsflash-go\",\"options\":{\"baseURL\":\"http://127.0.0.1:4097/v1\",\"apiKey\":\"{env:OPENCODE_DSFLASH_GO_API_KEY}\",\"timeout\":600000,\"headerTimeout\":600000,\"chunkTimeout\":300000},\"models\":{\"deepseek-v4-flash\":{\"name\":\"deepseek-v4-flash\",\"reasoning\":false,\"tool_call\":true,\"limit\":{\"context\":1000000,\"output\":384000}}}}}}" + }, + { + "name": "OPENCODE_DSFLASH_GO_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-code-agent-provider", + "key": "opencode-api-key", + "optional": true + } + } + }, + { + "name": "OPENCODE_SERVER_USERNAME", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-opencode-server-auth", + "key": "username" + } + } + }, + { + "name": "OPENCODE_SERVER_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-opencode-server-auth", + "key": "password" + } + } + } + ], + "ports": [ + { + "name": "http", + "containerPort": 4096 + } + ], + "startupProbe": { + "tcpSocket": { + "port": "http" + }, + "periodSeconds": 5, + "failureThreshold": 60 + }, + "readinessProbe": { + "tcpSocket": { + "port": "http" + }, + "periodSeconds": 10, + "failureThreshold": 3 + }, + "livenessProbe": { + "tcpSocket": { + "port": "http" + }, + "periodSeconds": 20, + "failureThreshold": 3 + }, + "resources": { + "requests": { + "cpu": "100m", + "memory": "256Mi" + }, + "limits": { + "cpu": "1", + "memory": "1Gi" + } + }, + "volumeMounts": [ + { + "name": "workspace", + "mountPath": "/workspace" + } + ] + }, + { + "name": "opencode-provider-proxy", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "imagePullPolicy": "IfNotPresent", + "env": [ + { + "name": "HWLAB_SERVICE_ID", + "value": "opencode-provider-proxy" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "PORT", + "value": "4097" + }, + { + "name": "HWLAB_OPENCODE_PROVIDER_PROXY_UPSTREAM_BASE_URL", + "value": "https://opencode.ai/zen/go/v1" + }, + { + "name": "HWLAB_OPENCODE_PROVIDER_PROXY_PUBLIC_BASE_PATH", + "value": "/v1" + }, + { + "name": "HWLAB_OPENCODE_PROVIDER_PROXY_TIMEOUT_MS", + "value": "600000" + }, + { + "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "opencode-provider-proxy" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/opencode-provider-proxy.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-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + } + ], + "ports": [ + { + "name": "provider", + "containerPort": 4097 + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/readiness", + "port": "provider" + }, + "periodSeconds": 10, + "failureThreshold": 3 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "provider" + }, + "periodSeconds": 20, + "failureThreshold": 3 + }, + "resources": { + "requests": { + "cpu": "25m", + "memory": "64Mi" + }, + "limits": { + "cpu": "250m", + "memory": "256Mi" + } + }, + "startupProbe": { + "httpGet": { + "path": "/health/readiness", + "port": "provider" + }, + "periodSeconds": 10, + "failureThreshold": 30, + "timeoutSeconds": 2, + "successThreshold": 1 + } + } + ], + "volumes": [ + { + "name": "workspace", + "persistentVolumeClaim": { + "claimName": "opencode-server-data" + } + } + ] + } + } + } + } + ] +} diff --git a/deploy/gitops/node/jd01/runtime-v03/openfga.yaml b/deploy/gitops/node/jd01/runtime-v03/openfga.yaml index eb3d7efc..3ae03856 100644 --- a/deploy/gitops/node/jd01/runtime-v03/openfga.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/openfga.yaml @@ -16,7 +16,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-openfga", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -37,7 +37,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-openfga", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" @@ -113,7 +113,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-openfga", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -137,7 +137,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-openfga", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" @@ -248,7 +248,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-openfga", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", diff --git a/deploy/gitops/node/jd01/runtime-v03/services.yaml b/deploy/gitops/node/jd01/runtime-v03/services.yaml index 557eef2f..85cae59f 100644 --- a/deploy/gitops/node/jd01/runtime-v03/services.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/services.yaml @@ -1,208 +1,305 @@ -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: fac4b7ead925be576e9611c937de84cf08b38160 - 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-project-management - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-project-management - hwlab.pikastech.local/service-id: hwlab-project-management - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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-project-management - ports: - - name: http - port: 6672 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-workbench-runtime - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-workbench-runtime - hwlab.pikastech.local/service-id: hwlab-workbench-runtime - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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-workbench-runtime - ports: - - name: http - port: 6671 - targetPort: http - - name: metrics - port: 9100 - targetPort: metrics - - apiVersion: v1 - kind: Service - metadata: - name: hwlab-user-billing - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-user-billing - hwlab.pikastech.local/service-id: hwlab-user-billing - hwlab.pikastech.local/gitops-target: v03 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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-user-billing - ports: - - name: http - port: 6670 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - 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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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-project-management", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-project-management", + "hwlab.pikastech.local/service-id": "hwlab-project-management", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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-project-management" + }, + "ports": [ + { + "name": "http", + "port": 6672, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-workbench-runtime", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-workbench-runtime", + "hwlab.pikastech.local/service-id": "hwlab-workbench-runtime", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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-workbench-runtime" + }, + "ports": [ + { + "name": "http", + "port": 6671, + "targetPort": "http" + }, + { + "name": "metrics", + "port": 9100, + "targetPort": "metrics" + } + ] + } + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "hwlab-user-billing", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-user-billing", + "hwlab.pikastech.local/service-id": "hwlab-user-billing", + "hwlab.pikastech.local/gitops-target": "v03", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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-user-billing" + }, + "ports": [ + { + "name": "http", + "port": 6670, + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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/jd01/runtime-v03/workbench-redis.yaml b/deploy/gitops/node/jd01/runtime-v03/workbench-redis.yaml index d843d36c..17aa7cdb 100644 --- a/deploy/gitops/node/jd01/runtime-v03/workbench-redis.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/workbench-redis.yaml @@ -17,7 +17,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-workbench-redis", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -43,7 +43,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-workbench-redis", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -68,7 +68,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-workbench-redis", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -165,7 +165,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-workbench-redis", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", @@ -202,7 +202,7 @@ "hwlab.pikastech.local/gitops-target": "v03", "hwlab.pikastech.local/profile": "v03", "hwlab.pikastech.local/service-id": "hwlab-workbench-redis", - "hwlab.pikastech.local/source-commit": "fac4b7ead925be576e9611c937de84cf08b38160" + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", diff --git a/deploy/gitops/node/jd01/runtime-v03/workloads.yaml b/deploy/gitops/node/jd01/runtime-v03/workloads.yaml index 27ceb868..2a1c46c2 100644 --- a/deploy/gitops/node/jd01/runtime-v03/workloads.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/workloads.yaml @@ -1,1768 +1,3450 @@ -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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-project-management - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-project-management - hwlab.pikastech.local/service-id: hwlab-project-management - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-project-management - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-project-management - hwlab.pikastech.local/service-id: hwlab-project-management - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-project-management.sh - hwlab.pikastech.local/environment-digest: sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0 - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - hwlab.pikastech.local/code-input-hash: 4cbd4e24c3020037d215271ed248ac38d5a1c385855443ffe5c112b1a04118f6 - spec: - containers: - - name: hwlab-project-management - image: 127.0.0.1:5000/hwlab/hwlab-project-management-env@sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0 - ports: - - name: http - containerPort: 6672 - env: - - name: HWLAB_PROJECT_MANAGEMENT_PORT - value: "6672" - - name: TZ - value: Asia/Shanghai - - name: HWLAB_PROJECT_MANAGEMENT_DB_URL - valueFrom: - secretKeyRef: - name: hwlab-cloud-api-v03-db - key: database-url - optional: true - - name: HWLAB_PROJECT_MANAGEMENT_DB_CONNECT_TIMEOUT_MS - value: "5000" - - name: HWLAB_PROJECT_MANAGEMENT_SOURCE_ROOT - value: /workspace/hwlab-boot/repo - - name: HWLAB_PROJECT_MANAGEMENT_SOURCE_ID - value: hwlab-v03-mdtodo - - name: HWLAB_PROJECT_MANAGEMENT_SOURCE_NAME - value: HWLAB v0.3 MDTODO - - name: HWLAB_PROJECT_MANAGEMENT_PROJECT_ID - value: project_hwlab_v03 - - name: HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_DEFAULT_LIMIT - value: "200" - - name: HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_MAX_LIMIT - value: "500" - - name: HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_URL - value: http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667/v1/hwpod-node-ops - - name: HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-master-server-admin-api-key - key: api-key - optional: true - - name: HWLAB_PROJECT_MANAGEMENT_BOOTSTRAP_SOURCES_PATH - value: /etc/hwlab/project-management/sources.json - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-project-management - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-project-management-env@sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-project-management.sh - - name: HWLAB_BOOT_READ_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-project-management-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: 4cbd4e24c3020037d215271ed248ac38d5a1c385855443ffe5c112b1a04118f6 - - name: HWLAB_IMAGE_DIGEST - value: sha256:332dea181f595229f0f0a8325cfa14f0cd976c35eb7b3f28b75fa33cd25540e0 - readinessProbe: - httpGet: - path: /health/ready - port: http - timeoutSeconds: 10 - failureThreshold: 5 - livenessProbe: - httpGet: - path: /health/live - port: http - timeoutSeconds: 5 - failureThreshold: 6 - imagePullPolicy: IfNotPresent - volumeMounts: - - name: project-management-bootstrap - mountPath: /etc/hwlab/project-management - readOnly: true - startupProbe: - httpGet: - path: /health/ready - port: http - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 30 - successThreshold: 1 - volumes: - - name: project-management-bootstrap - configMap: - name: hwlab-v03-project-management-bootstrap - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-workbench-runtime - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-workbench-runtime - hwlab.pikastech.local/service-id: hwlab-workbench-runtime - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-workbench-runtime - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-workbench-runtime - hwlab.pikastech.local/service-id: hwlab-workbench-runtime - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-workbench-runtime.sh - hwlab.pikastech.local/environment-digest: sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10 - hwlab.pikastech.local/environment-input-hash: a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af - hwlab.pikastech.local/code-input-hash: 2db125ce4bebccf3c3e95b50291559144cf647eb905628d59ebebc17c65e2c8b - spec: - containers: - - name: hwlab-workbench-runtime - image: 127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env@sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10 - ports: - - name: http - containerPort: 6671 - env: - - name: HWLAB_WORKBENCH_RUNTIME_PORT - value: "6671" - - name: TZ - value: Asia/Shanghai - - name: HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_MAX_ATTEMPTS - value: "1" - - name: HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_ATTEMPT_TIMEOUT_MS - value: "10000" - - name: HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_BACKOFF_MS - value: "0" - - name: HWLAB_WORKBENCH_RUNTIME_DB_POOL_MAX - value: "16" - - name: HWLAB_WORKBENCH_RUNTIME_QUERY_TIMEOUT_MS - value: "10000" - - name: HWLAB_WORKBENCH_RUNTIME_READY_TIMEOUT_MS - value: "10000" - - name: HWLAB_WORKBENCH_CACHE_REDIS_ENABLED - value: "1" - - name: HWLAB_WORKBENCH_CACHE_REDIS_NAMESPACE - value: hwlab-v03 - - name: HWLAB_WORKBENCH_CACHE_REDIS_SERVICE_NAME - value: hwlab-workbench-redis - - name: HWLAB_WORKBENCH_CACHE_REDIS_PORT - value: "6379" - - name: HWLAB_WORKBENCH_CACHE_REDIS_URL - value: redis://hwlab-workbench-redis.hwlab-v03.svc.cluster.local:6379/0 - - name: HWLAB_WORKBENCH_CACHE_REDIS_TTL_SESSIONS_SUMMARY_MS - value: "30000" - - name: HWLAB_WORKBENCH_CACHE_REDIS_TTL_TERMINAL_TURN_MS - value: "300000" - - name: HWLAB_WORKBENCH_CACHE_REDIS_TTL_TERMINAL_TRACE_PAGE_MS - value: "300000" - - name: HWLAB_WORKBENCH_CACHE_REDIS_TTL_RUNNING_PAGE_MS - value: "5000" - - name: HWLAB_WORKBENCH_CACHE_REDIS_MAX_KEY_BYTES - value: "512" - - name: HWLAB_WORKBENCH_CACHE_REDIS_MAX_PAYLOAD_BYTES - value: "262144" - - name: HWLAB_WORKBENCH_CACHE_REDIS_CONNECT_TIMEOUT_MS - value: "200" - - name: HWLAB_WORKBENCH_CACHE_REDIS_OPERATION_TIMEOUT_MS - value: "100" - - name: HWLAB_WORKBENCH_CACHE_REDIS_METRICS_LABELS - value: '{"lane":"v03","service":"hwlab-workbench-runtime","cacheKeyClass":"workbench-derived-read"}' - - name: HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_LIVENESS_FAILURE - value: "0" - - name: HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_READ_MODE - value: db-or-degraded - - name: HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_FALLBACK_STATE_SOURCE - value: "0" - - name: HWLAB_WORKBENCH_RUNTIME_DB_URL - valueFrom: - secretKeyRef: - name: hwlab-cloud-api-v03-db - key: database-url - optional: true - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-workbench-runtime - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env@sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10 - - name: HWLAB_IMAGE_TAG - value: env-a7047ddc77f2 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-workbench-runtime.sh - - name: HWLAB_BOOT_READ_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env:env-a7047ddc77f2 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af - - name: HWLAB_CODE_INPUT_HASH - value: 2db125ce4bebccf3c3e95b50291559144cf647eb905628d59ebebc17c65e2c8b - - name: HWLAB_IMAGE_DIGEST - value: sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10 - readinessProbe: - httpGet: - path: /health/ready - port: http - timeoutSeconds: 10 - failureThreshold: 5 - livenessProbe: - httpGet: - path: /health/live - port: http - timeoutSeconds: 5 - failureThreshold: 6 - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/ready - port: http - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 30 - successThreshold: 1 - volumes: [] - - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - spec: - replicas: 1 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-cloud-api.sh - hwlab.pikastech.local/environment-digest: sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - hwlab.pikastech.local/code-input-hash: e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1 - spec: - initContainers: [] - containers: - - name: hwlab-cloud-api - image: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - ports: - - name: http - containerPort: 6667 - env: - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_PUBLIC_ENDPOINT - value: https://hwlab.pikapython.com - - name: HWLAB_CLOUD_API_PORT - value: "6667" - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - 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: dsflash-go - - 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: TZ - value: Asia/Shanghai - - name: HWLAB_METRICS_NAMESPACE - value: hwlab-v03 - - name: HWLAB_OBSERVABILITY_CONFIG_REVISION - value: PJ2026-01060505-20260619-long-trace-timeout-mitigation - - name: HWLAB_CODE_AGENT_TURN_STATUS_REFRESH_TIMEOUT_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_NO_RESPONSE_TIMEOUT_MS - value: "600000" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX - value: "5" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_BASE_MS - value: "1000" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX_DELAY_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_SYNC_POLL_INTERVAL_MS - value: "1000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_ENABLED - value: "1" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INITIAL_DELAY_MS - value: "5000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INTERVAL_MS - value: "60000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_MIN_AGE_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_BATCH_SIZE - value: "100" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_JITTER_MS - value: "15000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_FAILURE_BACKOFF_MS - value: "120000" - - name: HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-bootstrap-admin - key: password-hash - optional: true - - name: HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-preset-users - key: huiggao-password-hash - optional: true - - name: HWLAB_ACCESS_CONTROL_USERS_JSON - value: '[{"id":"usr_v03_admin","username":"admin","displayName":"HWLAB v0.3 - Admin","email":null,"role":"admin","status":"active","navProfile":"admin-full","passwordHashEnv":"HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH"},{"id":"usr_v03_huiggao","username":"huiggao@163.com","displayName":"huiggao@163.com","email":"huiggao@163.com","role":"user","status":"active","navProfile":"code-mdtodo-only","passwordHashEnv":"HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH"}]' - - name: HWLAB_ACCESS_CONTROL_NAV_PROFILES_JSON - value: '[{"id":"admin-full","displayName":"Admin full - access","allowedIds":["*"]},{"id":"code-mdtodo-only","displayName":"Code - and MDTODO - only","allowedIds":["workbench.code","project.mdtodo"]}]' - - name: HWLAB_CLOUD_DB_POOL_MAX - value: "16" - - name: HWLAB_CLOUD_DB_PROBE_TIMEOUT_MS - value: "5000" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_MAX_ATTEMPTS - value: "5" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_INITIAL_DELAY_MS - value: "250" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_MAX_DELAY_MS - value: "5000" - - name: HWLAB_WORKBENCH_RUNTIME_TIMEOUT_MS - value: "3000" - - name: HWLAB_WORKBENCH_FACTS_QUERY_MAX_ATTEMPTS - value: "1" - - name: HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_BASE_MS - value: "0" - - name: HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_MAX_MS - value: "1" - - name: HWLAB_ACCESS_CONTROL_REQUIRED - value: "1" - - name: HWLAB_SESSION_COOKIE_DOMAIN - value: .pikapython.com - - name: HWLAB_SESSION_COOKIE_SAMESITE - value: None - - 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_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_USER_BILLING_URL - value: http://hwlab-user-billing.hwlab-v03.svc.cluster.local:6670 - - name: HWLAB_WORKBENCH_RUNTIME_URL - value: http://hwlab-workbench-runtime.hwlab-v03.svc.cluster.local:6671 - - name: HWLAB_PROJECT_MANAGEMENT_URL - value: http://hwlab-project-management.hwlab-v03.svc.cluster.local:6672 - - name: HWLAB_HWPOD_SPEC_REGISTRY_DIRS - value: /etc/hwlab/hwpod-specs - - name: HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS - value: "2" - - name: HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS - value: "250" - - name: HWLAB_USER_BILLING_CODE_AGENT_ENABLED - value: "1" - - name: HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS - value: "1" - - name: HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS - value: "1" - - 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-v02 - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-cloud-api - - name: AGENTRUN_MGR_URL - value: http://agentrun-mgr.agentrun-v02.svc.cluster.local:8080 - - name: AGENTRUN_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-master-server-admin-api-key - key: api-key - - name: HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE - value: agentrun-v02 - - name: HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE - value: agentrun-v02 - - name: HWLAB_CODE_AGENT_AGENTRUN_REPO_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_ENABLED - value: "1" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_TTL_MS - value: "600000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_INTERVAL_MS - value: "60000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_INITIAL_DELAY_MS - value: "5000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_BATCH_SIZE - value: "100" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_JITTER_MS - value: "15000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_FAILURE_BACKOFF_MS - value: "120000" - - name: HWLAB_SECRET_PLANE_SMOKE - valueFrom: - secretKeyRef: - name: hwlab-secret-plane-smoke - key: password - optional: true - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1 - - name: HWLAB_IMAGE_DIGEST - value: sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_WORKBENCH_SSE_DRAIN_TIMEOUT_MS - value: "2500" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID - value: JD01 - - 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 - - name: HWLAB_CODE_AGENT_CODEX_STDIO_SUPERVISOR - value: repo-owned - readinessProbe: - httpGet: - path: /health/live - port: http - timeoutSeconds: 3 - failureThreshold: 5 - livenessProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 20 - timeoutSeconds: 5 - failureThreshold: 6 - volumeMounts: - - name: hwlab-user-skills - mountPath: /data/user-skills - - name: hwpod-preinstalled-specs - mountPath: /etc/hwlab/hwpod-specs - readOnly: true - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 3 - failureThreshold: 30 - successThreshold: 1 - lifecycle: - preStop: - exec: - command: - - sh - - -c - - "port=\"${PORT:-${HWLAB_PORT:-${HWLAB_CLOUD_API_PORT:-6\ - 667}}}\"; - url=\"http://127.0.0.1:${port}/v1/internal/workbench/dr\ - ain\"; /usr/local/bin/bun -e 'const [url, hostname] = - process.argv.slice(2); await fetch(url, { method: - \"POST\", headers: { \"x-hwlab-drain-hostname\": - hostname || \"\" } }).catch(() => {});' \"$url\" - \"${HOSTNAME:-}\" >/dev/null 2>&1 || true; sleep 3" - - name: hwlab-codex-api-forwarder - image: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - 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://hwlab.pikapython.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: 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: TZ - value: Asia/Shanghai - - name: HWLAB_METRICS_NAMESPACE - value: hwlab-v03 - - name: HWLAB_OBSERVABILITY_CONFIG_REVISION - value: PJ2026-01060505-20260619-long-trace-timeout-mitigation - - name: HWLAB_CODE_AGENT_TURN_STATUS_REFRESH_TIMEOUT_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_NO_RESPONSE_TIMEOUT_MS - value: "600000" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX - value: "5" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_BASE_MS - value: "1000" - - name: HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX_DELAY_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_SYNC_POLL_INTERVAL_MS - value: "1000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_ENABLED - value: "1" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INITIAL_DELAY_MS - value: "5000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INTERVAL_MS - value: "60000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_MIN_AGE_MS - value: "30000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_BATCH_SIZE - value: "100" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_JITTER_MS - value: "15000" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_FAILURE_BACKOFF_MS - value: "120000" - - name: HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-bootstrap-admin - key: password-hash - optional: true - - name: HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH - valueFrom: - secretKeyRef: - name: hwlab-v03-preset-users - key: huiggao-password-hash - optional: true - - name: HWLAB_ACCESS_CONTROL_USERS_JSON - value: '[{"id":"usr_v03_admin","username":"admin","displayName":"HWLAB v0.3 - Admin","email":null,"role":"admin","status":"active","navProfile":"admin-full","passwordHashEnv":"HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH"},{"id":"usr_v03_huiggao","username":"huiggao@163.com","displayName":"huiggao@163.com","email":"huiggao@163.com","role":"user","status":"active","navProfile":"code-mdtodo-only","passwordHashEnv":"HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH"}]' - - name: HWLAB_ACCESS_CONTROL_NAV_PROFILES_JSON - value: '[{"id":"admin-full","displayName":"Admin full - access","allowedIds":["*"]},{"id":"code-mdtodo-only","displayName":"Code - and MDTODO - only","allowedIds":["workbench.code","project.mdtodo"]}]' - - name: HWLAB_CLOUD_DB_POOL_MAX - value: "16" - - name: HWLAB_CLOUD_DB_PROBE_TIMEOUT_MS - value: "5000" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_MAX_ATTEMPTS - value: "5" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_INITIAL_DELAY_MS - value: "250" - - name: HWLAB_CLOUD_DB_QUERY_RETRY_MAX_DELAY_MS - value: "5000" - - name: HWLAB_WORKBENCH_RUNTIME_TIMEOUT_MS - value: "3000" - - name: HWLAB_WORKBENCH_FACTS_QUERY_MAX_ATTEMPTS - value: "1" - - name: HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_BASE_MS - value: "0" - - name: HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_MAX_MS - value: "1" - - name: HWLAB_ACCESS_CONTROL_REQUIRED - value: "1" - - name: HWLAB_SESSION_COOKIE_DOMAIN - value: .pikapython.com - - name: HWLAB_SESSION_COOKIE_SAMESITE - value: None - - 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_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_USER_BILLING_URL - value: http://hwlab-user-billing.hwlab-v03.svc.cluster.local:6670 - - name: HWLAB_WORKBENCH_RUNTIME_URL - value: http://hwlab-workbench-runtime.hwlab-v03.svc.cluster.local:6671 - - name: HWLAB_PROJECT_MANAGEMENT_URL - value: http://hwlab-project-management.hwlab-v03.svc.cluster.local:6672 - - name: HWLAB_HWPOD_SPEC_REGISTRY_DIRS - value: /etc/hwlab/hwpod-specs - - name: HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS - value: "2" - - name: HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS - value: "250" - - name: HWLAB_USER_BILLING_CODE_AGENT_ENABLED - value: "1" - - name: HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS - value: "1" - - name: HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS - value: "1" - - 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: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-cloud-api - - name: AGENTRUN_MGR_URL - value: http://agentrun-mgr.agentrun-v02.svc.cluster.local:8080 - - name: AGENTRUN_API_KEY - valueFrom: - secretKeyRef: - name: hwlab-v03-master-server-admin-api-key - key: api-key - optional: true - - name: HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE - value: agentrun-v02 - - name: HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE - value: agentrun-v02 - - name: HWLAB_CODE_AGENT_AGENTRUN_REPO_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_ENABLED - value: "1" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_TTL_MS - value: "600000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_INTERVAL_MS - value: "60000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_INITIAL_DELAY_MS - value: "5000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_BATCH_SIZE - value: "100" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_JITTER_MS - value: "15000" - - name: HWLAB_WORKBENCH_EMPTY_SESSION_GC_FAILURE_BACKOFF_MS - value: "120000" - - name: HWLAB_SECRET_PLANE_SMOKE - valueFrom: - secretKeyRef: - name: hwlab-secret-plane-smoke - key: password - optional: true - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env@sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-api-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1 - - name: HWLAB_IMAGE_DIGEST - value: sha256:88f2b661b147e52f0e972b69c96ca61b1ebfb1fc1e88804d1f87657bcda0c9c5 - - name: HWLAB_WORKBENCH_SSE_DRAIN_TIMEOUT_MS - value: "2500" - - name: HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID - value: JD01 - - 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: - - name: hwpod-preinstalled-specs - mountPath: /etc/hwlab/hwpod-specs - readOnly: true - 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 - lifecycle: - preStop: - exec: - command: - - sh - - -c - - "port=\"${PORT:-${HWLAB_PORT:-${HWLAB_CLOUD_API_PORT:-6\ - 667}}}\"; - url=\"http://127.0.0.1:${port}/v1/internal/workbench/dr\ - ain\"; /usr/local/bin/bun -e 'const [url, hostname] = - process.argv.slice(2); await fetch(url, { method: - \"POST\", headers: { \"x-hwlab-drain-hostname\": - hostname || \"\" } }).catch(() => {});' \"$url\" - \"${HOSTNAME:-}\" >/dev/null 2>&1 || true; sleep 3" - volumes: - - name: hwlab-user-skills - persistentVolumeClaim: - claimName: hwlab-user-skills - - name: hwpod-preinstalled-specs - configMap: - name: hwlab-v03-hwpod-preinstalled-specs - - apiVersion: apps/v1 - kind: Deployment - metadata: - name: hwlab-user-billing - namespace: hwlab-v03 - labels: - app.kubernetes.io/name: hwlab-user-billing - hwlab.pikastech.local/service-id: hwlab-user-billing - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: hwlab-user-billing - app.kubernetes.io/part-of: hwlab - hwlab.pikastech.local/environment: v03 - hwlab.pikastech.local/profile: v03 - template: - metadata: - labels: - app.kubernetes.io/name: hwlab-user-billing - hwlab.pikastech.local/service-id: hwlab-user-billing - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-user-billing.sh - hwlab.pikastech.local/environment-digest: sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6 - hwlab.pikastech.local/environment-input-hash: a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af - hwlab.pikastech.local/code-input-hash: 1c7f8090dc17d9a7dfc7cdd0714e7294bb231db899c396b388e4ab3642e5134e - spec: - containers: - - name: hwlab-user-billing - image: 127.0.0.1:5000/hwlab/hwlab-user-billing-env@sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6 - ports: - - name: http - containerPort: 6670 - env: - - name: HWLAB_USER_BILLING_PORT - value: "6670" - - name: HWLAB_USER_BILLING_STATE_AUTHORITY - value: pk01-postgres - - name: HWLAB_USER_BILLING_STATELESS - value: "true" - - name: TZ - value: Asia/Shanghai - - name: HWLAB_USER_BILLING_DB_URL - valueFrom: - secretKeyRef: - name: hwlab-cloud-api-v03-db - key: database-url - optional: true - - name: HWLAB_USER_BILLING_DB_POOL_MAX - value: "2" - - name: HWLAB_USER_BILLING_MIGRATION_TIMEOUT_SECONDS - value: "180" - - name: HWLAB_USER_BILLING_BOOTSTRAP_TIMEOUT_SECONDS - value: "60" - - 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_USER_BILLING_EXTERNAL_DB_LABEL - value: pk01-external-postgres - - name: HWLAB_USER_BILLING_REGISTRATION_ENABLED - value: "1" - - name: HWLAB_USER_BILLING_INITIAL_CREDITS - value: "0" - - name: HWLAB_USER_BILLING_CREDIT_PER_1K_TOKENS - value: "1" - - name: HWLAB_USER_BILLING_MIGRATE_ON_START - value: "1" - - name: HWLAB_USER_BILLING_REDIS_URL - value: redis://hwlab-user-billing-redis.hwlab-v03.svc.cluster.local:6379/0 - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-user-billing - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-user-billing-env@sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6 - - name: HWLAB_IMAGE_TAG - value: env-a7047ddc77f2 - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_BOOT_REF - value: v0.3 - - name: HWLAB_BOOT_SH - value: deploy/runtime/boot/hwlab-user-billing.sh - - name: HWLAB_BOOT_READ_URL - value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-user-billing-env:env-a7047ddc77f2 - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: a7047ddc77f222c2e30538f1cb41444c31c904976c6bb0181a25a50a936af3af - - name: HWLAB_CODE_INPUT_HASH - value: 1c7f8090dc17d9a7dfc7cdd0714e7294bb231db899c396b388e4ab3642e5134e - - name: HWLAB_IMAGE_DIGEST - value: sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6 - readinessProbe: - httpGet: - path: /health/ready - port: http - timeoutSeconds: 10 - failureThreshold: 5 - livenessProbe: - httpGet: - path: /health/live - port: http - timeoutSeconds: 5 - failureThreshold: 6 - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/ready - port: http - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 30 - successThreshold: 1 - volumes: [] - - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-cloud-web.sh - hwlab.pikastech.local/environment-digest: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - hwlab.pikastech.local/code-input-hash: a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780 - spec: - containers: - - name: hwlab-cloud-web - image: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env@sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_CLOUD_WEB_DISPLAY_TIME_ZONE - value: Asia/Shanghai - - name: HWLAB_CLOUD_WEB_DISPLAY_TIME_LOCALE - value: zh-CN - - name: HWLAB_CLOUD_WEB_DISPLAY_TIME_LABEL - value: 北京时间 - - name: HWLAB_CLOUD_WEB_OPENCODE_UPSTREAM_URL - value: http://opencode-server.hwlab-v03.svc.cluster.local:4096 - - name: HWLAB_CLOUD_WEB_OPENCODE_USERNAME - valueFrom: - secretKeyRef: - name: hwlab-v03-opencode-server-auth - key: username - optional: true - - name: HWLAB_CLOUD_WEB_OPENCODE_PASSWORD - valueFrom: - secretKeyRef: - name: hwlab-v03-opencode-server-auth - key: password - optional: true - - name: HWLAB_CLOUD_WEB_OPENCODE_DEFAULT_PROJECT - value: /workspace - - name: HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_FROM - value: /workspace - - name: HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_TO - value: / - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces - - name: OTEL_SERVICE_NAME - value: hwlab-cloud-web - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-cloud-web-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780 - - name: HWLAB_IMAGE_DIGEST - value: sha256:ad197f8d50a4876f2139e137f3441c4291d012ed14ad2480e33f12170f5a3642 - - name: HWLAB_PUBLIC_ENDPOINT - value: https://hwlab.pikapython.com - - name: HWLAB_WORKBENCH_TRACE_AUTO_EXPAND_RUNNING - value: "0" - - name: HWLAB_WORKBENCH_TRACE_AUTO_COLLAPSE_TERMINAL - value: "0" - - name: HWLAB_CLOUD_WEB_OPENCODE_URL - value: https://opencode-jd01-v03.pikapython.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 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-gateway.sh - hwlab.pikastech.local/environment-digest: sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - hwlab.pikastech.local/code-input-hash: 25f753b252593891ed7b03b53a69d266e7a324728cf83fea8654bab4196fa399 - spec: - containers: - - name: hwlab-gateway - image: 127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f - ports: - - name: http - containerPort: 7001 - env: - - name: HWLAB_GATEWAY_MODE - value: hardware-boundary - - name: HWLAB_ENVIRONMENT - value: v03 - - name: TZ - value: Asia/Shanghai - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-gateway-env@sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-gateway-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: 25f753b252593891ed7b03b53a69d266e7a324728cf83fea8654bab4196fa399 - - name: HWLAB_IMAGE_DIGEST - value: sha256:46ebf16ad9c17e4c1239203e1742a96f6562bde621925f88ebbdeeffec68fa8f - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-edge-proxy.sh - hwlab.pikastech.local/environment-digest: sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2 - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - hwlab.pikastech.local/code-input-hash: c97d19939c872e128a6931bdf73f28a75a684948a76a2b1af37508dd47481544 - spec: - containers: - - name: hwlab-edge-proxy - image: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2 - 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_EDGE_IDLE_TIMEOUT_SECONDS - value: "120" - - name: TZ - value: Asia/Shanghai - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env@sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-edge-proxy-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: c97d19939c872e128a6931bdf73f28a75a684948a76a2b1af37508dd47481544 - - name: HWLAB_IMAGE_DIGEST - value: sha256:0480a63b9a7ae49114c828f2873505af79e9c43f6d35211865427ccae8f30dd2 - - name: HWLAB_PUBLIC_ENDPOINT - value: https://hwlab.pikapython.com - readinessProbe: - httpGet: - path: /health - port: http - timeoutSeconds: 3 - failureThreshold: 5 - livenessProbe: - httpGet: - path: /health - port: http - periodSeconds: 20 - timeoutSeconds: 5 - failureThreshold: 6 - imagePullPolicy: IfNotPresent - startupProbe: - httpGet: - path: /health/live - port: http - periodSeconds: 10 - timeoutSeconds: 3 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - unidesk.ai/node-staging: "false" - hwlab.pikastech.local/monitoring: disabled - annotations: - hwlab.pikastech.local/gitops-note: node DEV GitOps target. - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/monitoring: disabled - hwlab.pikastech.local/runtime-mode: env-reuse-git-mirror-checkout - hwlab.pikastech.local/boot-commit: fac4b7ead925be576e9611c937de84cf08b38160 - annotations: - hwlab.pikastech.local/gitops-render-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/artifact-source-commit: fac4b7ead925be576e9611c937de84cf08b38160 - 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: fac4b7ead925be576e9611c937de84cf08b38160 - hwlab.pikastech.local/boot-sh: deploy/runtime/boot/hwlab-agent-skills.sh - hwlab.pikastech.local/environment-digest: sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0 - hwlab.pikastech.local/environment-input-hash: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - 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:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0 - ports: - - name: http - containerPort: 7430 - env: - - name: HWLAB_SKILLS_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: TZ - value: Asia/Shanghai - - name: HWLAB_ENVIRONMENT - value: v03 - - name: HWLAB_COMMIT_ID - value: fac4b7ead925be576e9611c937de84cf08b38160 - - name: HWLAB_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-agent-skills-env@sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0 - - name: HWLAB_IMAGE_TAG - value: env-efd2e5a6509c - - name: HWLAB_GITOPS_TARGET - value: v03 - - name: HWLAB_GITOPS_PROFILE - value: v03 - - name: HWLAB_GITOPS_SOURCE_COMMIT - value: fac4b7ead925be576e9611c937de84cf08b38160 - - 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: fac4b7ead925be576e9611c937de84cf08b38160 - - 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://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git - - name: HWLAB_ENVIRONMENT_IMAGE - value: 127.0.0.1:5000/hwlab/hwlab-agent-skills-env:env-efd2e5a6509c - - name: HWLAB_ENVIRONMENT_DIGEST - value: sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0 - - name: HWLAB_ENVIRONMENT_INPUT_HASH - value: efd2e5a6509c6bb8e7fae81804be1bfa4b9fee5c041004a4207dcbb40bddc26f - - name: HWLAB_CODE_INPUT_HASH - value: 369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a - - name: HWLAB_IMAGE_DIGEST - value: sha256:27b68491fcc925592f867bd3c6f2eb0778f811f32873d96aa8a34367d2a2c4f0 - 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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "spec": { + "accessModes": [ + "ReadWriteOnce" + ], + "resources": { + "requests": { + "storage": "2Gi" + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-project-management", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-project-management", + "hwlab.pikastech.local/service-id": "hwlab-project-management", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-project-management", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-project-management", + "hwlab.pikastech.local/service-id": "hwlab-project-management", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-project-management.sh", + "hwlab.pikastech.local/environment-digest": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "4cbd4e24c3020037d215271ed248ac38d5a1c385855443ffe5c112b1a04118f6" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-project-management", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf", + "ports": [ + { + "name": "http", + "containerPort": 6672 + } + ], + "env": [ + { + "name": "HWLAB_PROJECT_MANAGEMENT_PORT", + "value": "6672" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_DB_URL", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-api-v03-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_DB_CONNECT_TIMEOUT_MS", + "value": "5000" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_SOURCE_ROOT", + "value": "/workspace/hwlab-boot/repo" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_SOURCE_ID", + "value": "hwlab-v03-mdtodo" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_SOURCE_NAME", + "value": "HWLAB v0.3 MDTODO" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_PROJECT_ID", + "value": "project_hwlab_v03" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_DEFAULT_LIMIT", + "value": "200" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_MDTODO_TASK_MAX_LIMIT", + "value": "500" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_URL", + "value": "http://hwlab-cloud-api.hwlab-v03.svc.cluster.local:6667/v1/hwpod-node-ops" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_HWPOD_NODE_OPS_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-master-server-admin-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_BOOTSTRAP_SOURCES_PATH", + "value": "/etc/hwlab/project-management/sources.json" + }, + { + "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-project-management" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-project-management.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-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "4cbd4e24c3020037d215271ed248ac38d5a1c385855443ffe5c112b1a04118f6" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:c638efb6f3559e015da9fea0870a0c5cd8603622820045742e710d33e10e9fdf" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "timeoutSeconds": 10, + "failureThreshold": 5 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "timeoutSeconds": 5, + "failureThreshold": 6 + }, + "imagePullPolicy": "IfNotPresent", + "volumeMounts": [ + { + "name": "project-management-bootstrap", + "mountPath": "/etc/hwlab/project-management", + "readOnly": true + } + ], + "startupProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 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-project-management" + }, + { + "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:6672/health/ready" + }, + { + "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" + } + }, + { + "name": "project-management-bootstrap", + "configMap": { + "name": "hwlab-v03-project-management-bootstrap" + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-workbench-runtime", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-workbench-runtime", + "hwlab.pikastech.local/service-id": "hwlab-workbench-runtime", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-workbench-runtime", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-workbench-runtime", + "hwlab.pikastech.local/service-id": "hwlab-workbench-runtime", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-workbench-runtime.sh", + "hwlab.pikastech.local/environment-digest": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10", + "hwlab.pikastech.local/environment-input-hash": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2", + "hwlab.pikastech.local/code-input-hash": "2db125ce4bebccf3c3e95b50291559144cf647eb905628d59ebebc17c65e2c8b" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-workbench-runtime", + "image": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env@sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10", + "ports": [ + { + "name": "http", + "containerPort": 6671 + } + ], + "env": [ + { + "name": "HWLAB_WORKBENCH_RUNTIME_PORT", + "value": "6671" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_MAX_ATTEMPTS", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_ATTEMPT_TIMEOUT_MS", + "value": "10000" + }, + { + "name": "HWLAB_WORKBENCH_SESSIONS_SUMMARY_QUERY_BACKOFF_MS", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_DB_POOL_MAX", + "value": "16" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_QUERY_TIMEOUT_MS", + "value": "10000" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_READY_TIMEOUT_MS", + "value": "10000" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_SERVICE_NAME", + "value": "hwlab-workbench-redis" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_PORT", + "value": "6379" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_URL", + "value": "redis://hwlab-workbench-redis.hwlab-v03.svc.cluster.local:6379/0" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_TTL_SESSIONS_SUMMARY_MS", + "value": "30000" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_TTL_TERMINAL_TURN_MS", + "value": "300000" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_TTL_TERMINAL_TRACE_PAGE_MS", + "value": "300000" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_TTL_RUNNING_PAGE_MS", + "value": "5000" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_MAX_KEY_BYTES", + "value": "512" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_MAX_PAYLOAD_BYTES", + "value": "262144" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_CONNECT_TIMEOUT_MS", + "value": "200" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_OPERATION_TIMEOUT_MS", + "value": "100" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_METRICS_LABELS", + "value": "{\"lane\":\"v03\",\"service\":\"hwlab-workbench-runtime\",\"cacheKeyClass\":\"workbench-derived-read\"}" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_LIVENESS_FAILURE", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_READ_MODE", + "value": "db-or-degraded" + }, + { + "name": "HWLAB_WORKBENCH_CACHE_REDIS_UNAVAILABLE_FALLBACK_STATE_SOURCE", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_DB_URL", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-api-v03-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-workbench-runtime" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-workbench-runtime-env@sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9115558e9e2c" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-workbench-runtime.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-workbench-runtime-env:env-9115558e9e2c" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "2db125ce4bebccf3c3e95b50291559144cf647eb905628d59ebebc17c65e2c8b" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:6627afec4c746d85a6499d594552775936bd09a9a4cef5adf643c187eb03aa10" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "timeoutSeconds": 10, + "failureThreshold": 5 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "timeoutSeconds": 5, + "failureThreshold": 6 + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 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-workbench-runtime" + }, + { + "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:6671/health/ready" + }, + { + "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-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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "spec": { + "replicas": 1, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-cloud-api.sh", + "hwlab.pikastech.local/environment-digest": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1" + } + }, + "spec": { + "initContainers": [], + "containers": [ + { + "name": "hwlab-cloud-api", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", + "ports": [ + { + "name": "http", + "containerPort": 6667 + } + ], + "env": [ + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab-v03.74-48-78-17.nip.io" + }, + { + "name": "HWLAB_CLOUD_API_PORT", + "value": "6667" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "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": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_OBSERVABILITY_CONFIG_REVISION", + "value": "PJ2026-01060505-20260619-long-trace-timeout-mitigation" + }, + { + "name": "HWLAB_CODE_AGENT_TURN_STATUS_REFRESH_TIMEOUT_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_NO_RESPONSE_TIMEOUT_MS", + "value": "600000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX", + "value": "5" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_BASE_MS", + "value": "1000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX_DELAY_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_SYNC_POLL_INTERVAL_MS", + "value": "1000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INITIAL_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INTERVAL_MS", + "value": "60000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_MIN_AGE_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_BATCH_SIZE", + "value": "100" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_JITTER_MS", + "value": "15000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_FAILURE_BACKOFF_MS", + "value": "120000" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-bootstrap-admin", + "key": "password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-preset-users", + "key": "huiggao-password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_ACCESS_CONTROL_USERS_JSON", + "value": "[{\"id\":\"usr_v03_admin\",\"username\":\"admin\",\"displayName\":\"HWLAB v0.3 Admin\",\"email\":null,\"role\":\"admin\",\"status\":\"active\",\"navProfile\":\"admin-full\",\"passwordHashEnv\":\"HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH\"},{\"id\":\"usr_v03_huiggao\",\"username\":\"huiggao@163.com\",\"displayName\":\"huiggao@163.com\",\"email\":\"huiggao@163.com\",\"role\":\"user\",\"status\":\"active\",\"navProfile\":\"code-mdtodo-only\",\"passwordHashEnv\":\"HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH\"}]" + }, + { + "name": "HWLAB_ACCESS_CONTROL_NAV_PROFILES_JSON", + "value": "[{\"id\":\"admin-full\",\"displayName\":\"Admin full access\",\"allowedIds\":[\"*\"]},{\"id\":\"code-mdtodo-only\",\"displayName\":\"Code and MDTODO only\",\"allowedIds\":[\"workbench.code\",\"project.mdtodo\"]}]" + }, + { + "name": "HWLAB_CLOUD_DB_POOL_MAX", + "value": "4" + }, + { + "name": "HWLAB_CLOUD_DB_PROBE_TIMEOUT_MS", + "value": "5000" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_TIMEOUT_MS", + "value": "3000" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_MAX_ATTEMPTS", + "value": "5" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_INITIAL_DELAY_MS", + "value": "250" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_MAX_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_TIMEOUT_MS", + "value": "3000" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_MAX_ATTEMPTS", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_BASE_MS", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_MAX_MS", + "value": "1" + }, + { + "name": "HWLAB_ACCESS_CONTROL_REQUIRED", + "value": "1" + }, + { + "name": "HWLAB_SESSION_COOKIE_DOMAIN", + "value": ".pikapython.com" + }, + { + "name": "HWLAB_SESSION_COOKIE_SAMESITE", + "value": "None" + }, + { + "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_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_USER_BILLING_URL", + "value": "http://hwlab-user-billing.hwlab-v03.svc.cluster.local:6670" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_URL", + "value": "http://hwlab-workbench-runtime.hwlab-v03.svc.cluster.local:6671" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_URL", + "value": "http://hwlab-project-management.hwlab-v03.svc.cluster.local:6672" + }, + { + "name": "HWLAB_HWPOD_SPEC_REGISTRY_DIRS", + "value": "/etc/hwlab/hwpod-specs" + }, + { + "name": "HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS", + "value": "2" + }, + { + "name": "HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS", + "value": "250" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS", + "value": "1" + }, + { + "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": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-cloud-api" + }, + { + "name": "AGENTRUN_MGR_URL", + "value": "http://agentrun-mgr.agentrun-v02.svc.cluster.local:8080" + }, + { + "name": "AGENTRUN_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-master-server-admin-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE", + "value": "agentrun-v02" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE", + "value": "agentrun-v02" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_REPO_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_TTL_MS", + "value": "600000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_INTERVAL_MS", + "value": "60000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_INITIAL_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_BATCH_SIZE", + "value": "100" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_JITTER_MS", + "value": "15000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_FAILURE_BACKOFF_MS", + "value": "120000" + }, + { + "name": "HWLAB_SECRET_PLANE_SMOKE", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-secret-plane-smoke", + "key": "password", + "optional": true + } + } + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_WORKBENCH_SSE_DRAIN_TIMEOUT_MS", + "value": "2500" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID", + "value": "JD01" + }, + { + "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" + }, + "timeoutSeconds": 3, + "failureThreshold": 5 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 20, + "timeoutSeconds": 5, + "failureThreshold": 6 + }, + "volumeMounts": [ + { + "name": "hwlab-user-skills", + "mountPath": "/data/user-skills" + }, + { + "name": "hwpod-preinstalled-specs", + "mountPath": "/etc/hwlab/hwpod-specs", + "readOnly": true + } + ], + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 3, + "failureThreshold": 30, + "successThreshold": 1 + }, + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "sh", + "-c", + "port=\"${PORT:-${HWLAB_PORT:-${HWLAB_CLOUD_API_PORT:-6667}}}\"; url=\"http://127.0.0.1:${port}/v1/internal/workbench/drain\"; /usr/local/bin/bun -e 'const [url, hostname] = process.argv.slice(2); await fetch(url, { method: \"POST\", headers: { \"x-hwlab-drain-hostname\": hostname || \"\" } }).catch(() => {});' \"$url\" \"${HOSTNAME:-}\" >/dev/null 2>&1 || true; sleep 3" + ] + } + } + } + }, + { + "name": "hwlab-codex-api-forwarder", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a", + "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://hwlab-v03.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-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": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_METRICS_NAMESPACE", + "value": "hwlab-v03" + }, + { + "name": "HWLAB_OBSERVABILITY_CONFIG_REVISION", + "value": "PJ2026-01060505-20260619-long-trace-timeout-mitigation" + }, + { + "name": "HWLAB_CODE_AGENT_TURN_STATUS_REFRESH_TIMEOUT_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_NO_RESPONSE_TIMEOUT_MS", + "value": "600000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX", + "value": "5" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_BASE_MS", + "value": "1000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_DISPATCH_RETRY_MAX_DELAY_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_SYNC_POLL_INTERVAL_MS", + "value": "1000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INITIAL_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_INTERVAL_MS", + "value": "60000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_MIN_AGE_MS", + "value": "30000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_BATCH_SIZE", + "value": "100" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_JITTER_MS", + "value": "15000" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROJECTION_RESUME_FAILURE_BACKOFF_MS", + "value": "120000" + }, + { + "name": "HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-bootstrap-admin", + "key": "password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-preset-users", + "key": "huiggao-password-hash", + "optional": true + } + } + }, + { + "name": "HWLAB_ACCESS_CONTROL_USERS_JSON", + "value": "[{\"id\":\"usr_v03_admin\",\"username\":\"admin\",\"displayName\":\"HWLAB v0.3 Admin\",\"email\":null,\"role\":\"admin\",\"status\":\"active\",\"navProfile\":\"admin-full\",\"passwordHashEnv\":\"HWLAB_BOOTSTRAP_ADMIN_PASSWORD_HASH\"},{\"id\":\"usr_v03_huiggao\",\"username\":\"huiggao@163.com\",\"displayName\":\"huiggao@163.com\",\"email\":\"huiggao@163.com\",\"role\":\"user\",\"status\":\"active\",\"navProfile\":\"code-mdtodo-only\",\"passwordHashEnv\":\"HWLAB_PRESET_USER_HUIGGAO_PASSWORD_HASH\"}]" + }, + { + "name": "HWLAB_ACCESS_CONTROL_NAV_PROFILES_JSON", + "value": "[{\"id\":\"admin-full\",\"displayName\":\"Admin full access\",\"allowedIds\":[\"*\"]},{\"id\":\"code-mdtodo-only\",\"displayName\":\"Code and MDTODO only\",\"allowedIds\":[\"workbench.code\",\"project.mdtodo\"]}]" + }, + { + "name": "HWLAB_CLOUD_DB_POOL_MAX", + "value": "4" + }, + { + "name": "HWLAB_CLOUD_DB_PROBE_TIMEOUT_MS", + "value": "5000" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_TIMEOUT_MS", + "value": "3000" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_MAX_ATTEMPTS", + "value": "5" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_INITIAL_DELAY_MS", + "value": "250" + }, + { + "name": "HWLAB_CLOUD_DB_QUERY_RETRY_MAX_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_TIMEOUT_MS", + "value": "3000" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_MAX_ATTEMPTS", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_BASE_MS", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_FACTS_QUERY_BACKOFF_MAX_MS", + "value": "1" + }, + { + "name": "HWLAB_ACCESS_CONTROL_REQUIRED", + "value": "1" + }, + { + "name": "HWLAB_SESSION_COOKIE_DOMAIN", + "value": ".pikapython.com" + }, + { + "name": "HWLAB_SESSION_COOKIE_SAMESITE", + "value": "None" + }, + { + "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_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_USER_BILLING_URL", + "value": "http://hwlab-user-billing.hwlab-v03.svc.cluster.local:6670" + }, + { + "name": "HWLAB_WORKBENCH_RUNTIME_URL", + "value": "http://hwlab-workbench-runtime.hwlab-v03.svc.cluster.local:6671" + }, + { + "name": "HWLAB_PROJECT_MANAGEMENT_URL", + "value": "http://hwlab-project-management.hwlab-v03.svc.cluster.local:6672" + }, + { + "name": "HWLAB_HWPOD_SPEC_REGISTRY_DIRS", + "value": "/etc/hwlab/hwpod-specs" + }, + { + "name": "HWLAB_USER_BILLING_LOGIN_RETRY_ATTEMPTS", + "value": "2" + }, + { + "name": "HWLAB_USER_BILLING_LOGIN_RETRY_DELAY_MS", + "value": "250" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_ESTIMATED_CREDITS", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_CODE_AGENT_USED_CREDITS", + "value": "1" + }, + { + "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": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-cloud-api" + }, + { + "name": "AGENTRUN_MGR_URL", + "value": "http://agentrun-mgr.agentrun-v02.svc.cluster.local:8080" + }, + { + "name": "AGENTRUN_API_KEY", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-master-server-admin-api-key", + "key": "api-key", + "optional": true + } + } + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_RUNNER_NAMESPACE", + "value": "agentrun-v02" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SECRET_NAMESPACE", + "value": "agentrun-v02" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_REPO_URL", + "value": "http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_TTL_MS", + "value": "600000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_INTERVAL_MS", + "value": "60000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_INITIAL_DELAY_MS", + "value": "5000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_BATCH_SIZE", + "value": "100" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_JITTER_MS", + "value": "15000" + }, + { + "name": "HWLAB_WORKBENCH_EMPTY_SESSION_GC_FAILURE_BACKOFF_MS", + "value": "120000" + }, + { + "name": "HWLAB_SECRET_PLANE_SMOKE", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-secret-plane-smoke", + "key": "password", + "optional": true + } + } + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "e9ce96840e4a0b5732e5b0f4de06e81947ad0cf3ccaf711d1f1108f592e9bee1" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:6eb1ae96110417822170a35333efd898fe4ca410034a68f27db600315d0e889a" + }, + { + "name": "HWLAB_WORKBENCH_SSE_DRAIN_TIMEOUT_MS", + "value": "2500" + }, + { + "name": "HWLAB_CODE_AGENT_AGENTRUN_PROVIDER_ID", + "value": "JD01" + }, + { + "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": [ + { + "name": "hwpod-preinstalled-specs", + "mountPath": "/etc/hwlab/hwpod-specs", + "readOnly": true + } + ], + "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 + }, + "lifecycle": { + "preStop": { + "exec": { + "command": [ + "sh", + "-c", + "port=\"${PORT:-${HWLAB_PORT:-${HWLAB_CLOUD_API_PORT:-6667}}}\"; url=\"http://127.0.0.1:${port}/v1/internal/workbench/drain\"; /usr/local/bin/bun -e 'const [url, hostname] = process.argv.slice(2); await fetch(url, { method: \"POST\", headers: { \"x-hwlab-drain-hostname\": hostname || \"\" } }).catch(() => {});' \"$url\" \"${HOSTNAME:-}\" >/dev/null 2>&1 || true; sleep 3" + ] + } + } + } + }, + { + "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" + } + }, + { + "name": "hwpod-preinstalled-specs", + "configMap": { + "name": "hwlab-v03-hwpod-preinstalled-specs" + } + } + ] + } + } + } + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "hwlab-user-billing", + "namespace": "hwlab-v03", + "labels": { + "app.kubernetes.io/name": "hwlab-user-billing", + "hwlab.pikastech.local/service-id": "hwlab-user-billing", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app.kubernetes.io/name": "hwlab-user-billing", + "app.kubernetes.io/part-of": "hwlab", + "hwlab.pikastech.local/environment": "v03", + "hwlab.pikastech.local/profile": "v03" + } + }, + "template": { + "metadata": { + "labels": { + "app.kubernetes.io/name": "hwlab-user-billing", + "hwlab.pikastech.local/service-id": "hwlab-user-billing", + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-user-billing.sh", + "hwlab.pikastech.local/environment-digest": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6", + "hwlab.pikastech.local/environment-input-hash": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2", + "hwlab.pikastech.local/code-input-hash": "1c7f8090dc17d9a7dfc7cdd0714e7294bb231db899c396b388e4ab3642e5134e" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-user-billing", + "image": "127.0.0.1:5000/hwlab/hwlab-user-billing-env@sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6", + "ports": [ + { + "name": "http", + "containerPort": 6670 + } + ], + "env": [ + { + "name": "HWLAB_USER_BILLING_PORT", + "value": "6670" + }, + { + "name": "HWLAB_USER_BILLING_STATE_AUTHORITY", + "value": "pk01-postgres" + }, + { + "name": "HWLAB_USER_BILLING_STATELESS", + "value": "true" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_USER_BILLING_DB_URL", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-cloud-api-v03-db", + "key": "database-url", + "optional": true + } + } + }, + { + "name": "HWLAB_USER_BILLING_DB_POOL_MAX", + "value": "2" + }, + { + "name": "HWLAB_USER_BILLING_MIGRATION_TIMEOUT_SECONDS", + "value": "180" + }, + { + "name": "HWLAB_USER_BILLING_BOOTSTRAP_TIMEOUT_SECONDS", + "value": "60" + }, + { + "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_USER_BILLING_EXTERNAL_DB_LABEL", + "value": "pk01-external-postgres" + }, + { + "name": "HWLAB_USER_BILLING_REGISTRATION_ENABLED", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_INITIAL_CREDITS", + "value": "0" + }, + { + "name": "HWLAB_USER_BILLING_CREDIT_PER_1K_TOKENS", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_MIGRATE_ON_START", + "value": "1" + }, + { + "name": "HWLAB_USER_BILLING_REDIS_URL", + "value": "redis://hwlab-user-billing-redis.hwlab-v03.svc.cluster.local:6379/0" + }, + { + "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-user-billing" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-user-billing-env@sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-9115558e9e2c" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_BOOT_REF", + "value": "v0.3" + }, + { + "name": "HWLAB_BOOT_SH", + "value": "deploy/runtime/boot/hwlab-user-billing.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-user-billing-env:env-9115558e9e2c" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "9115558e9e2c51e8d2e1065310f1b49ccc7a4f1342faa52534062a9dad3d6cb2" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "1c7f8090dc17d9a7dfc7cdd0714e7294bb231db899c396b388e4ab3642e5134e" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:58ab902431ce98b91e1442b719d5ab67f474f3a09d04b72638686784ad7bc7c6" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "timeoutSeconds": 10, + "failureThreshold": 5 + }, + "livenessProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "timeoutSeconds": 5, + "failureThreshold": 6 + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/ready", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 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-user-billing" + }, + { + "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:6670/health/ready" + }, + { + "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-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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-cloud-web.sh", + "hwlab.pikastech.local/environment-digest": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-cloud-web", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_CLOUD_WEB_DISPLAY_TIME_ZONE", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_CLOUD_WEB_DISPLAY_TIME_LOCALE", + "value": "zh-CN" + }, + { + "name": "HWLAB_CLOUD_WEB_DISPLAY_TIME_LABEL", + "value": "北京时间" + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_UPSTREAM_URL", + "value": "http://opencode-server.hwlab-v03.svc.cluster.local:4096" + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_USERNAME", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-opencode-server-auth", + "key": "username", + "optional": true + } + } + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_PASSWORD", + "valueFrom": { + "secretKeyRef": { + "name": "hwlab-v03-opencode-server-auth", + "key": "password", + "optional": true + } + } + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_DEFAULT_PROJECT", + "value": "/workspace" + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_FROM", + "value": "/workspace" + }, + { + "name": "HWLAB_CLOUD_WEB_OPENCODE_EVENT_DIRECTORY_TO", + "value": "/" + }, + { + "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", + "value": "http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces" + }, + { + "name": "OTEL_SERVICE_NAME", + "value": "hwlab-cloud-web" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "a30d3b6d134dd5e18879523ba0022838e879eb06f3bfb0753eca9d236d7d7780" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:35be9f812c9aef6d989caf83def79bdfe5dca42f461d9f99fb34622b38ff9b2f" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab-v03.74-48-78-17.nip.io" + }, + { + "name": "HWLAB_WORKBENCH_TRACE_AUTO_EXPAND_RUNNING", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_TRACE_AUTO_COLLAPSE_TERMINAL", + "value": "0" + }, + { + "name": "HWLAB_WORKBENCH_TRACE_EXPLORER_URL_TEMPLATE", + "value": "/v1/workbench/traces/{trace_id}/events" + } + ], + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-gateway.sh", + "hwlab.pikastech.local/environment-digest": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "25f753b252593891ed7b03b53a69d266e7a324728cf83fea8654bab4196fa399" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-gateway", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964", + "ports": [ + { + "name": "http", + "containerPort": 7001 + } + ], + "env": [ + { + "name": "HWLAB_GATEWAY_MODE", + "value": "hardware-boundary" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "25f753b252593891ed7b03b53a69d266e7a324728cf83fea8654bab4196fa399" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:b76f2121c080362affe89bdb21b1b55e9e42fabd15c31392b20ab5bc5018e964" + } + ], + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-edge-proxy.sh", + "hwlab.pikastech.local/environment-digest": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "c97d19939c872e128a6931bdf73f28a75a684948a76a2b1af37508dd47481544" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-edge-proxy", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028", + "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_EDGE_IDLE_TIMEOUT_SECONDS", + "value": "120" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "c97d19939c872e128a6931bdf73f28a75a684948a76a2b1af37508dd47481544" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:f676f4feed046fadfc36f4ec21608f2531559f70ee647ebad2b311967f55a028" + }, + { + "name": "HWLAB_PUBLIC_ENDPOINT", + "value": "https://hwlab-v03.74-48-78-17.nip.io" + } + ], + "readinessProbe": { + "httpGet": { + "path": "/health", + "port": "http" + }, + "timeoutSeconds": 3, + "failureThreshold": 5 + }, + "livenessProbe": { + "httpGet": { + "path": "/health", + "port": "http" + }, + "periodSeconds": 20, + "timeoutSeconds": 5, + "failureThreshold": 6 + }, + "imagePullPolicy": "IfNotPresent", + "startupProbe": { + "httpGet": { + "path": "/health/live", + "port": "http" + }, + "periodSeconds": 10, + "timeoutSeconds": 3, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "unidesk.ai/node-staging": "false", + "hwlab.pikastech.local/monitoring": "enabled" + }, + "annotations": { + "hwlab.pikastech.local/gitops-note": "node DEV GitOps target.", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + } + }, + "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/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/monitoring": "enabled", + "hwlab.pikastech.local/runtime-mode": "env-reuse-git-mirror-checkout", + "hwlab.pikastech.local/boot-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + "annotations": { + "hwlab.pikastech.local/metrics-sidecar-sha256": "782e26256b5a5cddff52a165a0eb5f852973eee1aac1b19acac4a313db7968f4", + "hwlab.pikastech.local/gitops-render-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/artifact-source-commit": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175", + "hwlab.pikastech.local/boot-sh": "deploy/runtime/boot/hwlab-agent-skills.sh", + "hwlab.pikastech.local/environment-digest": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf", + "hwlab.pikastech.local/environment-input-hash": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8", + "hwlab.pikastech.local/code-input-hash": "369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a" + } + }, + "spec": { + "containers": [ + { + "name": "hwlab-agent-skills", + "image": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf", + "ports": [ + { + "name": "http", + "containerPort": 7430 + } + ], + "env": [ + { + "name": "HWLAB_SKILLS_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "TZ", + "value": "Asia/Shanghai" + }, + { + "name": "HWLAB_ENVIRONMENT", + "value": "v03" + }, + { + "name": "HWLAB_COMMIT_ID", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "name": "HWLAB_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf" + }, + { + "name": "HWLAB_IMAGE_TAG", + "value": "env-d27ecbf7ba13" + }, + { + "name": "HWLAB_GITOPS_TARGET", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_PROFILE", + "value": "v03" + }, + { + "name": "HWLAB_GITOPS_SOURCE_COMMIT", + "value": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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": "2e7c55a0e9669f635235d428cd24ced4e7783175" + }, + { + "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/pikasTech/HWLAB.git" + }, + { + "name": "HWLAB_ENVIRONMENT_IMAGE", + "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env:env-d27ecbf7ba13" + }, + { + "name": "HWLAB_ENVIRONMENT_DIGEST", + "value": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf" + }, + { + "name": "HWLAB_ENVIRONMENT_INPUT_HASH", + "value": "d27ecbf7ba13f76fbeca46003026aeb5668e1c55569aa9e034f4873d8a2df1e8" + }, + { + "name": "HWLAB_CODE_INPUT_HASH", + "value": "369ca524ae4010fb5d9adfd30b4290808a035804b4674755bc193fee743f3d5a" + }, + { + "name": "HWLAB_IMAGE_DIGEST", + "value": "sha256:c5f17f44cbca65aa5c9d0d0dc53e1f136163b44f234e7d052b411ba9d54b0eaf" + } + ], + "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" + } + } + ] + } + } + } + } + ] +}