diff --git a/deploy/artifact-catalog.jd01-v03.json b/deploy/artifact-catalog.jd01-v03.json index 3d2757e0..af7c7b88 100644 --- a/deploy/artifact-catalog.jd01-v03.json +++ b/deploy/artifact-catalog.jd01-v03.json @@ -10,7 +10,7 @@ "publish": { "ciPublished": true, "registryVerified": true, - "provenance": "node-ci-artifact:hwlab-jd01-v03-ci-poll-e02a339240d7-collect", + "provenance": "node-ci-artifact:hwlab-jd01-v03-ci-poll-e02a339240d7-rmqzhih4v-collect", "note": "Digest fields were copied from a successful DEV artifact publish report for this source commit." }, "healthContract": { diff --git a/deploy/gitops/node/jd01/runtime-v03/node-frpc.yaml b/deploy/gitops/node/jd01/runtime-v03/node-frpc.yaml index 8fc2be39..e8090961 100644 --- a/deploy/gitops/node/jd01/runtime-v03/node-frpc.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/node-frpc.yaml @@ -33,6 +33,13 @@ items: localIP = "hwlab-edge-proxy.hwlab-v03.svc.cluster.local" localPort = 6667 remotePort = 22089 + + [[proxies]] + name = "hwlab-jd01-v03-opencode" + type = "tcp" + localIP = "opencode-server.hwlab-v03.svc.cluster.local" + localPort = 4096 + remotePort = 22095 - apiVersion: apps/v1 kind: Deployment metadata: diff --git a/deploy/gitops/node/jd01/runtime-v03/opencode.yaml b/deploy/gitops/node/jd01/runtime-v03/opencode.yaml index e72b4ece..d6b9fa8b 100644 --- a/deploy/gitops/node/jd01/runtime-v03/opencode.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/opencode.yaml @@ -1,259 +1,176 @@ -{ - "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": "e02a339240d7b7ec66e520524accf016715d5c2c" - }, - "annotations": { - "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" - } - } - }, - { - "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": "e02a339240d7b7ec66e520524accf016715d5c2c" - }, - "annotations": { - "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" - } - }, - "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": "e02a339240d7b7ec66e520524accf016715d5c2c" - }, - "annotations": { - "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" - } - }, - "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": "e02a339240d7b7ec66e520524accf016715d5c2c" - }, - "annotations": { - "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" - } - }, - "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": "e02a339240d7b7ec66e520524accf016715d5c2c" - }, - "annotations": { - "hwlab.pikastech.local/rendered-by": "scripts/gitops-render.mjs" - } - }, - "spec": { - "serviceAccountName": "opencode-server", - "securityContext": { - "fsGroup": 1000, - "fsGroupChangePolicy": "OnRootMismatch" - }, - "containers": [ - { - "name": "opencode-server", - "image": "ghcr.io/anomalyco/opencode:1.17.7", - "imagePullPolicy": "IfNotPresent", - "command": [ - "opencode" - ], - "args": [ - "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": "OPENCODE_CONFIG_CONTENT", - "value": "{\"autoupdate\":false,\"share\":\"disabled\"}" - }, - { - "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" - } - ] - } - ], - "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: e02a339240d7b7ec66e520524accf016715d5c2c + annotations: + hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs + - 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: e02a339240d7b7ec66e520524accf016715d5c2c + annotations: + hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs + 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: e02a339240d7b7ec66e520524accf016715d5c2c + annotations: + hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs + 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: e02a339240d7b7ec66e520524accf016715d5c2c + annotations: + hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs + 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: e02a339240d7b7ec66e520524accf016715d5c2c + annotations: + hwlab.pikastech.local/rendered-by: scripts/gitops-render.mjs + spec: + serviceAccountName: opencode-server + securityContext: + fsGroup: 1000 + fsGroupChangePolicy: OnRootMismatch + containers: + - name: opencode-server + image: 127.0.0.1:5000/hwlab/opencode:1.17.7 + imagePullPolicy: IfNotPresent + command: + - opencode + args: + - 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: OPENCODE_CONFIG_CONTENT + value: '{"autoupdate":false,"share":"disabled"}' + - 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 + volumes: + - name: workspace + persistentVolumeClaim: + claimName: opencode-server-data diff --git a/deploy/gitops/node/jd01/runtime-v03/workloads.yaml b/deploy/gitops/node/jd01/runtime-v03/workloads.yaml index bc96d60a..c33ed90e 100644 --- a/deploy/gitops/node/jd01/runtime-v03/workloads.yaml +++ b/deploy/gitops/node/jd01/runtime-v03/workloads.yaml @@ -1340,6 +1340,8 @@ items: 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