Commit graph

621 commits

Author SHA1 Message Date
sirius0xdev
d59ea9e6f0
fix(news_bot): switch analyst to ghcr.io + activate CronJob
- new_deepseek.yaml: switch image to ghcr.io/sirius0xdev/news-analyst:latest
- kustomization.yaml: activate new_deepseek.yaml (uncomment)
- Replaces Docker Hub siriussec/summarizerlocal:3.8 with GHCR-built image

Co-authored-by: sirius0xdev <sirius0xdev@users.noreply.github.com>
2026-05-27 23:46:09 -04:00
sirius0xdev
8b5aa4f72d
Update kustomization.yaml 2026-05-27 23:12:01 -04:00
sirius0xdev
93ce67a108
fix(news_bot): clean URLs + switch scraper to GHCR registry
- De-duplicate URLs in scrapy-urls configmap
- Switch CronJob image from siriussec/newsscraper:0.5.4 to ghcr.io/sirius0xdev/newsscraper:latest
- imagePullPolicy already set to Always

Co-authored-by: Sirius Devops <sirius@siriusdevops.com>
2026-05-27 23:07:57 -04:00
sirius0xdev
75c2aa599e
fix(cnpg): add news_app managed role for news_bot scraper
CNPG cluster was missing the news_app role — scraper cronjob
was failing with 'connection to server at port 5432 failed'
because the role had no login/password configured in managed roles.

Adds news_app to managed roles, pointing to existing
news-app-password secret.

Co-authored-by: Hermes DevOps <hermes@devops.local>
2026-05-27 21:06:28 -04:00
sirius0xdev
007900e01b
fix(news-service): mount news-app-password secret for scraper DB
Adds NEWS_DB_PASSWORD env var from existing news-app-password secret
so the secondary DB connection to news_app_db can authenticate.

Co-authored-by: Hermes DevOps <hermes@devops.local>
2026-05-27 20:41:01 -04:00
sirius0xdev
ba7d6de7c8
feat(news-service): add scraper DB config to K8s configmap
Adds NEWS_DB_HOST, NEWS_DB_PORT, NEWS_DB_NAME, NEWS_DB_USER to news-service ConfigMap for secondary DB connection to news_app_db.
2026-05-27 20:27:07 -04:00
Hermes Agent
a20debf02e config(dashboard): remove explicit ports from service URLs
K8s Services all expose on port 80 (mapping to container ports internally).
URLs should be bare — K8s DNS resolves to port 80 by default.
2026-05-27 20:35:47 +00:00
Hermes Agent
77a5a99c5f config(dashboard): add ports to service URLs
Service-to-service calls need explicit ports. Without them, dashboard
proxy was hitting port 80 which doesn't exist on backend services.
2026-05-27 20:20:38 +00:00
Hermes Agent
89bd139ba9 fix(netpol): allow external egress (ports 80/443) for API websockets
Data service needs to reach Helius WSS, Solana RPC, Jupiter API,
Hyperliquid — all external. Network policy had no egress rule for
external traffic, so all API/websocket connections were blocked.
2026-05-27 19:34:04 +00:00
Hermes Agent
f9623b9ca2 config(execute-service): enable auto-create tables in production
Sets EXECUTE_DB_AUTO_CREATE_TABLES=true so the service creates
its own tables on startup instead of relying on non-existent
alembic migrations.
2026-05-27 19:20:31 +00:00
Hermes Agent
bb170365cc fix: network policy Kafka selector app -> strimzi labels
Data-service pods use NetworkPolicy egress selector app: trading-kafka
but Strimzi Kafka pods are labeled strimzi.io/name=trading-kafka.
This silently blocked all Kafka traffic causing NoBrokersAvailable.
2026-05-27 14:19:26 +00:00
Hermes Agent
6447f92157 fix: redis maxmemory unit 1gi -> 1gb for Redis 7.4.7 compat 2026-05-27 13:59:06 +00:00
Hermes Agent
18b728c95e fix: redis-stack image tag 7.4.0-v8 (7.4.2-v16 not found) 2026-05-27 13:37:47 +00:00
sirius0xdev
f8fa436b8b
Merge RediSearch PR
Redis Stack with RediSearch for HNSW vector search. Memory bumped to 1Gi.
2026-05-27 08:17:36 -04:00
Hermes DevOps
9eecad47bb fix: point data-service to solana-api-keys secret + set Helius key
- Fix deployment env refs: trading-platform-secrets -> solana-api-keys
- Replace placeholder helius-api-key with actual value
2026-05-27 05:52:43 +00:00
sirius0xdev
380325c981
Merge pull request #179 from sirius0xdev/feat/merge-solana-ingester-into-data-service
Merge solana-ingester into data-service
2026-05-27 01:34:26 -04:00
sirius0xdev
6b2472f376
Merge pull request #177 from sirius0xdev/migrate-news-bot-to-rtx6000-vllm
Migrate news bot to rtx6000-brain vLLM endpoint
2026-05-27 01:31:02 -04:00
Hermes Agent
26059b01e6 Merge solana-ingester into data-service, remove standalone deployment
- Remove solana-ingester deployment (was using a nonexistent CLI entrypoint)
- Merge all ingestion into data-service via env vars + shared image
- Add HELIUS_API_KEY, JUPITER_API_KEY, KAFKA_BROKER to data-service configmap
- Add solana secret refs to data-service deployment
- Remove solana-ingester-config configmap
2026-05-27 05:27:55 +00:00
c7731aeec0 fix(secrets): split Solana API keys into separate SOPS file
- Remove helius/jupiter placeholders from trading-secrets.yaml
- Create new solana-api-keys.yaml with helius-api-key and jupiter-api-key
- Update kustomization.yaml to include solana-api-keys.yaml

