85da2dcb19
Commander review: direction is correct. This PR separates runner kubeconfig/read-only observability gaps from D601 public endpoint/k3s availability and keeps M3 blocked until real operation/trace/audit/evidence are observed. It does not touch PROD or restart services.
711 lines
23 KiB
JSON
711 lines
23 KiB
JSON
{
|
|
"$schema": "https://hwlab.pikastech.local/schemas/d601-k3s-readonly-observability-report.schema.json",
|
|
"$id": "https://hwlab.pikastech.local/reports/d601-k3s-readonly-observability.json",
|
|
"reportVersion": "v1",
|
|
"reportKind": "d601-k3s-readonly-observability",
|
|
"issue": "pikasTech/HWLAB#46",
|
|
"supports": [
|
|
"pikasTech/HWLAB#7",
|
|
"pikasTech/HWLAB#33",
|
|
"pikasTech/HWLAB#36",
|
|
"pikasTech/HWLAB#38",
|
|
"pikasTech/HWLAB#39",
|
|
"pikasTech/HWLAB#42"
|
|
],
|
|
"generatedAt": "2026-05-22T12:34:14.403Z",
|
|
"mode": "read-only",
|
|
"devOnly": true,
|
|
"prodDisabled": true,
|
|
"namespace": "hwlab-dev",
|
|
"runtimeTarget": {
|
|
"runner": "D601 Code Queue",
|
|
"cluster": "D601 k3s",
|
|
"namespace": "hwlab-dev",
|
|
"resources": [
|
|
"pods",
|
|
"services",
|
|
"configmaps"
|
|
]
|
|
},
|
|
"safety": {
|
|
"noProd": true,
|
|
"noSecretsPrinted": true,
|
|
"noSecretResourcesRead": true,
|
|
"noClusterMutation": true,
|
|
"noRuntimeRestart": true,
|
|
"noHeavyE2E": true
|
|
},
|
|
"forbiddenActions": [
|
|
"prod-access",
|
|
"secret-material-read",
|
|
"cluster-mutation",
|
|
"runtime-restart",
|
|
"heavy-e2e",
|
|
"master-server-heavy-check"
|
|
],
|
|
"validationCommands": [
|
|
"node --check scripts/d601-k3s-readonly-observability.mjs",
|
|
"node --check scripts/src/d601-k3s-readonly-observability.mjs",
|
|
"node scripts/d601-k3s-readonly-observability.mjs"
|
|
],
|
|
"conclusion": "blocked",
|
|
"runnerKubeconfigReadable": false,
|
|
"runnerKubeconfigProbeOk": true,
|
|
"runnerKubeconfigProbeExitCode": 0,
|
|
"runnerKubeconfigProbeStderr": "empty",
|
|
"d601PublicEndpointsReachable": true,
|
|
"d601K3sUnavailable": false,
|
|
"statusInference": {
|
|
"runnerKubeconfigReadable": false,
|
|
"runnerKubeconfigProbeOk": true,
|
|
"runnerKubeconfigProbeExitCode": 0,
|
|
"runnerKubeconfigProbeStderr": "empty",
|
|
"d601PublicEndpointsReachable": true,
|
|
"d601K3sUnavailable": false,
|
|
"conclusion": "Runner kubeconfig readability is an observability signal only; it is not used to infer D601 k3s or public DEV endpoint availability.",
|
|
"blockerClassification": "runner_permission_mount_gap",
|
|
"sourceIssue": "pikasTech/HWLAB#46"
|
|
},
|
|
"environment": {
|
|
"binaries": {
|
|
"kubectl": {
|
|
"name": "kubectl",
|
|
"available": true,
|
|
"path": "/usr/local/bin/kubectl",
|
|
"version": {
|
|
"ok": true,
|
|
"command": "kubectl version --client=true",
|
|
"output": "Client Version: v1.36.1 Kustomize Version: v5.8.1"
|
|
}
|
|
},
|
|
"k3s": {
|
|
"name": "k3s",
|
|
"available": true,
|
|
"path": "/usr/local/bin/k3s",
|
|
"version": {
|
|
"ok": true,
|
|
"command": "k3s --version",
|
|
"output": "k3s version v1.34.1+k3s1 (24fc436e) go version go1.24.6"
|
|
}
|
|
},
|
|
"k3sctl": {
|
|
"name": "k3sctl",
|
|
"available": false,
|
|
"path": null
|
|
},
|
|
"ssh": {
|
|
"name": "ssh",
|
|
"available": true,
|
|
"path": "/usr/bin/ssh",
|
|
"version": {
|
|
"ok": true,
|
|
"command": "ssh -V",
|
|
"output": "OpenSSH_10.0p2 Debian-7+deb13u4, OpenSSL 3.5.6 7 Apr 2026"
|
|
}
|
|
}
|
|
},
|
|
"kubeconfig": [
|
|
{
|
|
"source": "KUBECONFIG",
|
|
"path": "/var/lib/unidesk/code-queue/kubeconfig",
|
|
"exists": true,
|
|
"readable": true,
|
|
"type": "file",
|
|
"sizeBytes": 410
|
|
},
|
|
{
|
|
"source": "default",
|
|
"path": "~/.kube/config",
|
|
"exists": false,
|
|
"readable": false,
|
|
"error": "ENOENT"
|
|
},
|
|
{
|
|
"source": "default",
|
|
"path": "/etc/rancher/k3s/k3s.yaml",
|
|
"exists": false,
|
|
"readable": false,
|
|
"error": "ENOENT"
|
|
},
|
|
{
|
|
"source": "default",
|
|
"path": "/var/lib/rancher/k3s/server/cred/admin.kubeconfig",
|
|
"exists": false,
|
|
"readable": false,
|
|
"error": "ENOENT"
|
|
}
|
|
],
|
|
"runnerKubeconfig": {
|
|
"path": "/etc/rancher/k3s/k3s.yaml",
|
|
"mode": "read-only",
|
|
"resource": "pods",
|
|
"command": "KUBECONFIG=/etc/rancher/k3s/k3s.yaml kubectl -n hwlab-dev get pods -o name",
|
|
"runnerKubeconfigReadable": false,
|
|
"runnerKubeconfigProbeOk": true,
|
|
"runnerKubeconfigProbeExitCode": 0,
|
|
"runnerKubeconfigProbeStderr": "empty",
|
|
"stdoutSummary": "13 pod name(s) observed",
|
|
"classification": "runner_permission_mount_gap",
|
|
"sourceIssue": "pikasTech/HWLAB#46",
|
|
"secretValuesRead": false,
|
|
"secretResourcesRead": false,
|
|
"note": "This probe forces KUBECONFIG=/etc/rancher/k3s/k3s.yaml for a read-only kubectl get pods command and records only exit code plus redacted stderr/stdout summary. A successful kubectl exit code does not make the kubeconfig file readable; kubectl may use an alternate in-cluster fallback."
|
|
},
|
|
"sshBridge": {
|
|
"sshBinaryAvailable": true,
|
|
"env": [
|
|
{
|
|
"name": "HWLAB_D601_SSH_HOST",
|
|
"set": false,
|
|
"valueRedacted": null
|
|
},
|
|
{
|
|
"name": "HWLAB_D601_SSH_TARGET",
|
|
"set": false,
|
|
"valueRedacted": null
|
|
},
|
|
{
|
|
"name": "HWLAB_D601_MAINTENANCE_HOST",
|
|
"set": false,
|
|
"valueRedacted": null
|
|
},
|
|
{
|
|
"name": "D601_SSH_HOST",
|
|
"set": false,
|
|
"valueRedacted": null
|
|
},
|
|
{
|
|
"name": "HWLAB_MAINTENANCE_SSH",
|
|
"set": false,
|
|
"valueRedacted": null
|
|
}
|
|
],
|
|
"paths": [
|
|
{
|
|
"path": "~/.ssh",
|
|
"exists": true,
|
|
"readable": true,
|
|
"type": "directory"
|
|
},
|
|
{
|
|
"path": "~/.ssh/config",
|
|
"exists": false,
|
|
"readable": false,
|
|
"error": "ENOENT"
|
|
},
|
|
{
|
|
"path": "~/.ssh/known_hosts",
|
|
"exists": true,
|
|
"readable": true,
|
|
"type": "file",
|
|
"sizeBytes": 5186
|
|
}
|
|
],
|
|
"configured": false,
|
|
"note": "SSH bridge discovery checks only binary, environment variable presence, and file metadata; it does not read SSH config or private keys."
|
|
}
|
|
},
|
|
"publicEndpoints": {
|
|
"activeFrontendEndpoint": "http://74.48.78.17:16666",
|
|
"activeApiEndpoint": "http://74.48.78.17:16667",
|
|
"d601PublicEndpointsReachable": true,
|
|
"probes": [
|
|
{
|
|
"id": "frontend-16666",
|
|
"url": "http://74.48.78.17:16666/",
|
|
"reached": true,
|
|
"ok": true,
|
|
"status": 200,
|
|
"bodySummary": "<!doctype html> <html lang=\"zh-CN\"> <head> <meta charset=\"utf-8\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /> <title>"
|
|
},
|
|
{
|
|
"id": "api-health-16667",
|
|
"url": "http://74.48.78.17:16667/health",
|
|
"reached": true,
|
|
"ok": true,
|
|
"status": 200,
|
|
"serviceId": "hwlab-edge-proxy",
|
|
"environment": "dev",
|
|
"bodySummary": "json serviceId=hwlab-edge-proxy status=ok"
|
|
},
|
|
{
|
|
"id": "api-live-16667",
|
|
"url": "http://74.48.78.17:16667/health/live",
|
|
"reached": true,
|
|
"ok": true,
|
|
"status": 200,
|
|
"serviceId": "hwlab-cloud-api",
|
|
"environment": "dev",
|
|
"bodySummary": "json serviceId=hwlab-cloud-api status=degraded"
|
|
}
|
|
]
|
|
},
|
|
"cluster": {
|
|
"namespace": "hwlab-dev",
|
|
"attemptedExecutors": [
|
|
"kubectl",
|
|
"k3s-kubectl"
|
|
],
|
|
"readable": true,
|
|
"executors": [
|
|
{
|
|
"executor": "kubectl",
|
|
"ready": true,
|
|
"probes": {
|
|
"clientVersion": {
|
|
"ok": true,
|
|
"command": "kubectl version --client=true",
|
|
"exitCode": 0,
|
|
"stdout": "Client Version: v1.36.1\nKustomize Version: v5.8.1"
|
|
},
|
|
"currentContext": {
|
|
"ok": true,
|
|
"command": "kubectl config current-context",
|
|
"exitCode": 0,
|
|
"stdout": "in-cluster"
|
|
},
|
|
"namespace": {
|
|
"ok": true,
|
|
"command": "kubectl get namespace hwlab-dev -o json",
|
|
"exitCode": 0
|
|
},
|
|
"auth": {
|
|
"pods": {
|
|
"allowed": true,
|
|
"ok": true,
|
|
"command": "kubectl auth can-i get pods -n hwlab-dev",
|
|
"exitCode": 0,
|
|
"stdout": "yes"
|
|
},
|
|
"services": {
|
|
"allowed": true,
|
|
"ok": true,
|
|
"command": "kubectl auth can-i get services -n hwlab-dev",
|
|
"exitCode": 0,
|
|
"stdout": "yes"
|
|
},
|
|
"configmaps": {
|
|
"allowed": true,
|
|
"ok": true,
|
|
"command": "kubectl auth can-i get configmaps -n hwlab-dev",
|
|
"exitCode": 0,
|
|
"stdout": "yes"
|
|
}
|
|
},
|
|
"pods": {
|
|
"ok": true,
|
|
"command": "kubectl -n hwlab-dev get pods -o json",
|
|
"exitCode": 0
|
|
},
|
|
"services": {
|
|
"ok": true,
|
|
"command": "kubectl -n hwlab-dev get services -o json",
|
|
"exitCode": 0
|
|
},
|
|
"configMaps": {
|
|
"ok": true,
|
|
"command": "kubectl -n hwlab-dev get configmaps -o json",
|
|
"exitCode": 0
|
|
}
|
|
},
|
|
"summaries": {
|
|
"pods": {
|
|
"count": 13,
|
|
"items": [
|
|
{
|
|
"name": "hwlab-agent-mgr-75544c7747-5dzt9",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-agent-skills-849d9976f4-2nsmw",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-box-simu-55688cbcc7-pftxc",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-box-simu-55688cbcc7-sq5fx",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-cloud-api-f48dcdfb-9n6zh",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-cloud-web-5b7487b5c4-fzvgr",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-edge-proxy-567f978cdd-8fwc8",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-frpc-59f57d479c-wm5l2",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-gateway-simu-699fd486b-j9pk7",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-gateway-simu-699fd486b-phcgp",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-patch-panel-757f9f44d5-7np8r",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-router-5d9cbdf89b-p7r94",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
},
|
|
{
|
|
"name": "hwlab-tunnel-client-65c7858c8-wjqsh",
|
|
"phase": "Running",
|
|
"readyContainers": 1,
|
|
"totalContainers": 1,
|
|
"restartCount": 0,
|
|
"nodeName": "d601"
|
|
}
|
|
]
|
|
},
|
|
"services": {
|
|
"count": 12,
|
|
"items": [
|
|
{
|
|
"name": "hwlab-agent-mgr",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.175.43",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7410,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-agent-skills",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.218.243",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7430,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-box-simu",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.192.161",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7201,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-cli",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.94.68",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7501,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-cloud-api",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.88.144",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 6667,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-cloud-web",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.112.75",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 8080,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-edge-proxy",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.104.107",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 6667,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-gateway",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.70.176",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7001,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-gateway-simu",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.70.14",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7101,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-patch-panel",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.7.35",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7301,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-router",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.6.240",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7401,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-tunnel-client",
|
|
"type": "ClusterIP",
|
|
"clusterIP": "10.43.129.225",
|
|
"ports": [
|
|
{
|
|
"name": "http",
|
|
"port": 7402,
|
|
"targetPort": "http",
|
|
"protocol": "TCP"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"configMaps": {
|
|
"count": 3,
|
|
"items": [
|
|
{
|
|
"name": "hwlab-dev-health-contract",
|
|
"keys": [
|
|
"agent",
|
|
"cloud-api",
|
|
"cloud-api-db",
|
|
"cloud-web",
|
|
"edge-proxy",
|
|
"endpoint",
|
|
"patch-panel",
|
|
"router",
|
|
"runtime-substitute-policy",
|
|
"sim",
|
|
"tunnel-client"
|
|
]
|
|
},
|
|
{
|
|
"name": "hwlab-frpc-config",
|
|
"keys": [
|
|
"frpc.toml"
|
|
]
|
|
},
|
|
{
|
|
"name": "kube-root-ca.crt",
|
|
"keys": [
|
|
"ca.crt"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"executor": "k3s-kubectl",
|
|
"ready": false,
|
|
"probes": {
|
|
"clientVersion": {
|
|
"ok": false,
|
|
"command": "k3s kubectl version --client=true",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl version --client=true error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"currentContext": {
|
|
"ok": false,
|
|
"command": "k3s kubectl config current-context",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl config current-context error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"namespace": {
|
|
"ok": false,
|
|
"command": "k3s kubectl get namespace hwlab-dev -o json",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl get namespace hwlab-dev -o json error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"auth": {
|
|
"pods": {
|
|
"allowed": false,
|
|
"ok": false,
|
|
"command": "k3s kubectl auth can-i get pods -n hwlab-dev",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl auth can-i get pods -n hwlab-dev error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"services": {
|
|
"allowed": false,
|
|
"ok": false,
|
|
"command": "k3s kubectl auth can-i get services -n hwlab-dev",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl auth can-i get services -n hwlab-dev error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"configmaps": {
|
|
"allowed": false,
|
|
"ok": false,
|
|
"command": "k3s kubectl auth can-i get configmaps -n hwlab-dev",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl auth can-i get configmaps -n hwlab-dev error: unknown command \"kubectl\" for \"kubectl\""
|
|
}
|
|
},
|
|
"pods": {
|
|
"ok": false,
|
|
"command": "k3s kubectl -n hwlab-dev get pods -o json",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl -n hwlab-dev get pods -o json error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"services": {
|
|
"ok": false,
|
|
"command": "k3s kubectl -n hwlab-dev get services -o json",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl -n hwlab-dev get services -o json error: unknown command \"kubectl\" for \"kubectl\""
|
|
},
|
|
"configMaps": {
|
|
"ok": false,
|
|
"command": "k3s kubectl -n hwlab-dev get configmaps -o json",
|
|
"exitCode": 1,
|
|
"stderr": "error: unknown command \"kubectl\" for \"kubectl\"",
|
|
"error": "Command failed: k3s kubectl -n hwlab-dev get configmaps -o json error: unknown command \"kubectl\" for \"kubectl\""
|
|
}
|
|
},
|
|
"summaries": null
|
|
}
|
|
]
|
|
},
|
|
"blockers": [
|
|
{
|
|
"status": "open",
|
|
"type": "observability_blocker",
|
|
"scope": "runner-kubeconfig-readonly-gap",
|
|
"classification": "runner_permission_mount_gap",
|
|
"sourceIssue": "pikasTech/HWLAB#46",
|
|
"summary": "The runner cannot read /etc/rancher/k3s/k3s.yaml; classify this as a runner permission/mount gap, not a D601 global outage. Alternate read-only cluster probes and public DEV endpoint probes are reported separately.",
|
|
"nextTask": "Provide the approved read-only runner kubeconfig mount or document the intended alternate KUBECONFIG path, then rerun the read-only report."
|
|
}
|
|
],
|
|
"runnerImageFollowUp": {
|
|
"needed": true,
|
|
"suggestedUniDeskIssue": "Code Queue runner image should include kubectl and a documented read-only hwlab-dev kubeconfig mount/permission path; keep Secret resources and token material inaccessible to reports."
|
|
},
|
|
"notes": "This report uses command availability checks, file metadata checks, public DEV endpoint GET probes, kubectl/k3s kubectl read-only get probes, and auth can-i checks only. It does not print kubeconfig contents, token material, Secret resources, ConfigMap values, SSH config contents, or private keys. A failed runner /etc/rancher/k3s/k3s.yaml probe is classified as a runner permission/mount or read-only observability gap and is not evidence that D601 k3s is globally unavailable."
|
|
}
|