{ "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", "hwlab.pikastech.local/opencode-provider-profile": "gpt.pika", "hwlab.pikastech.local/opencode-provider-id": "gpt.pika", "hwlab.pikastech.local/opencode-model": "gpt-5.4-mini", "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://api.pikapython.com/", "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", "hwlab.pikastech.local/opencode-config-sha256": "e5320440e18d83aaea578998170887d7ad36bfc4691f5e2b4d29522e5b973e69", "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-gpt-pika", "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f", "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } } }, { "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", "hwlab.pikastech.local/opencode-provider-profile": "gpt.pika", "hwlab.pikastech.local/opencode-provider-id": "gpt.pika", "hwlab.pikastech.local/opencode-model": "gpt-5.4-mini", "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://api.pikapython.com/", "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", "hwlab.pikastech.local/opencode-config-sha256": "e5320440e18d83aaea578998170887d7ad36bfc4691f5e2b4d29522e5b973e69", "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-gpt-pika", "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f", "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } }, "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", "hwlab.pikastech.local/opencode-provider-profile": "gpt.pika", "hwlab.pikastech.local/opencode-provider-id": "gpt.pika", "hwlab.pikastech.local/opencode-model": "gpt-5.4-mini", "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://api.pikapython.com/", "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", "hwlab.pikastech.local/opencode-config-sha256": "e5320440e18d83aaea578998170887d7ad36bfc4691f5e2b4d29522e5b973e69", "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-gpt-pika", "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f", "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } }, "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", "hwlab.pikastech.local/opencode-provider-profile": "gpt.pika", "hwlab.pikastech.local/opencode-provider-id": "gpt.pika", "hwlab.pikastech.local/opencode-model": "gpt-5.4-mini", "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://api.pikapython.com/", "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", "hwlab.pikastech.local/opencode-config-sha256": "e5320440e18d83aaea578998170887d7ad36bfc4691f5e2b4d29522e5b973e69", "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-gpt-pika", "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f", "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } }, "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, "annotations": { "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs", "hwlab.pikastech.local/opencode-provider-profile": "gpt.pika", "hwlab.pikastech.local/opencode-provider-id": "gpt.pika", "hwlab.pikastech.local/opencode-model": "gpt-5.4-mini", "hwlab.pikastech.local/opencode-provider-base-url": "http://127.0.0.1:4097/v1", "hwlab.pikastech.local/opencode-provider-upstream-base-url": "https://api.pikapython.com/", "hwlab.pikastech.local/opencode-image": "127.0.0.1:5000/hwlab/opencode:1.17.7-git", "hwlab.pikastech.local/opencode-config-sha256": "e5320440e18d83aaea578998170887d7ad36bfc4691f5e2b4d29522e5b973e69", "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-gpt-pika", "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f", "hwlab.pikastech.local/opencode-provider-proxy-boot-sh": "deploy/runtime/boot/opencode-provider-proxy.sh", "hwlab.pikastech.local/opencode-provider-proxy-environment-digest": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } }, "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:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967", "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\":\"gpt.pika/gpt-5.4-mini\",\"small_model\":\"gpt.pika/gpt-5.4-mini\",\"provider\":{\"gpt.pika\":{\"npm\":\"@ai-sdk/openai-compatible\",\"name\":\"AgentRun gpt.pika\",\"options\":{\"baseURL\":\"http://127.0.0.1:4097/v1\",\"apiKey\":\"{env:OPENCODE_GPT_PIKA_API_KEY}\",\"timeout\":600000,\"headerTimeout\":600000,\"chunkTimeout\":300000},\"models\":{\"gpt-5.4-mini\":{\"name\":\"gpt-5.4-mini\",\"reasoning\":false,\"tool_call\":true,\"limit\":{\"context\":1000000,\"output\":384000}}}}}}" }, { "name": "OPENCODE_GPT_PIKA_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:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967", "imagePullPolicy": "IfNotPresent", "env": [ { "name": "HWLAB_SERVICE_ID", "value": "opencode-provider-proxy" }, { "name": "HWLAB_ENVIRONMENT", "value": "v03" }, { "name": "HWLAB_COMMIT_ID", "value": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, { "name": "HWLAB_IMAGE", "value": "127.0.0.1:5000/hwlab/hwlab-ts-runtime-env@sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" }, { "name": "HWLAB_IMAGE_TAG", "value": "env-6ef8ca3abf22" }, { "name": "PORT", "value": "4097" }, { "name": "HWLAB_OPENCODE_PROVIDER_PROXY_UPSTREAM_BASE_URL", "value": "https://api.pikapython.com/" }, { "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": "79f55cd83aeec4dd6c2776e1e1a4c6157c80973f" }, { "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-ts-runtime-env:env-6ef8ca3abf22" }, { "name": "HWLAB_ENVIRONMENT_DIGEST", "value": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" }, { "name": "HWLAB_ENVIRONMENT_INPUT_HASH", "value": "6ef8ca3abf22d871599b06333d285bd64f105a7a799b2937bb9c8f037fc0fd93" }, { "name": "HWLAB_CODE_INPUT_HASH", "value": "349244e32f17fada390a6c677537818d2d3df12de730172cbb76839a2cc6affd" }, { "name": "HWLAB_IMAGE_DIGEST", "value": "sha256:212f1da818f32500f25c495a6a4708a4113f44f4f2718387398dd5d7cfeb2967" } ], "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" } } ] } } } } ] }