apiVersion: v1 items: - apiVersion: v1 kind: Namespace metadata: name: trustgraph spec: {} - apiVersion: v1 kind: PersistentVolume metadata: name: cassandra spec: accessModes: - ReadWriteOnce capacity: storage: 20G hostPath: path: /data/pv-cassandra persistentVolumeReclaimPolicy: Delete - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cassandra namespace: trustgraph spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G - apiVersion: apps/v1 kind: Deployment metadata: labels: app: cassandra name: cassandra namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: cassandra template: metadata: labels: app: cassandra spec: containers: - env: - name: JVM_OPTS value: -Xms256M -Xmx256M image: docker.io/cassandra:4.1.6 name: cassandra ports: - containerPort: 9042 hostPort: 9042 resources: limits: cpu: '1.0' memory: 800M requests: cpu: '0.5' memory: 800M securityContext: runAsGroup: 0 runAsUser: 0 volumeMounts: - mountPath: /var/lib/cassandra name: cassandra volumes: - name: cassandra persistentVolumeClaim: claimName: cassandra - apiVersion: v1 kind: Service metadata: name: cassandra namespace: trustgraph spec: ports: - name: api port: 9042 targetPort: 9042 selector: app: cassandra type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: chunker name: chunker namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: chunker template: metadata: labels: app: chunker spec: containers: - command: - chunker-token - -p - pulsar://pulsar:6650 - --chunk-size - '250' - --chunk-overlap - '15' image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: chunker resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: chunker namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: chunker type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: embeddings name: embeddings namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: embeddings template: metadata: labels: app: embeddings spec: containers: - command: - embeddings-hf - -p - pulsar://pulsar:6650 - -m - all-MiniLM-L6-v2 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: embeddings resources: limits: cpu: '1.0' memory: 400M requests: cpu: '0.5' memory: 400M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: embeddings namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: embeddings type: LoadBalancer - apiVersion: v1 kind: PersistentVolume metadata: name: grafana-storage spec: accessModes: - ReadWriteOnce capacity: storage: 20G hostPath: path: /data/pv-grafana-storage persistentVolumeReclaimPolicy: Delete - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: grafana-storage namespace: trustgraph spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G - apiVersion: v1 data: dashboard.yml: "\napiVersion: 1\n\nproviders:\n\n - name: 'trustgraph.ai'\n \ \ orgId: 1\n folder: 'TrustGraph'\n folderUid: 'b6c5be90-d432-4df8-aeab-737c7b151228'\n\ \ type: file\n disableDeletion: false\n updateIntervalSeconds: 30\n\ \ allowUiUpdates: true\n options:\n path: /var/lib/grafana/dashboards\n\ \ foldersFromFilesStructure: false\n\n" kind: ConfigMap metadata: name: prov-dash namespace: trustgraph - apiVersion: v1 data: datasource.yml: "apiVersion: 1\n\nprune: true\n\ndatasources:\n - name: Prometheus\n\ \ type: prometheus\n access: proxy\n orgId: 1\n # Sets\ \ a custom UID to reference this\n # data source in other parts of the configuration.\n\ \ # If not specified, Grafana generates one.\n uid: 'f6b18033-5918-4e05-a1ca-4cb30343b129'\n\ \n url: http://prometheus:9090\n\n basicAuth: false\n withCredentials:\ \ false\n isDefault: true\n editable: true\n\n" kind: ConfigMap metadata: name: prov-data namespace: trustgraph - apiVersion: v1 data: dashboard.json: "{\n \"annotations\": {\n \"list\": [\n {\n \"\ builtIn\": 1,\n \"datasource\": {\n \"type\": \"grafana\",\n\ \ \"uid\": \"-- Grafana --\"\n },\n \"enable\": true,\n\ \ \"hide\": true,\n \"iconColor\": \"rgba(0, 211, 255, 1)\",\n\ \ \"name\": \"Annotations & Alerts\",\n \"type\": \"dashboard\"\ \n }\n ]\n },\n \"editable\": true,\n \"fiscalYearStartMonth\": 0,\n\ \ \"graphTooltip\": 0,\n \"id\": 2,\n \"links\": [],\n \"liveNow\": false,\n\ \ \"panels\": [\n {\n \"datasource\": {\n \"type\": \"prometheus\"\ ,\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n },\n \ \ \"fieldConfig\": {\n \"defaults\": {\n \"custom\": {\n \ \ \"hideFrom\": {\n \"legend\": false,\n \ \ \"tooltip\": false,\n \"viz\": false\n },\n \ \ \"scaleDistribution\": {\n \"type\": \"linear\"\n \ \ }\n }\n },\n \"overrides\": []\n },\n \ \ \"gridPos\": {\n \"h\": 8,\n \"w\": 12,\n \"x\": 0,\n\ \ \"y\": 0\n },\n \"id\": 7,\n \"options\": {\n \ \ \"calculate\": false,\n \"cellGap\": 1,\n \"color\": {\n \ \ \"exponent\": 0.5,\n \"fill\": \"dark-orange\",\n \ \ \"mode\": \"scheme\",\n \"reverse\": false,\n \"scale\"\ : \"exponential\",\n \"scheme\": \"Oranges\",\n \"steps\"\ : 64\n },\n \"exemplars\": {\n \"color\": \"rgba(255,0,255,0.7)\"\ \n },\n \"filterValues\": {\n \"le\": 1e-9\n },\n\ \ \"legend\": {\n \"show\": true\n },\n \"rowsFrame\"\ : {\n \"layout\": \"auto\"\n },\n \"tooltip\": {\n \ \ \"mode\": \"single\",\n \"showColorScale\": false,\n \ \ \"yHistogram\": false\n },\n \"yAxis\": {\n \"\ axisPlacement\": \"left\",\n \"reverse\": false\n }\n },\n\ \ \"pluginVersion\": \"11.1.4\",\n \"targets\": [\n {\n \ \ \"datasource\": {\n \"type\": \"prometheus\",\n \ \ \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n },\n \ \ \"editorMode\": \"code\",\n \"exemplar\": false,\n \"\ expr\": \"max by(le) (text_completion_duration_bucket)\",\n \"format\"\ : \"heatmap\",\n \"instant\": false,\n \"legendFormat\": \"\ 99%\",\n \"range\": true,\n \"refId\": \"A\"\n }\n\ \ ],\n \"title\": \"LLM latency\",\n \"type\": \"heatmap\"\n\ \ },\n {\n \"datasource\": {\n \"type\": \"prometheus\",\n\ \ \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n },\n \ \ \"fieldConfig\": {\n \"defaults\": {\n \"custom\": {\n \ \ \"hideFrom\": {\n \"legend\": false,\n \"\ tooltip\": false,\n \"viz\": false\n },\n \ \ \"scaleDistribution\": {\n \"type\": \"linear\"\n \ \ }\n }\n },\n \"overrides\": []\n },\n \"\ gridPos\": {\n \"h\": 8,\n \"w\": 12,\n \"x\": 12,\n \ \ \"y\": 0\n },\n \"id\": 2,\n \"options\": {\n \"\ calculate\": false,\n \"cellGap\": 5,\n \"cellValues\": {\n \ \ \"unit\": \"\"\n },\n \"color\": {\n \"exponent\"\ : 0.5,\n \"fill\": \"dark-orange\",\n \"mode\": \"scheme\"\ ,\n \"reverse\": false,\n \"scale\": \"exponential\",\n \ \ \"scheme\": \"Oranges\",\n \"steps\": 64\n },\n \ \ \"exemplars\": {\n \"color\": \"rgba(255,0,255,0.7)\"\n \ \ },\n \"filterValues\": {\n \"le\": 1e-9\n },\n \ \ \"legend\": {\n \"show\": true\n },\n \"rowsFrame\"\ : {\n \"layout\": \"auto\"\n },\n \"tooltip\": {\n \ \ \"mode\": \"single\",\n \"showColorScale\": false,\n \ \ \"yHistogram\": false\n },\n \"yAxis\": {\n \"\ axisLabel\": \"processing status\",\n \"axisPlacement\": \"left\",\n\ \ \"reverse\": false\n }\n },\n \"pluginVersion\"\ : \"11.1.4\",\n \"targets\": [\n {\n \"datasource\": {\n\ \ \"type\": \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"disableTextWrap\": false,\n \"editorMode\"\ : \"builder\",\n \"exemplar\": false,\n \"expr\": \"sum by(status)\ \ (rate(processing_count_total{status!=\\\"success\\\"}[$__rate_interval]))\"\ ,\n \"format\": \"heatmap\",\n \"fullMetaSearch\": false,\n\ \ \"includeNullMetadata\": true,\n \"instant\": false,\n \ \ \"interval\": \"\",\n \"legendFormat\": \"{{status}}\",\n\ \ \"range\": true,\n \"refId\": \"A\",\n \"useBackend\"\ : false\n }\n ],\n \"title\": \"Error rate\",\n \"type\"\ : \"heatmap\"\n },\n {\n \"datasource\": {\n \"type\": \"\ prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n \ \ },\n \"fieldConfig\": {\n \"defaults\": {\n \"color\"\ : {\n \"mode\": \"palette-classic\"\n },\n \"custom\"\ : {\n \"axisBorderShow\": false,\n \"axisCenteredZero\"\ : false,\n \"axisColorMode\": \"text\",\n \"axisLabel\"\ : \"\",\n \"axisPlacement\": \"auto\",\n \"barAlignment\"\ : 0,\n \"drawStyle\": \"line\",\n \"fillOpacity\": 0,\n\ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \ \ \"viz\": false\n },\n \"insertNulls\": false,\n\ \ \"lineInterpolation\": \"linear\",\n \"lineWidth\":\ \ 1,\n \"pointSize\": 5,\n \"scaleDistribution\": {\n\ \ \"type\": \"linear\"\n },\n \"showPoints\"\ : \"auto\",\n \"spanNulls\": false,\n \"stacking\": {\n\ \ \"group\": \"A\",\n \"mode\": \"none\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\ \n }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 9,\n \"w\": 12,\n \"x\": 0,\n \"y\": 8\n\ \ },\n \"id\": 1,\n \"options\": {\n \"legend\": {\n \ \ \"calcs\": [],\n \"displayMode\": \"list\",\n \"\ placement\": \"bottom\",\n \"showLegend\": true\n },\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"\ none\"\n }\n },\n \"targets\": [\n {\n \"datasource\"\ : {\n \"type\": \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"editorMode\": \"builder\",\n \"expr\":\ \ \"rate(request_latency_count[1m])\",\n \"instant\": false,\n \ \ \"legendFormat\": \"{{instance}}\",\n \"range\": true,\n \ \ \"refId\": \"A\"\n }\n ],\n \"title\": \"Request rate\"\ ,\n \"type\": \"timeseries\"\n },\n {\n \"datasource\": {\n\ \ \"type\": \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"fieldConfig\": {\n \"defaults\": {\n \"\ color\": {\n \"mode\": \"palette-classic\"\n },\n \ \ \"custom\": {\n \"axisBorderShow\": false,\n \"axisCenteredZero\"\ : false,\n \"axisColorMode\": \"text\",\n \"axisLabel\"\ : \"\",\n \"axisPlacement\": \"auto\",\n \"barAlignment\"\ : 0,\n \"drawStyle\": \"line\",\n \"fillOpacity\": 0,\n\ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \ \ \"viz\": false\n },\n \"insertNulls\": false,\n\ \ \"lineInterpolation\": \"linear\",\n \"lineWidth\":\ \ 1,\n \"pointSize\": 5,\n \"scaleDistribution\": {\n\ \ \"type\": \"linear\"\n },\n \"showPoints\"\ : \"auto\",\n \"spanNulls\": false,\n \"stacking\": {\n\ \ \"group\": \"A\",\n \"mode\": \"none\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\ \n }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 9,\n \"w\": 12,\n \"x\": 12,\n \"y\": 8\n\ \ },\n \"id\": 5,\n \"options\": {\n \"legend\": {\n \ \ \"calcs\": [],\n \"displayMode\": \"list\",\n \"\ placement\": \"bottom\",\n \"showLegend\": true\n },\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"\ none\"\n }\n },\n \"pluginVersion\": \"10.0.0\",\n \"\ targets\": [\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"editorMode\": \"builder\",\n \"expr\":\ \ \"pulsar_msg_backlog\",\n \"instant\": false,\n \"legendFormat\"\ : \"{{topic}}\",\n \"range\": true,\n \"refId\": \"A\"\n \ \ }\n ],\n \"title\": \"Pub/sub backlog\",\n \"type\":\ \ \"timeseries\"\n },\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"fieldConfig\": {\n \"defaults\": {\n \"\ color\": {\n \"fixedColor\": \"semi-dark-green\",\n \"\ mode\": \"palette-classic-by-name\"\n },\n \"custom\": {\n\ \ \"axisBorderShow\": false,\n \"axisCenteredZero\": false,\n\ \ \"axisColorMode\": \"text\",\n \"axisLabel\": \"\",\n\ \ \"axisPlacement\": \"auto\",\n \"fillOpacity\": 80,\n\ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \ \ \"viz\": false\n },\n \"lineWidth\": 1,\n \ \ \"scaleDistribution\": {\n \"type\": \"linear\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\ \n }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 7,\n \"w\": 12,\n \"x\": 0,\n \"y\": 17\n\ \ },\n \"id\": 10,\n \"options\": {\n \"barRadius\": 0,\n\ \ \"barWidth\": 0.97,\n \"fullHighlight\": false,\n \"\ groupWidth\": 0.7,\n \"legend\": {\n \"calcs\": [],\n \ \ \"displayMode\": \"list\",\n \"placement\": \"bottom\",\n \ \ \"showLegend\": true\n },\n \"orientation\": \"auto\",\n\ \ \"showValue\": \"auto\",\n \"stacking\": \"none\",\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"none\"\ \n },\n \"xTickLabelRotation\": 0,\n \"xTickLabelSpacing\"\ : 0\n },\n \"pluginVersion\": \"11.1.4\",\n \"targets\": [\n\ \ {\n \"datasource\": {\n \"type\": \"prometheus\"\ ,\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n \ \ },\n \"disableTextWrap\": false,\n \"editorMode\": \"builder\"\ ,\n \"exemplar\": false,\n \"expr\": \"max by(le) (chunk_size_bucket)\"\ ,\n \"format\": \"heatmap\",\n \"fullMetaSearch\": false,\n\ \ \"includeNullMetadata\": false,\n \"instant\": true,\n \ \ \"legendFormat\": \"{{le}}\",\n \"range\": false,\n \ \ \"refId\": \"A\",\n \"useBackend\": false\n }\n ],\n\ \ \"title\": \"Chunk size\",\n \"type\": \"barchart\"\n },\n \ \ {\n \"datasource\": {\n \"type\": \"prometheus\",\n \"\ uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n },\n \"fieldConfig\"\ : {\n \"defaults\": {\n \"color\": {\n \"mode\":\ \ \"palette-classic\"\n },\n \"custom\": {\n \"\ axisBorderShow\": false,\n \"axisCenteredZero\": false,\n \ \ \"axisColorMode\": \"text\",\n \"axisLabel\": \"\",\n \ \ \"axisPlacement\": \"auto\",\n \"barAlignment\": 0,\n \ \ \"drawStyle\": \"line\",\n \"fillOpacity\": 0,\n \ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \"\ viz\": false\n },\n \"insertNulls\": false,\n \ \ \"lineInterpolation\": \"linear\",\n \"lineWidth\": 1,\n \ \ \"pointSize\": 5,\n \"scaleDistribution\": {\n \ \ \"type\": \"linear\"\n },\n \"showPoints\": \"\ auto\",\n \"spanNulls\": false,\n \"stacking\": {\n \ \ \"group\": \"A\",\n \"mode\": \"none\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\n\ \ }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 7,\n \"w\": 12,\n \"x\": 12,\n \"y\": 17\n\ \ },\n \"id\": 11,\n \"options\": {\n \"legend\": {\n\ \ \"calcs\": [],\n \"displayMode\": \"list\",\n \"\ placement\": \"bottom\",\n \"showLegend\": true\n },\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"\ none\"\n }\n },\n \"pluginVersion\": \"11.1.4\",\n \"\ targets\": [\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"disableTextWrap\": false,\n \"editorMode\"\ : \"builder\",\n \"exemplar\": false,\n \"expr\": \"increase(processing_count_total{status!=\\\ \"success\\\"}[$__rate_interval])\",\n \"format\": \"time_series\"\ ,\n \"fullMetaSearch\": false,\n \"includeNullMetadata\":\ \ true,\n \"instant\": false,\n \"legendFormat\": \"{{instance}}\"\ ,\n \"range\": true,\n \"refId\": \"A\",\n \"useBackend\"\ : false\n }\n ],\n \"title\": \"Errors\",\n \"type\":\ \ \"timeseries\"\n },\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"fieldConfig\": {\n \"defaults\": {\n \"\ color\": {\n \"fixedColor\": \"light-blue\",\n \"mode\"\ : \"palette-classic\"\n },\n \"custom\": {\n \"\ axisBorderShow\": false,\n \"axisCenteredZero\": false,\n \ \ \"axisColorMode\": \"text\",\n \"axisLabel\": \"\",\n \ \ \"axisPlacement\": \"auto\",\n \"barAlignment\": 0,\n \ \ \"drawStyle\": \"line\",\n \"fillOpacity\": 0,\n \ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \"\ viz\": false\n },\n \"insertNulls\": false,\n \ \ \"lineInterpolation\": \"linear\",\n \"lineWidth\": 1,\n \ \ \"pointSize\": 5,\n \"scaleDistribution\": {\n \ \ \"type\": \"linear\"\n },\n \"showPoints\": \"\ auto\",\n \"spanNulls\": false,\n \"stacking\": {\n \ \ \"group\": \"A\",\n \"mode\": \"none\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\n\ \ }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 8,\n \"w\": 12,\n \"x\": 0,\n \"y\": 24\n\ \ },\n \"id\": 12,\n \"options\": {\n \"legend\": {\n\ \ \"calcs\": [],\n \"displayMode\": \"list\",\n \"\ placement\": \"bottom\",\n \"showLegend\": true\n },\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"\ none\"\n }\n },\n \"pluginVersion\": \"11.1.4\",\n \"\ targets\": [\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"disableTextWrap\": false,\n \"editorMode\"\ : \"builder\",\n \"expr\": \"rate(process_cpu_seconds_total[$__rate_interval])\"\ ,\n \"fullMetaSearch\": false,\n \"includeNullMetadata\":\ \ true,\n \"instant\": false,\n \"legendFormat\": \"{{instance}}\"\ ,\n \"range\": true,\n \"refId\": \"A\",\n \"useBackend\"\ : false\n }\n ],\n \"title\": \"CPU\",\n \"type\": \"\ timeseries\"\n },\n {\n \"datasource\": {\n \"type\": \"prometheus\"\ ,\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\n },\n \ \ \"fieldConfig\": {\n \"defaults\": {\n \"color\": {\n \ \ \"mode\": \"palette-classic\"\n },\n \"custom\"\ : {\n \"axisBorderShow\": false,\n \"axisCenteredZero\"\ : false,\n \"axisColorMode\": \"text\",\n \"axisLabel\"\ : \"GB\",\n \"axisPlacement\": \"auto\",\n \"barAlignment\"\ : 0,\n \"drawStyle\": \"line\",\n \"fillOpacity\": 0,\n\ \ \"gradientMode\": \"none\",\n \"hideFrom\": {\n \ \ \"legend\": false,\n \"tooltip\": false,\n \ \ \"viz\": false\n },\n \"insertNulls\": false,\n\ \ \"lineInterpolation\": \"linear\",\n \"lineWidth\":\ \ 1,\n \"pointSize\": 5,\n \"scaleDistribution\": {\n\ \ \"type\": \"linear\"\n },\n \"showPoints\"\ : \"auto\",\n \"spanNulls\": false,\n \"stacking\": {\n\ \ \"group\": \"A\",\n \"mode\": \"none\"\n \ \ },\n \"thresholdsStyle\": {\n \"mode\": \"off\"\ \n }\n },\n \"mappings\": [],\n \"thresholds\"\ : {\n \"mode\": \"absolute\",\n \"steps\": [\n \ \ {\n \"color\": \"green\",\n \"value\"\ : null\n },\n {\n \"color\": \"red\"\ ,\n \"value\": 80\n }\n ]\n \ \ }\n },\n \"overrides\": []\n },\n \"gridPos\": {\n\ \ \"h\": 8,\n \"w\": 12,\n \"x\": 12,\n \"y\": 24\n\ \ },\n \"id\": 13,\n \"options\": {\n \"legend\": {\n\ \ \"calcs\": [],\n \"displayMode\": \"list\",\n \"\ placement\": \"bottom\",\n \"showLegend\": true\n },\n \ \ \"tooltip\": {\n \"mode\": \"single\",\n \"sort\": \"\ none\"\n }\n },\n \"targets\": [\n {\n \"datasource\"\ : {\n \"type\": \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"disableTextWrap\": false,\n \"editorMode\"\ : \"builder\",\n \"expr\": \"process_resident_memory_bytes / 1073741824\"\ ,\n \"fullMetaSearch\": false,\n \"includeNullMetadata\":\ \ true,\n \"instant\": false,\n \"legendFormat\": \"{{instance}}\"\ ,\n \"range\": true,\n \"refId\": \"A\",\n \"useBackend\"\ : false\n }\n ],\n \"title\": \"Memory\",\n \"type\":\ \ \"timeseries\"\n },\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"fieldConfig\": {\n \"defaults\": {\n \"\ color\": {\n \"mode\": \"thresholds\"\n },\n \"\ custom\": {\n \"align\": \"auto\",\n \"cellOptions\":\ \ {\n \"type\": \"auto\"\n },\n \"filterable\"\ : false,\n \"inspect\": false\n },\n \"mappings\"\ : [],\n \"thresholds\": {\n \"mode\": \"absolute\",\n \ \ \"steps\": [\n {\n \"color\": \"green\"\ ,\n \"value\": null\n },\n {\n \ \ \"color\": \"red\",\n \"value\": 80\n \ \ }\n ]\n }\n },\n \"overrides\": []\n\ \ },\n \"gridPos\": {\n \"h\": 7,\n \"w\": 12,\n \ \ \"x\": 0,\n \"y\": 32\n },\n \"id\": 14,\n \"options\"\ : {\n \"cellHeight\": \"sm\",\n \"footer\": {\n \"countRows\"\ : false,\n \"fields\": \"\",\n \"reducer\": [\n \ \ \"sum\"\n ],\n \"show\": false\n },\n \"\ showHeader\": true\n },\n \"pluginVersion\": \"11.1.4\",\n \"\ targets\": [\n {\n \"datasource\": {\n \"type\":\ \ \"prometheus\",\n \"uid\": \"f6b18033-5918-4e05-a1ca-4cb30343b129\"\ \n },\n \"disableTextWrap\": false,\n \"editorMode\"\ : \"builder\",\n \"exemplar\": false,\n \"expr\": \"last_over_time(params_info[$__interval])\"\ ,\n \"format\": \"table\",\n \"fullMetaSearch\": false,\n\ \ \"includeNullMetadata\": true,\n \"instant\": true,\n \ \ \"legendFormat\": \"__auto\",\n \"range\": false,\n \ \ \"refId\": \"A\",\n \"useBackend\": false\n }\n ],\n\ \ \"title\": \"Model parameters\",\n \"transformations\": [\n \ \ {\n \"id\": \"filterFieldsByName\",\n \"options\": {\n\ \ \"include\": {\n \"names\": [\n \"\ instance\",\n \"model\"\n ]\n }\n \ \ }\n },\n {\n \"id\": \"filterByValue\",\n \ \ \"options\": {\n \"filters\": [\n {\n \ \ \"config\": {\n \"id\": \"equal\",\n \ \ \"options\": {\n \"value\": \"\"\n \ \ }\n },\n \"fieldName\": \"model\"\n \ \ }\n ],\n \"match\": \"all\",\n \"\ type\": \"exclude\"\n }\n }\n ],\n \"type\": \"table\"\ \n }\n ],\n \"refresh\": \"5s\",\n \"schemaVersion\": 39,\n \"tags\"\ : [],\n \"templating\": {\n \"list\": []\n },\n \"time\": {\n \"from\"\ : \"now-5m\",\n \"to\": \"now\"\n },\n \"timepicker\": {},\n \"timezone\"\ : \"\",\n \"title\": \"Overview\",\n \"uid\": \"b5c8abf8-fe79-496b-b028-10bde917d1f0\"\ ,\n \"version\": 3,\n \"weekStart\": \"\"\n}\n" kind: ConfigMap metadata: name: dashboards namespace: trustgraph - apiVersion: apps/v1 kind: Deployment metadata: labels: app: grafana name: grafana namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - env: - name: GF_ORG_NAME value: trustgraph.ai image: docker.io/grafana/grafana:11.1.4 name: grafana ports: - containerPort: 3000 hostPort: 3000 resources: limits: cpu: '1.0' memory: 256M requests: cpu: '0.5' memory: 256M securityContext: runAsGroup: 0 runAsUser: 0 volumeMounts: - mountPath: /var/lib/grafana name: grafana-storage - mountPath: /etc/grafana/provisioning/dashboards/ name: prov-dash - mountPath: /etc/grafana/provisioning/datasources/ name: prov-data - mountPath: /var/lib/grafana/dashboards/ name: dashboards volumes: - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage - configMap: name: prov-dash name: prov-dash - configMap: name: prov-data name: prov-data - configMap: name: dashboards name: dashboards - apiVersion: v1 kind: Service metadata: name: grafana namespace: trustgraph spec: ports: - name: http port: 3000 targetPort: 3000 selector: app: grafana type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: graph-rag name: graph-rag namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: graph-rag template: metadata: labels: app: graph-rag spec: containers: - command: - graph-rag - -p - pulsar://pulsar:6650 - --prompt-request-queue - non-persistent://tg/request/prompt-rag - --prompt-response-queue - non-persistent://tg/response/prompt-rag-response - --entity-limit - '50' - --triple-limit - '30' - --max-subgraph-size - '3000' image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: graph-rag resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: graph-rag namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: graph-rag type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: kg-extract-definitions name: kg-extract-definitions namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: kg-extract-definitions template: metadata: labels: app: kg-extract-definitions spec: containers: - command: - kg-extract-definitions - -p - pulsar://pulsar:6650 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: kg-extract-definitions resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: kg-extract-definitions namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: kg-extract-definitions type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: kg-extract-relationships name: kg-extract-relationships namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: kg-extract-relationships template: metadata: labels: app: kg-extract-relationships spec: containers: - command: - kg-extract-relationships - -p - pulsar://pulsar:6650 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: kg-extract-relationships resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: kg-extract-relationships namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: kg-extract-relationships type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: kg-extract-topics name: kg-extract-topics namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: kg-extract-topics template: metadata: labels: app: kg-extract-topics spec: containers: - command: - kg-extract-topics - -p - pulsar://pulsar:6650 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: kg-extract-topics resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: apps/v1 kind: Deployment metadata: labels: app: pdf-decoder name: pdf-decoder namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: pdf-decoder template: metadata: labels: app: pdf-decoder spec: containers: - command: - pdf-decoder - -p - pulsar://pulsar:6650 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: pdf-decoder resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: pdf-decoder namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: pdf-decoder type: LoadBalancer - apiVersion: v1 data: prometheus.yml: "global:\n\n scrape_interval: 15s # By default, scrape targets\ \ every 15 seconds.\n\n # Attach these labels to any time series or alerts\ \ when communicating with\n # external systems (federation, remote storage,\ \ Alertmanager).\n external_labels:\n monitor: 'trustgraph'\n\n# A scrape\ \ configuration containing exactly one endpoint to scrape:\n# Here it's Prometheus\ \ itself.\nscrape_configs:\n\n # The job name is added as a label `job=`\ \ to any timeseries\n # scraped from this config.\n\n - job_name: 'trustgraph'\n\ \n # Override the global default and scrape targets from this job every\n\ \ # 5 seconds.\n scrape_interval: 5s\n\n static_configs:\n - targets:\n\ \ - 'pdf-decoder:8000'\n - 'chunker:8000'\n - 'vectorize:8000'\n\ \ - 'embeddings:8000'\n - 'kg-extract-definitions:8000'\n \ \ - 'kg-extract-topics:8000'\n - 'kg-extract-relationships:8000'\n\ \ - 'metering:8000'\n - 'store-graph-embeddings:8000'\n \ \ - 'store-triples:8000'\n - 'text-completion:8000'\n - 'text-completion-rag:8000'\n\ \ - 'graph-rag:8000'\n - 'prompt:8000'\n - 'prompt-rag:8000'\n\ \ - 'query-graph-embeddings:8000'\n - 'query-triples:8000'\n \ \ - 'pulsar:8080'\n\n" kind: ConfigMap metadata: name: prometheus-cfg namespace: trustgraph - apiVersion: v1 kind: PersistentVolume metadata: name: prometheus-data spec: accessModes: - ReadWriteOnce capacity: storage: 20G hostPath: path: /data/pv-prometheus-data persistentVolumeReclaimPolicy: Delete - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: prometheus-data namespace: trustgraph spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G - apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus name: prometheus namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: containers: - image: docker.io/prom/prometheus:v2.53.2 name: prometheus ports: - containerPort: 9090 hostPort: 9090 resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumeMounts: - mountPath: /etc/prometheus/ name: prometheus-cfg - mountPath: /prometheus name: prometheus-data volumes: - configMap: name: prometheus-cfg name: prometheus-cfg - name: prometheus-data persistentVolumeClaim: claimName: prometheus-data - apiVersion: v1 kind: Service metadata: name: prometheus namespace: trustgraph spec: ports: - name: http port: 9090 targetPort: 9090 selector: app: prometheus type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: prompt name: prompt namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: prompt template: metadata: labels: app: prompt spec: containers: - command: - prompt-template - -p - pulsar://pulsar:6650 - --text-completion-request-queue - non-persistent://tg/request/text-completion - --text-completion-response-queue - non-persistent://tg/response/text-completion-response - --definition-template - ' Study the following text and derive definitions for any discovered entities. Do not provide definitions for entities whose definitions are incomplete or unknown. Output relationships in JSON format as an arary of objects with fields: - entity: the name of the entity - definition: English text which defines the entity {text} You will respond only with raw JSON format data. Do not provide explanations. Do not use special characters in the abstract text. The abstract will be written as plain text. Do not add markdown formatting or headers or prefixes. Do not include null or unknown definitions. ' - --relationship-template - ' Study the following text and derive entity relationships. For each relationship, derive the subject, predicate and object of the relationship. Output relationships in JSON format as an arary of objects with fields: - subject: the subject of the relationship - predicate: the predicate - object: the object of the relationship - object-entity: false if the object is a simple data type: name, value or date. true if it is an entity. {text} You will respond only with raw JSON format data. Do not provide explanations. Do not use special characters in the abstract text. The abstract must be written as plain text. Do not add markdown formatting or headers or prefixes. ' - --topic-template - "You are a helpful assistant that performs information extraction tasks\ \ for a provided text.\nRead the provided text. You will identify topics\ \ and their definitions in JSON.\n\nReading Instructions:\n- Ignore document\ \ formatting in the provided text.\n- Study the provided text carefully.\n\ \nHere is the text:\n{text}\n\nResponse Instructions: \n- Do not respond\ \ with special characters.\n- Return only topics that are concepts and\ \ unique to the provided text.\n- Respond only with well-formed JSON.\n\ - The JSON response shall be an array of objects with keys \"topic\" and\ \ \"definition\". \n- The JSON response shall use the following structure:\n\ \n```json\n[{{\"topic\": string, \"definition\": string}}]\n```\n\n- Do\ \ not write any additional text or explanations." - --knowledge-query-template - 'Study the following set of knowledge statements. The statements are written in Cypher format that has been extracted from a knowledge graph. Use only the provided set of knowledge statements in your response. Do not speculate if the answer is not found in the provided set of knowledge statements. Here''s the knowledge statements: {graph} Use only the provided knowledge statements to respond to the following: {query} ' - --document-query-template - 'Study the following context. Use only the information provided in the context in your response. Do not speculate if the answer is not found in the provided set of knowledge statements. Here is the context: {documents} Use only the provided knowledge statements to respond to the following: {query} ' - --rows-template - ' Study the following text and derive objects which match the schema provided. You must output an array of JSON objects for each object you discover which matches the schema. For each object, output a JSON object whose fields carry the name field specified in the schema. {schema} {text} You will respond only with raw JSON format data. Do not provide explanations. Do not add markdown formatting or headers or prefixes. ' image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: prompt resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: prompt namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: prompt type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: prompt-rag name: prompt-rag namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: prompt-rag template: metadata: labels: app: prompt-rag spec: containers: - command: - prompt-template - -p - pulsar://pulsar:6650 - -i - non-persistent://tg/request/prompt-rag - -o - non-persistent://tg/response/prompt-rag-response - --text-completion-request-queue - non-persistent://tg/request/text-completion-rag - --text-completion-response-queue - non-persistent://tg/response/text-completion-rag-response - --definition-template - ' Study the following text and derive definitions for any discovered entities. Do not provide definitions for entities whose definitions are incomplete or unknown. Output relationships in JSON format as an arary of objects with fields: - entity: the name of the entity - definition: English text which defines the entity {text} You will respond only with raw JSON format data. Do not provide explanations. Do not use special characters in the abstract text. The abstract will be written as plain text. Do not add markdown formatting or headers or prefixes. Do not include null or unknown definitions. ' - --relationship-template - ' Study the following text and derive entity relationships. For each relationship, derive the subject, predicate and object of the relationship. Output relationships in JSON format as an arary of objects with fields: - subject: the subject of the relationship - predicate: the predicate - object: the object of the relationship - object-entity: false if the object is a simple data type: name, value or date. true if it is an entity. {text} You will respond only with raw JSON format data. Do not provide explanations. Do not use special characters in the abstract text. The abstract must be written as plain text. Do not add markdown formatting or headers or prefixes. ' - --topic-template - "You are a helpful assistant that performs information extraction tasks\ \ for a provided text.\nRead the provided text. You will identify topics\ \ and their definitions in JSON.\n\nReading Instructions:\n- Ignore document\ \ formatting in the provided text.\n- Study the provided text carefully.\n\ \nHere is the text:\n{text}\n\nResponse Instructions: \n- Do not respond\ \ with special characters.\n- Return only topics that are concepts and\ \ unique to the provided text.\n- Respond only with well-formed JSON.\n\ - The JSON response shall be an array of objects with keys \"topic\" and\ \ \"definition\". \n- The JSON response shall use the following structure:\n\ \n```json\n[{{\"topic\": string, \"definition\": string}}]\n```\n\n- Do\ \ not write any additional text or explanations." - --knowledge-query-template - 'Study the following set of knowledge statements. The statements are written in Cypher format that has been extracted from a knowledge graph. Use only the provided set of knowledge statements in your response. Do not speculate if the answer is not found in the provided set of knowledge statements. Here''s the knowledge statements: {graph} Use only the provided knowledge statements to respond to the following: {query} ' - --document-query-template - 'Study the following context. Use only the information provided in the context in your response. Do not speculate if the answer is not found in the provided set of knowledge statements. Here is the context: {documents} Use only the provided knowledge statements to respond to the following: {query} ' - --rows-template - ' Study the following text and derive objects which match the schema provided. You must output an array of JSON objects for each object you discover which matches the schema. For each object, output a JSON object whose fields carry the name field specified in the schema. {schema} {text} You will respond only with raw JSON format data. Do not provide explanations. Do not add markdown formatting or headers or prefixes. ' image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: prompt-rag resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: prompt-rag namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: prompt-rag type: LoadBalancer - apiVersion: v1 kind: PersistentVolume metadata: name: pulsar-data spec: accessModes: - ReadWriteOnce capacity: storage: 20G hostPath: path: /data/pv-pulsar-data persistentVolumeReclaimPolicy: Delete - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pulsar-data namespace: trustgraph spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G - apiVersion: apps/v1 kind: Deployment metadata: labels: app: pulsar name: pulsar namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: pulsar template: metadata: labels: app: pulsar spec: containers: - command: - bin/pulsar - standalone env: - name: PULSAR_MEM value: -Xms600M -Xmx600M image: docker.io/apachepulsar/pulsar:3.3.1 name: pulsar ports: - containerPort: 6650 hostPort: 6650 - containerPort: 8080 hostPort: 8080 resources: limits: cpu: '2.0' memory: 1500M requests: cpu: '1.0' memory: 1500M securityContext: runAsGroup: 0 runAsUser: 0 volumeMounts: - mountPath: /pulsar/data name: pulsar-data volumes: - name: pulsar-data persistentVolumeClaim: claimName: pulsar-data - apiVersion: apps/v1 kind: Deployment metadata: labels: app: init-pulsar name: init-pulsar namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: init-pulsar template: metadata: labels: app: init-pulsar spec: containers: - command: - sh - -c - while true; do pulsar-admin --admin-url http://pulsar:8080 tenants create tg ; pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/flow ; pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/request ; pulsar-admin --admin-url http://pulsar:8080 namespaces create tg/response ; pulsar-admin --admin-url http://pulsar:8080 namespaces set-retention --size -1 --time 3m tg/response; sleep 20; done image: docker.io/apachepulsar/pulsar:3.3.1 name: init-pulsar resources: limits: cpu: '1' memory: 400M requests: cpu: '0.1' memory: 400M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: pulsar namespace: trustgraph spec: ports: - name: bookie port: 6650 targetPort: 6650 - name: http port: 8080 targetPort: 8080 selector: app: pulsar type: LoadBalancer - apiVersion: v1 kind: PersistentVolume metadata: name: qdrant spec: accessModes: - ReadWriteOnce capacity: storage: 20G hostPath: path: /data/pv-qdrant persistentVolumeReclaimPolicy: Delete - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: qdrant namespace: trustgraph spec: accessModes: - ReadWriteOnce resources: requests: storage: 20G - apiVersion: apps/v1 kind: Deployment metadata: labels: app: qdrant name: qdrant namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: qdrant template: metadata: labels: app: qdrant spec: containers: - image: docker.io/qdrant/qdrant:v1.11.1 name: qdrant ports: - containerPort: 6333 hostPort: 6333 - containerPort: 6334 hostPort: 6334 resources: limits: cpu: '1.0' memory: 256M requests: cpu: '0.5' memory: 256M securityContext: runAsGroup: 0 runAsUser: 0 volumeMounts: - mountPath: /qdrant/storage name: qdrant volumes: - name: qdrant persistentVolumeClaim: claimName: qdrant - apiVersion: v1 kind: Service metadata: name: qdrant namespace: trustgraph spec: ports: - name: api port: 6333 targetPort: 6333 - name: api2 port: 6334 targetPort: 6334 selector: app: qdrant type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: query-doc-embeddings name: query-doc-embeddings namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: query-doc-embeddings template: metadata: labels: app: query-doc-embeddings spec: containers: - command: - de-query-qdrant - -p - pulsar://pulsar:6650 - -t - http://qdrant:6333 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: query-doc-embeddings resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: query-doc-embeddings namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: query-doc-embeddings type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: query-graph-embeddings name: query-graph-embeddings namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: query-graph-embeddings template: metadata: labels: app: query-graph-embeddings spec: containers: - command: - ge-query-qdrant - -p - pulsar://pulsar:6650 - -t - http://qdrant:6333 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: query-graph-embeddings resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: query-graph-embeddings namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: query-graph-embeddings type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: query-triples name: query-triples namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: query-triples template: metadata: labels: app: query-triples spec: containers: - command: - triples-query-cassandra - -p - pulsar://pulsar:6650 - -g - cassandra image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: query-triples resources: limits: cpu: '0.5' memory: 512M requests: cpu: '0.1' memory: 512M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: query-triples namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: query-triples type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: store-doc-embeddings name: store-doc-embeddings namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: store-doc-embeddings template: metadata: labels: app: store-doc-embeddings spec: containers: - command: - de-write-qdrant - -p - pulsar://pulsar:6650 - -t - http://qdrant:6333 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: store-doc-embeddings resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: store-doc-embeddings namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: store-doc-embeddings type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: store-graph-embeddings name: store-graph-embeddings namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: store-graph-embeddings template: metadata: labels: app: store-graph-embeddings spec: containers: - command: - ge-write-qdrant - -p - pulsar://pulsar:6650 - -t - http://qdrant:6333 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: store-graph-embeddings resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: store-graph-embeddings namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: store-graph-embeddings type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: store-triples name: store-triples namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: store-triples template: metadata: labels: app: store-triples spec: containers: - command: - triples-write-cassandra - -p - pulsar://pulsar:6650 - -g - cassandra image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: store-triples resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: stop-triples namespace: trustgraph spec: ports: - name: metrics port: 8080 targetPort: 8080 selector: app: stop-triples type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: text-completion name: text-completion namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: text-completion template: metadata: labels: app: text-completion spec: containers: - command: - text-completion-claude - -p - pulsar://pulsar:6650 - -k - ${CLAUDE_KEY} - -x - '4096' - -t - '0' image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: text-completion resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: text-completion namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: text-completion type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: text-completion-rag name: text-completion-rag namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: text-completion-rag template: metadata: labels: app: text-completion-rag spec: containers: - command: - text-completion-claude - -p - pulsar://pulsar:6650 - -k - ${CLAUDE_KEY} - -x - '4096' - -t - '0' - -i - non-persistent://tg/request/text-completion-rag - -o - non-persistent://tg/response/text-completion-rag-response image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: text-completion-rag resources: limits: cpu: '0.5' memory: 128M requests: cpu: '0.1' memory: 128M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: text-completion-rag namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: text-completion-rag type: LoadBalancer - apiVersion: apps/v1 kind: Deployment metadata: labels: app: vectorize name: vectorize namespace: trustgraph spec: replicas: 1 selector: matchLabels: app: vectorize template: metadata: labels: app: vectorize spec: containers: - command: - embeddings-vectorize - -p - pulsar://pulsar:6650 image: docker.io/trustgraph/trustgraph-flow:0.10.1 name: vectorize resources: limits: cpu: '1.0' memory: 512M requests: cpu: '0.5' memory: 512M securityContext: runAsGroup: 0 runAsUser: 0 volumes: [] - apiVersion: v1 kind: Service metadata: name: vectorize namespace: trustgraph spec: ports: - name: metrics port: 8000 targetPort: 8000 selector: app: vectorize type: LoadBalancer kind: List