Convention: each secret group gets its own SOPS-encrypted file
instead of adding new keys to an already encrypted file.
2026-05-27 04:35:47 +00:00
Hermes Agent
e8f33a7bd0 Migrate news bot to rtx6000-brain vLLM endpoint
- Replace Gemini API and A100 vLLM references with central rtx6000-brain vLLM
  endpoint (http://rtx6000-brain-service.customer1.svc.cluster.local:8000/v1)
- Update all ConfigMaps to use model edp1096/Huihui-Qwen3.6-27B-abliterated-FP8
- Add LLM_API_KEY: sk-dummy to all ConfigMaps
- Remove ollama sidecars, initContainers, PVC volumes from all analyst CronJobs
- Remove GPU nodeSelector, tolerations, and GPU resource requests from CronJobs
- Clean up kustomization.yaml: remove ollama-storage.yaml, deepseek-storage.yaml,
  gemini-apikey.yaml references
- Activate deepseek-summarizer.yaml in kustomization, keep others commented
2026-05-27 04:25:41 +00:00
Hermes DevOps
e24e82107d feat: add solana-ingester deployment for real-time market data
- Create solana-ingester Deployment + Service in trading-platform/
  (uses same data-service image, runs WebSocket ingester mode)
- Add solana-ingester ConfigMap (HELIUS_RPC_ENDPOINT, JUPITER_API_URL,
  KAFKA_BROKER, KAFKA_TOPIC)
- Add helius-api-key and jupiter-api-key placeholders to trading-secrets.yaml
  (TODO: replace with real values and re-encrypt with SOPS)
- Update kustomization to include new resources
2026-05-27 04:05:41 +00:00
Hermes DevOps
c587a707a6 feat(redis): add persistent volume for trading-redis
Replace emptyDir with 10Gi PVC (ReadWriteOnce) so hot cache
survives pod restarts.
2026-05-27 04:05:41 +00:00
sirius0xdev
e78674a964 Fix data-service port mismatch: container runs on 8000, not 8001 2026-05-26 10:54:23 -09:00
sirius0xdev
c5e2ef16d2 Move Redis cluster to trading-platform and wire into kustomization 2026-05-26 09:52:16 -09:00
Hermes Agent
308d54cc0b fix(kafka): add fsGroup to pod securityContext for PVC write permissions
Kraft mode fails with AccessDeniedException on meta.properties
because PVC mounts with root ownership. Adding fsGroup: 1000
ensures the volume group matches the Kafka container user.
2026-05-26 03:33:43 +00:00
Hermes Agent
207733f4df bump Kafka version from 3.8.0 to 4.1.0 (supported by Strimzi 1.0.0) 2026-05-26 03:01:40 +00:00
Hermes Agent
f8b97537d7 fix trading-kafka: remove invalid template.pod.brokers, add controller role to KafkaNodePool
- Removed template.pod.brokers (not valid in Strimzi 1.0.0 Kafka schema)
- Moved broker resources to KafkaNodePool.spec.resources
- Added controller role to KafkaNodePool (KRaft requires both controller+broker)
2026-05-26 02:47:43 +00:00
Hermes Agent
c477e80790 bump trading-kafka to Strimzi 1.0.0 v1 API (KafkaNodePool) 2026-05-26 02:11:25 +00:00
Hermes Agent
8865b76154 Revert "bump trading-kafka API from v1beta2 to v1 for Strimzi 1.0.0"
This reverts commit cbdea178cf.
2026-05-26 02:05:15 +00:00
Hermes Agent
cbdea178cf bump trading-kafka API from v1beta2 to v1 for Strimzi 1.0.0 2026-05-26 02:02:35 +00:00
Hermes Agent
7e9b563257 vendor Strimzi 1.0.0 YAML locally instead of remote URL
strimzi.io/install/1.0.0 is not a valid git repo or kustomize remote URL.
Download the full install bundle (strimzi-1.0.0.yaml) and reference it
locally in the strimzi kustomization.
2026-05-26 01:53:06 +00:00
Hermes Agent
d920cc7c63 add customer1-strimzi Flux Kustomization + force:true on customer1
Split Strimzi operator deployment into its own Flux Kustomization so
CRDs are applied before the Kafka CR in customer1.

Chain: infrastructure-controllers -> customer1-strimzi -> customer1

customer1 now has force: true to skip dry-run validation when CRDs are
recently applied but not yet visible to the APIServer cache.
2026-05-26 01:32:57 +00:00
Hermes Agent
47aae85ed3 split Strimzi operator into separate kustomization for Flux dependsOn
Flux dry-run fails when CRDs are in the same kustomization as resources
that reference them - CRDs need to exist before validation.

Two kustomizations now:
  strimzi/        - Strimzi 1.0.0 CRDs + operator
  siriusdevops-db - DBs, Kafka CR (depends on strimzi CRDs)

Wire them in Flux:
  Kustomization 'siriusdevops-strimzi' -> path: strimzi/
  Kustomization 'siriusdevops-db'      -> path: siriusdevops-db/
    dependsOn: [{name: siriusdevops-strimzi}]
2026-05-26 01:32:57 +00:00
Hermes Agent
94f6b04c28 add Strimzi operator as kustomize remote URL (GitOps)
Reference Strimzi 1.0.0 install bundle directly from kustomization.
No separate install step needed — kubectl apply -k handles CRDs + operator
in one shot before the Kafka CR.

Pinned to 1.0.0 for reproducible deployments.
2026-05-26 01:32:57 +00:00
Hermes Agent
25850b5b04 replace manual Kafka StatefulSet with Strimzi operator CR
Remove hand-rolled KRaft StatefulSet that kept failing (mount conflicts,
advertised.listeners issues). Replace with a single Strimzi Kafka CR.

Strimzi handles:
- KRaft setup, storage, scaling
- Broker config & advertised listeners (auto-resolved)
- Topic Operator for proper topic lifecycle
- Bootstrap service at trading-kafka-kafka-bootstrap.customer1.svc.cluster.local:9092

Requires Strimzi 1.0.0 operator installed in the cluster first:
  kubectl apply -f https://strimzi.io/install/latest?namespace=customer1 -n customer1
2026-05-26 01:32:57 +00:00
Hermes Agent
68033faf4e fix Kafka config mount: use /opt/kafka/config/ path instead of /etc/kafka
/etc/kafka doesn't exist in the apache/kafka image - subPath could not
create the parent directory. Switch to /opt/kafka/config/ which exists
in the image, avoiding both the directory conflict and the missing path.
2026-05-26 00:16:42 +00:00
Hermes Agent
5ab0098e34 fix Kafka config mount: use subPath to avoid /etc/kafka/secrets conflict
Container fails with 'read-only file system' when K8s tries to mount
a secret into /etc/kafka/secrets alongside the ConfigMap at /etc/kafka.
Switch to subPath mount of server.properties directly.
2026-05-25 23:53:55 +00:00
Hermes Agent
32a855c457 fix configmap Kafka env var keys to match app code
App code reads KAFKA_BOOTSTRAP_SERVERS (all services), but configmaps
had KAFKA_BROKER (data) and EXECUTE_KAFKA_BOOTSTRAP_SERVERS (execute).
Services silently fell through to hardcoded defaults — Kafka unreachable.

- data-service: KAFKA_BROKER -> KAFKA_BOOTSTRAP_SERVERS
- execute-service: EXECUTE_KAFKA_BOOTSTRAP_SERVERS -> KAFKA_BOOTSTRAP_SERVERS
2026-05-25 23:40:15 +00:00
Hermes Agent
691d7c68e7 move Kafka broker from hermes-db to siriusdevops-db kustomization
Trading services depend on Kafka (trading-kafka.customer1.svc.cluster.local:9092)
but it was never deployed — lived under hermes-db kustomization which isn't
applied. Move to siriusdevops-db where trading infra belongs.

Also remove stale redis-cluster.yaml reference from hermes-db (file missing).
2026-05-25 23:36:14 +00:00
Hermes Agent
9cbf21173f fix(data-service): probe /health/ready instead of /health 2026-05-25 21:17:10 +00:00
sirius0xdev
e28d6ccf10 fix(trading): update network policy egress to siriusdevops-pgdb
Migrate trading platform DB egress rule from hermes-pgdb to
siriusdevops-pgdb to complete the trading DB migration. The
configmaps already point to siriusdevops-pgdb-rw but the
network policy still allowed egress to the old cluster.
2026-05-25 20:08:07 +00:00
sirius0xdev
c357b69743
Merge pull request #156 from sirius0xdev/fix/pgvector-image-and-cluster
chore(news-bot): switch DB to siriusdevops-pgdb (main apps cluster)
2026-05-25 14:56:56 -04:00
Hermes Agent
22498cd97b chore(news-bot): switch to siriusdevops-pgdb as main apps cluster
- news-app-db.yaml: point Database CR to siriusdevops-pgdb
- All ConfigMaps: DB_HOST=siriusdevops-pgdb-rw, LLM_BASE_URL for vLLM
- hermes-pgdb now dedicated to pgvector/RAG for agents only
- Aligns with CNPG extension pattern and active kanban (devops startupProbes, backend exec-service)

PR to master per repo rules.
2026-05-25 18:56:08 +00:00
sirius0xdev
67410a8ac0
Merge pull request #155 from sirius0xdev/fix/pgvector-image-and-cluster
feat: add pgvector image build and update cluster imageName
2026-05-25 14:03:31 -04:00
sirius0xdev
6ca9d9532f
Merge pull request #154 from sirius0xdev/feat/migrate-trading-to-siriusdevops-pgdb
feat: migrate all trading-platform services from hermes-pgdb to siriusdevops-pgdb
2026-05-25 14:03:20 -04:00
Hermes Agent
2f15684895 feat: add pgvector image build workflow and update cluster imageName
- Add build-pgvector-image.yml GH Actions workflow for GCR
- Set imageName to gcr.io/devops-lab-cluster/postgres-pgvector:15.2-0.8.0
- Image change only (CNPG rule: no config changes in same update)
2026-05-25 08:15:12 +00:00
Hermes Agent
3f96800222 feat: migrate all trading-platform services from hermes-pgdb to siriusdevops-pgdb
- Add 'trading' managed role to siriusdevops-pgdb cluster
- Move trading-db-credentials from hermes-db to siriusdevops-db
- Create trading-data-db.yaml (Database kind) pointing to siriusdevops-pgdb
- Update DB_HOST in all 4 trading-platform configmaps to siriusdevops-pgdb-rw
- Remove trading-data-db.yaml and trading-db-credentials.yaml from hermes-db
- Update siriusdevops-db kustomization.yaml to include new resources
2026-05-25 07:55:15 +00:00
Hermes DevOps
7e8fd296c4 fix(platform): allow tailscale namespace in NetworkPolicy for proxy access
Tailscale proxy pods run in the tailscale namespace, so the existing
customer1-only namespaceSelector blocked proxy → dashboard traffic.
2026-05-25 07:15:59 +00:00
sirius0xdev
10d9295eb2
Merge pull request #152 from sirius0xdev/fix/trading-dashboard-network-policy
fix(platform): add port 3000 to trading-platform NetworkPolicy
2026-05-25 03:07:18 -04:00
Hermes DevOps
113324abc1 fix(platform): add port 3000 to trading-platform NetworkPolicy ingress rules
Dashboard listens on port 3000 but NetworkPolicy only allowed 8000-8003.
This blocked all traffic including Tailscale proxy connections to trade:3000.
2026-05-25 07:05:45 +00:00