172 lines
8.5 KiB
YAML
172 lines
8.5 KiB
YAML
{
|
|
"apiVersion": "v1",
|
|
"kind": "List",
|
|
"items": [
|
|
{
|
|
"apiVersion": "v1",
|
|
"kind": "ConfigMap",
|
|
"metadata": {
|
|
"name": "hwlab-v02-postgres-init",
|
|
"namespace": "hwlab-v02",
|
|
"labels": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres",
|
|
"app.kubernetes.io/part-of": "hwlab",
|
|
"hwlab.pikastech.local/environment": "v02",
|
|
"hwlab.pikastech.local/gitops-target": "v02",
|
|
"hwlab.pikastech.local/profile": "v02"
|
|
}
|
|
},
|
|
"data": {
|
|
"0001_cloud_core_skeleton.sql": "-- HWLAB L1 Cloud Core schema skeleton.\n-- This file is source schema only; applying it to DEV/PROD is a separate\n-- operator action and is not performed by source tests or smokes.\n\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL DEFAULT '',\n status TEXT NOT NULL DEFAULT 'pending',\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS gateway_sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n gateway_service_id TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'pending',\n started_at TEXT,\n ended_at TEXT,\n gateway_session_json TEXT NOT NULL DEFAULT '{}'\n);\n\nCREATE TABLE IF NOT EXISTS box_resources (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n gateway_session_id TEXT,\n resource_state TEXT NOT NULL DEFAULT 'available',\n labels_json TEXT NOT NULL DEFAULT '{}',\n resource_json TEXT NOT NULL DEFAULT '{}',\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS box_capabilities (\n id TEXT PRIMARY KEY,\n box_resource_id TEXT NOT NULL,\n capability_type TEXT NOT NULL,\n capability_json TEXT NOT NULL DEFAULT '{}',\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS wiring_configs (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n wiring_json TEXT NOT NULL DEFAULT '{}',\n status TEXT NOT NULL DEFAULT 'pending',\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS patch_panel_status (\n id TEXT PRIMARY KEY,\n gateway_session_id TEXT,\n wiring_config_id TEXT,\n status_json TEXT NOT NULL DEFAULT '{}',\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS hardware_operations (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n requested_by TEXT,\n operation_type TEXT NOT NULL,\n operation_json TEXT NOT NULL DEFAULT '{}',\n status TEXT NOT NULL DEFAULT 'requested',\n requested_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS audit_events (\n id TEXT PRIMARY KEY,\n request_id TEXT NOT NULL,\n actor TEXT NOT NULL,\n source TEXT NOT NULL,\n operation TEXT NOT NULL,\n target TEXT NOT NULL,\n result TEXT NOT NULL,\n timestamp TEXT NOT NULL,\n event_json TEXT NOT NULL DEFAULT '{}'\n);\n\nCREATE TABLE IF NOT EXISTS agent_sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n agent_id TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'pending',\n started_at TEXT,\n ended_at TEXT\n);\n\nCREATE TABLE IF NOT EXISTS worker_sessions (\n id TEXT PRIMARY KEY,\n agent_session_id TEXT,\n worker_id TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'pending',\n started_at TEXT,\n ended_at TEXT\n);\n\nCREATE TABLE IF NOT EXISTS agent_trace_events (\n id TEXT PRIMARY KEY,\n trace_id TEXT NOT NULL,\n agent_session_id TEXT,\n worker_session_id TEXT,\n level TEXT NOT NULL DEFAULT 'info',\n message TEXT NOT NULL DEFAULT '',\n event_json TEXT NOT NULL DEFAULT '{}',\n occurred_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS evidence_records (\n id TEXT PRIMARY KEY,\n project_id TEXT,\n operation_id TEXT,\n evidence_type TEXT NOT NULL,\n uri TEXT NOT NULL DEFAULT '',\n metadata_json TEXT NOT NULL DEFAULT '{}',\n created_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS hwlab_schema_migrations (\n id TEXT PRIMARY KEY,\n schema_version TEXT NOT NULL,\n applied_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,\n migration_json TEXT NOT NULL DEFAULT '{}'\n);\n\nINSERT INTO hwlab_schema_migrations (id, schema_version, applied_at, migration_json)\nVALUES (\n '0001_cloud_core_skeleton',\n 'runtime-durable-postgres-v1',\n CURRENT_TIMESTAMP,\n '{\"path\":\"internal/db/migrations/0001_cloud_core_skeleton.sql\",\"runtime\":\"cloud-api\"}'\n)\nON CONFLICT (id) DO UPDATE SET\n schema_version = EXCLUDED.schema_version,\n migration_json = EXCLUDED.migration_json;\n"
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "v1",
|
|
"kind": "Service",
|
|
"metadata": {
|
|
"name": "hwlab-v02-postgres",
|
|
"namespace": "hwlab-v02",
|
|
"labels": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres",
|
|
"app.kubernetes.io/part-of": "hwlab",
|
|
"hwlab.pikastech.local/environment": "v02",
|
|
"hwlab.pikastech.local/gitops-target": "v02",
|
|
"hwlab.pikastech.local/profile": "v02"
|
|
}
|
|
},
|
|
"spec": {
|
|
"type": "ClusterIP",
|
|
"selector": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres"
|
|
},
|
|
"ports": [
|
|
{
|
|
"name": "postgres",
|
|
"port": 5432,
|
|
"targetPort": "postgres"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"apiVersion": "apps/v1",
|
|
"kind": "StatefulSet",
|
|
"metadata": {
|
|
"name": "hwlab-v02-postgres",
|
|
"namespace": "hwlab-v02",
|
|
"labels": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres",
|
|
"app.kubernetes.io/part-of": "hwlab",
|
|
"hwlab.pikastech.local/environment": "v02",
|
|
"hwlab.pikastech.local/gitops-target": "v02",
|
|
"hwlab.pikastech.local/profile": "v02"
|
|
}
|
|
},
|
|
"spec": {
|
|
"serviceName": "hwlab-v02-postgres",
|
|
"replicas": 1,
|
|
"selector": {
|
|
"matchLabels": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres"
|
|
}
|
|
},
|
|
"template": {
|
|
"metadata": {
|
|
"labels": {
|
|
"app.kubernetes.io/name": "hwlab-v02-postgres",
|
|
"app.kubernetes.io/part-of": "hwlab",
|
|
"hwlab.pikastech.local/environment": "v02",
|
|
"hwlab.pikastech.local/gitops-target": "v02",
|
|
"hwlab.pikastech.local/profile": "v02"
|
|
}
|
|
},
|
|
"spec": {
|
|
"containers": [
|
|
{
|
|
"name": "postgres",
|
|
"image": "127.0.0.1:5000/hwlab/postgres:16-alpine",
|
|
"imagePullPolicy": "IfNotPresent",
|
|
"env": [
|
|
{
|
|
"name": "POSTGRES_DB",
|
|
"value": "hwlab_v02"
|
|
},
|
|
{
|
|
"name": "POSTGRES_USER",
|
|
"value": "hwlab_v02"
|
|
},
|
|
{
|
|
"name": "POSTGRES_PASSWORD",
|
|
"valueFrom": {
|
|
"secretKeyRef": {
|
|
"name": "hwlab-v02-postgres",
|
|
"key": "POSTGRES_PASSWORD"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"ports": [
|
|
{
|
|
"name": "postgres",
|
|
"containerPort": 5432
|
|
}
|
|
],
|
|
"readinessProbe": {
|
|
"tcpSocket": {
|
|
"port": "postgres"
|
|
},
|
|
"initialDelaySeconds": 5,
|
|
"periodSeconds": 10
|
|
},
|
|
"livenessProbe": {
|
|
"tcpSocket": {
|
|
"port": "postgres"
|
|
},
|
|
"initialDelaySeconds": 30,
|
|
"periodSeconds": 20
|
|
},
|
|
"volumeMounts": [
|
|
{
|
|
"name": "data",
|
|
"mountPath": "/var/lib/postgresql/data"
|
|
},
|
|
{
|
|
"name": "init",
|
|
"mountPath": "/docker-entrypoint-initdb.d",
|
|
"readOnly": true
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"volumes": [
|
|
{
|
|
"name": "init",
|
|
"configMap": {
|
|
"name": "hwlab-v02-postgres-init"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"volumeClaimTemplates": [
|
|
{
|
|
"metadata": {
|
|
"name": "data"
|
|
},
|
|
"spec": {
|
|
"accessModes": [
|
|
"ReadWriteOnce"
|
|
],
|
|
"resources": {
|
|
"requests": {
|
|
"storage": "8Gi"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|