diff --git a/apps/base/customer1/news_bot/analyst-cronjob.yaml b/apps/base/customer1/news_bot/analyst-cronjob.yaml index 87d4d85..fc67cc6 100644 --- a/apps/base/customer1/news_bot/analyst-cronjob.yaml +++ b/apps/base/customer1/news_bot/analyst-cronjob.yaml @@ -9,38 +9,6 @@ spec: spec: template: spec: - volumes: - - name: ollama-storage - persistentVolumeClaim: - claimName: ollama-storage - - - initContainers: - - name: model-puller - image: ollama/ollama:latest - volumeMounts: - - name: ollama-storage - mountPath: /root/.ollama - command: ["/bin/sh", "-c"] - args: ["ollama serve & sleep 5 && ollama pull mistral-small"] - - - - name: ollama-sidecar - image: ollama/ollama:latest - restartPolicy: Always - env: - - name: OLLAMA_DEBUG - value: "2" - - name: OLLAMA_LOG_LEVEL - value: "DEBUG" - ports: - - containerPort: 11434 - volumeMounts: - - name: ollama-storage - mountPath: /root/.ollama - resources: - limits: - nvidia.com/gpu: 1 containers: - name: analyst image: siriussec/summarizerlocal:3.5 @@ -57,4 +25,3 @@ spec: restartPolicy: OnFailure - diff --git a/apps/base/customer1/news_bot/configmap.yaml b/apps/base/customer1/news_bot/configmap.yaml index cc8673b..6485cdc 100644 --- a/apps/base/customer1/news_bot/configmap.yaml +++ b/apps/base/customer1/news_bot/configmap.yaml @@ -8,8 +8,9 @@ data: DB_NAME: "news_app_db" DB_USER: "news_app" DB_PORT: "5432" - LLM_URL: "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent" - MODEL_NAME: "" + LLM_BASE_URL: "http://rtx6000-brain-service.customer1.svc.cluster.local:8000/v1" + MODEL_NAME: "edp1096/Huihui-Qwen3.6-27B-abliterated-FP8" + LLM_API_KEY: "sk-dummy" SUMMARY_PROMPT: | You are an expert news analyst working for DARPA. Your task is to deliver thorough, insightful analysis of the provided news articles. diff --git a/apps/base/customer1/news_bot/deepseek-configmap.yaml b/apps/base/customer1/news_bot/deepseek-configmap.yaml index 2f28a1e..c3d45c7 100644 --- a/apps/base/customer1/news_bot/deepseek-configmap.yaml +++ b/apps/base/customer1/news_bot/deepseek-configmap.yaml @@ -8,8 +8,9 @@ data: DB_NAME: "news_app_db" DB_USER: "news_app" DB_PORT: "5432" - LLM_BASE_URL: "http://a100-brain-vllm:8000/v1" - MODEL_NAME: "deepseek-r1:70b" + LLM_BASE_URL: "http://rtx6000-brain-service.customer1.svc.cluster.local:8000/v1" + MODEL_NAME: "edp1096/Huihui-Qwen3.6-27B-abliterated-FP8" + LLM_API_KEY: "sk-dummy" MAP_PROMPT: | @@ -21,8 +22,7 @@ data: Translate every non-English article into flawless, natural English. Compress the batch into dense, structured, machine-readable summaries that preserve every tradable signal while slashing token count. - # REASONING PROTOCOL (MANDATORY PHASE — FULL ACTIVATION) - + # REASONING PROTOCOL (MANDATORY THINKING PHASE — FULL ACTIVATION) Execute the following 9-step protocol for the whole batch. Show every step internally before producing the final output. 1. PER-ARTICLE DECONSTRUCTION @@ -43,7 +43,6 @@ data: - Ensure every bullet is dense, factual, and zero-fluff. 9. BATCH-LEVEL SUMMARY - Identify the 2-3 strongest overarching signals in the entire batch. - # TASK For EVERY article in the batch, output the exact block below. @@ -78,13 +77,12 @@ data: SUMMARY_PROMPT: | # ROLE - Lead Futures Strategist & Macro-Economist with Elite Reasoning + Technical Integration Engine (DeepSeek-R1 mode). + Lead Futures Strategist & Macro-Economist with Elite Reasoning + Technical Integration Engine. # OBJECTIVE Synthesize the news batch + all supplied price/volume data into a high-conviction "Trading Edge" report. Extract precise, actionable trade setups with exact entry triggers, layered price targets, TP levels, and SL placements. Use the technical data to anchor every level in current market structure. - # REASONING PROTOCOL (MANDATORY PHASE — FULL ACTIVATION) - + # REASONING PROTOCOL (MANDATORY THINKING PHASE — FULL ACTIVATION) Execute the following 10-step protocol in sequence. Show every logical step before outputting the final report. 1. ARTICLE DECONSTRUCTION → Core facts, symbols impacted, time horizon, credibility. @@ -113,7 +111,6 @@ data: - Rank only the top 5-7 highest-edge setups by (conviction × magnitude × R:R). 10. FINAL CONVCTION CHECK - Overall report conviction after critique. - TASK Produce only high-signal, fully actionable futures setups. Every level must be justified by either: @@ -145,7 +142,7 @@ data: CONSTRAINTS - Every price level, TP, and SL must be traceable to the supplied price/volume data or explicit news+history. - - No vague language. No “around here” or “watch this area.” + - No vague language. No "around here" or "watch this area." - Use exact futures notation (/CL, /NG, /ES, /NQ, /GC, /SI, /HG, etc.). - Keep bullets dense but scannable (Telegram-ready). - Zero hype. If evidence is marginal, state confidence honestly. diff --git a/apps/base/customer1/news_bot/deepseek-summarizer.yaml b/apps/base/customer1/news_bot/deepseek-summarizer.yaml index d85d4af..2956802 100644 --- a/apps/base/customer1/news_bot/deepseek-summarizer.yaml +++ b/apps/base/customer1/news_bot/deepseek-summarizer.yaml @@ -10,59 +10,6 @@ spec: spec: template: spec: - nodeSelector: - accelerator: "a100-80gb" - - # 2. ACCEPT THE GPU TAINT - tolerations: - - key: "nvidia.com/gpu-a100-80gb" - operator: "Equal" - value: "present" - effect: "NoSchedule" - # Standard GPU toleration for GKE system - - key: "nvidia.com/gpu" - operator: "Exists" - effect: "NoSchedule" - - volumes: - - name: deepseek-storage - persistentVolumeClaim: - claimName: deepseek-storage - - - initContainers: - - name: model-puller - image: ollama/ollama:latest - volumeMounts: - - name: deepseek-storage - mountPath: /root/.ollama - command: ["/bin/sh", "-c"] - args: ["ollama serve & sleep 5 && ollama pull deepseek-r1:70b"] - - - - name: ollama-sidecar - image: ollama/ollama:latest - restartPolicy: Always - env: - - name: OLLAMA_DEBUG - value: "2" - - name: OLLAMA_LOG_LEVEL - value: "DEBUG" - ports: - - containerPort: 11434 - volumeMounts: - - name: deepseek-storage - mountPath: /root/.ollama - - resources: - limits: - nvidia.com/gpu: "1" - memory: "90Gi" - requests: - nvidia.com/gpu: "1" - memory: "80Gi" - cpu: "4" - containers: - name: analyst image: siriussec/summarizerlocal:3.6 diff --git a/apps/base/customer1/news_bot/gemma-configmap.yaml b/apps/base/customer1/news_bot/gemma-configmap.yaml index dba9fd7..aadf519 100644 --- a/apps/base/customer1/news_bot/gemma-configmap.yaml +++ b/apps/base/customer1/news_bot/gemma-configmap.yaml @@ -8,9 +8,10 @@ data: DB_NAME: "news_app_db" DB_USER: "news_app" DB_PORT: "5432" - LLM_BASE_URL: "http://a100-brain-vllm:8000/v1" - MODEL_NAME: "mistral-small" - + LLM_BASE_URL: "http://rtx6000-brain-service.customer1.svc.cluster.local:8000/v1" + MODEL_NAME: "edp1096/Huihui-Qwen3.6-27B-abliterated-FP8" + LLM_API_KEY: "sk-dummy" + MAP_PROMPT: | You are a state of the art AI News analysis diff --git a/apps/base/customer1/news_bot/kustomization.yaml b/apps/base/customer1/news_bot/kustomization.yaml index 1bab5dd..e68b120 100644 --- a/apps/base/customer1/news_bot/kustomization.yaml +++ b/apps/base/customer1/news_bot/kustomization.yaml @@ -4,18 +4,15 @@ kind: Kustomization namespace: customer1 resources: - configmap.yaml - - gemini-apikey.yaml - scraper-cronjob.yaml - scrapy-urls-configmap.yaml - scrapy-configmap.yaml - telebot-cronjob.yaml - telebot-secret.yaml -# - gemma-configmap.yaml + - gemma-configmap.yaml # - analyst-cronjob.yaml - - ollama-storage.yaml - news-app-password.yaml - news-app-db.yaml - #- deepseek-summarizer.yaml - deepseek-configmap.yaml - - deepseek-storage.yaml - #- new_deepseek.yaml + #- deepseek-summarizer.yaml + #- new_deepseek.yaml diff --git a/apps/base/customer1/news_bot/new_deepseek.yaml b/apps/base/customer1/news_bot/new_deepseek.yaml index 1b12e67..d1e3bf9 100644 --- a/apps/base/customer1/news_bot/new_deepseek.yaml +++ b/apps/base/customer1/news_bot/new_deepseek.yaml @@ -11,59 +11,6 @@ spec: spec: template: spec: - nodeSelector: - accelerator: "a100-80gb" - - # 2. ACCEPT THE GPU TAINT - tolerations: - - key: "nvidia.com/gpu-a100-80gb" - operator: "Equal" - value: "present" - effect: "NoSchedule" - # Standard GPU toleration for GKE system - - key: "nvidia.com/gpu" - operator: "Exists" - effect: "NoSchedule" - - volumes: - - name: deepseek-storage - persistentVolumeClaim: - claimName: deepseek-storage - - - initContainers: - - name: model-puller - image: ollama/ollama:latest - volumeMounts: - - name: deepseek-storage - mountPath: /root/.ollama - command: ["/bin/sh", "-c"] - args: ["ollama serve & sleep 5 && ollama pull deepseek-r1:70b"] - - - - name: ollama-sidecar - image: ollama/ollama:latest - restartPolicy: Always - env: - - name: OLLAMA_DEBUG - value: "2" - - name: OLLAMA_LOG_LEVEL - value: "DEBUG" - ports: - - containerPort: 11434 - volumeMounts: - - name: deepseek-storage - mountPath: /root/.ollama - - resources: - limits: - nvidia.com/gpu: "1" - memory: "90Gi" - requests: - nvidia.com/gpu: "1" - memory: "80Gi" - cpu: "4" - containers: - name: analyst image: siriussec/summarizerlocal:3.8 diff --git a/apps/base/customer1/news_bot/scraper-cronjob.yaml b/apps/base/customer1/news_bot/scraper-cronjob.yaml index 5e0a34c..4931108 100644 --- a/apps/base/customer1/news_bot/scraper-cronjob.yaml +++ b/apps/base/customer1/news_bot/scraper-cronjob.yaml @@ -12,7 +12,7 @@ spec: spec: containers: - name: news-scraper - image: siriussec/newsscraper:0.5.4 + image: ghcr.io/sirius0xdev/newsscraper:latest imagePullPolicy: "Always" resources: diff --git a/apps/base/customer1/news_bot/scrapy-urls-configmap.yaml b/apps/base/customer1/news_bot/scrapy-urls-configmap.yaml index ac7ecc2..dac0370 100644 --- a/apps/base/customer1/news_bot/scrapy-urls-configmap.yaml +++ b/apps/base/customer1/news_bot/scrapy-urls-configmap.yaml @@ -31,26 +31,24 @@ data: https://www.dailynewsegypt.com/feed/ http://www.jordantimes.com/rss https://www.alraimedia.com/rss - https://alghad.com/feed/ + https://alghad.com/feed/ https://nypost.com/feed/ https://gothamist.com/feed/ https://www.cityandstateny.com/rss https://feeds.nytimes.com/nyt/rss/HomePage https://www.thecity.nyc/rss/index.xml https://brooklyneagle.com/feed/ - https://www.reutersagency.com/feed/,Hard - https://newsatme.com/api/v1/rss/ap/world,Global - https://feeds.bbci.co.uk/news/world/rss.xml,International - https://www.aljazeera.com/xml/rss/all.xml,Global - https://rss.dw.com/rdf/rss-en-all,European - https://www.france24.com/en/rss,Global - https://www3.nhk.or.jp/rss/news/shakaitokushu.xml,Asia-Pacific - https://www.cbc.ca/cctoc/rss/topstories.north + https://www.reutersagency.com/feed/ + https://newsatme.com/api/v1/rss/ap/world + https://feeds.bbci.co.uk/news/world/rss.xml + https://rss.dw.com/rdf/rss-en-all + https://www.france24.com/en/rss + https://www3.nhk.or.jp/rss/news/shakaitokushu.xml + https://www.cbc.ca/cctoc/rss/topstories.north https://www.defensenews.com/arc/outboundfeeds/rss/ https://therecord.media/feed https://www.cfr.org/rss/newsletters/daily-news-brief https://warontherocks.com/feed/ - https://www.reutersagency.com/feed/ https://www.thecipherbrief.com/feed https://www.foreignaffairs.com/rss.xml https://geopoliticalfutures.com/feed @@ -66,7 +64,6 @@ data: https://www.securityweek.com/feed/ # --- REGIONAL THREAT LANDSCAPE --- - https://www.aljazeera.com/xml/rss/all.xml https://www.thenationalnews.com/rss/ https://www.scmp.com/rss/91/feed https://www.batimes.com.ar/rss @@ -139,7 +136,6 @@ data: https://www.easternnewmexiconews.com/rss https://www.koat.com/topstories-rss https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml - https://nypost.com/feed/ https://www.thecity.nyc/feed/ https://www.nbcnewyork.com/?rss=y https://www.wral.com/news/rss/48/ @@ -178,8 +174,6 @@ data: https://wyofile.com/feed/ https://www.wyomingnews.com/search/?f=rss&t=article&c=news&l=50&s=start_time&sd=desc https://www.wyodaily.com/rss - https://www.cbs17.com/news/north-carolina-news/feed/ - https://abc11.com/feed/ https://www.wnct.com/news/north-carolina/feed/ https://www.usnews.com/rss/news/north-carolina https://indyweek.com/feed/ @@ -192,9 +186,7 @@ data: https://www.larepublica.it/rss/homepage/rss2.xml https://www.sueddeutsche.de/rss https://www.welt.de/feeds/top-news.rss - https://rss.dw.com/rdf/rss-en-all https://www.rfi.fr/en/rss - https://www.scmp.com/rss/91/feed https://www.bangkokpost.com/rss https://thephnompenhpost.com/rss https://www.thejakartapost.com/rss @@ -257,16 +249,13 @@ data: https://www.investing.com/rss/news_14.rss https://feeds.bbci.co.uk/news/business/rss.xml https://feeds.feedburner.com/TheHackersNews - https://krebsonsecurity.com/feed/ https://www.darkreading.com/rss/all.xml - https://www.bleepingcomputer.com/feed/ https://isc.sans.edu/rssfeed_full.xml https://securelist.com/feed/ https://feeds.feedburner.com/eset/blog https://news.sophos.com/en-us/feed/ https://www.schneier.com/feed/atom/ https://www.securitymagazine.com/rss/topic/2236-cybersecurity-news - https://www.ft.com/rss/home https://www.reuters.com/arc/outboundfeeds/rss/?outputType=xml https://www.investing.com/rss/news_462.rss https://www.investing.com/rss/news_1.rss @@ -286,35 +275,33 @@ data: https://newsquawk.com/blog/feed.rss https://www.coindesk.com/arc/outboundfeeds/rss/ https://ishookfinance.com/feed/ - https://www.scmp.com/rss/91/feed - https://www.scmp.com/rss/92/feed - https://www.scmp.com/rss/93/feed - https://www.scmp.com/rss/94/feed - https://www.scmp.com/rss/317/feed + https://www.scmp.com/rss/92/feed + https://www.scmp.com/rss/93/feed + https://www.scmp.com/rss/94/feed + https://www.scmp.com/rss/317/feed - https://asia.nikkei.com/rss + https://asia.nikkei.com/rss - https://www.caixin.com/rss/index_EN.xml + https://www.caixin.com/rss/index_EN.xml https://www.straitstimes.com/news/asia/rss.xml https://www.straitstimes.com/business/rss.xml - https://www.channelnewsasia.com/rss https://www.reuters.com/arc/outboundfeeds/rss/?outputType=xml§ion=asia https://www.reuters.com/arc/outboundfeeds/rss/?outputType=xml§ion=china https://www.bloomberg.com/feeds/asia.rss - https://www.bloomberg.com/feeds/markets.rss + https://www.bloomberg.com/feeds/markets.rss https://www.ft.com/asia-pacific?format=rss https://www.ft.com/china?format=rss - https://english.kyodonews.net/rss/news.xml + https://english.kyodonews.net/rss/news.xml - https://en.yna.co.kr/RSS/news.xml + https://en.yna.co.kr/RSS/news.xml - https://www.thejakartapost.com/rss/business + https://www.thejakartapost.com/rss/business https://www.nationthailand.com/rss/business https://www.aramco.com/api/v1/com/rss/news?sc_lang=en @@ -327,7 +314,8 @@ data: https://www.rigzone.com/news/europe_russia/production/rss/ https://www.argusmedia.com/en/news-and-insights/latest-market-news/rss https://www.eia.gov/rss/ - https://www.opec.org/opec_web/en/pressreleases.rss (or check https://www.opec.org for updated press releases feed) + https://www.opec.org/opec_web/en/pressreleases.rss + https://www.opec.org https://www.rosneft.com/press/news/rss/ https://feeds.content.dowjones.io/public/rss/RSSMarketsMain https://feeds.content.dowjones.io/public/rss/socialeconomyfeed @@ -343,9 +331,8 @@ data: https://feeds.content.dowjones.io/public/rss/mw_realtimeheadlines http://feeds.marketwatch.com/marketwatch/bulletins https://feeds.content.dowjones.io/public/rss/mw_marketpulse - https://www.nasdaqtrader.com/rss.aspx?feed=currentheadlines&categorylist=51,52,53 - https://www.nasdaqtrader.com/rss.aspx?feed=currentheadlines&categorylist=11,12,13 - https://www.investing.com/rss/stock_Futures.rss + https://www.nasdaqtrader.com/rss.aspx?feed=currentheadlines&categorylist=51 + https://www.nasdaqtrader.com/rss.aspx?feed=currentheadlines&categorylist=11 https://www.investing.com/rss/stock_Options.rss https://www.investing.com/rss/news_11.rss https://www.investing.com/rss/news_25.rss @@ -369,3 +356,4 @@ data: https://www.worldoil.com/rss?feed=topic:offshore https://oilandgas.einnews.com/rss/north-sea-offshore https://www.energyvoice.com/feed/ + diff --git a/apps/base/customer1/siriusdevops-db/pg-cluster-siriusdevops.yaml b/apps/base/customer1/siriusdevops-db/pg-cluster-siriusdevops.yaml index d7c31ca..132048a 100644 --- a/apps/base/customer1/siriusdevops-db/pg-cluster-siriusdevops.yaml +++ b/apps/base/customer1/siriusdevops-db/pg-cluster-siriusdevops.yaml @@ -29,6 +29,12 @@ spec: login: true passwordSecret: name: trading-db-credentials + # News app role (news_bot scraper + analyst + messenger) + - name: news_app + ensure: present + login: true + passwordSecret: + name: news-app-password bootstrap: initdb: diff --git a/apps/base/customer1/trading-platform/configmaps/data-service-config.yaml b/apps/base/customer1/trading-platform/configmaps/data-service-config.yaml index 179284c..d67b1a5 100644 --- a/apps/base/customer1/trading-platform/configmaps/data-service-config.yaml +++ b/apps/base/customer1/trading-platform/configmaps/data-service-config.yaml @@ -9,5 +9,10 @@ data: DB_NAME: "trading_data" REDIS_HOST: "trading-redis.customer1.svc.cluster.local" REDIS_PORT: "6379" + KAFKA_BROKER: "trading-kafka-kafka-bootstrap.customer1.svc.cluster.local:9092" KAFKA_BOOTSTRAP_SERVERS: "trading-kafka-kafka-bootstrap.customer1.svc.cluster.local:9092" + KAFKA_GROUP_ID: "data-service-consumer" + KAFKA_AUTO_OFFSET_RESET: "latest" + HELIUS_RPC_ENDPOINT: "https://mainnet.helius-rpc.com" + JUPITER_API_URL: "https://quote-api.jup.ag/v6" LOG_LEVEL: "info" diff --git a/apps/base/customer1/trading-platform/configmaps/execute-service-config.yaml b/apps/base/customer1/trading-platform/configmaps/execute-service-config.yaml index e62bbcf..6cf0497 100644 --- a/apps/base/customer1/trading-platform/configmaps/execute-service-config.yaml +++ b/apps/base/customer1/trading-platform/configmaps/execute-service-config.yaml @@ -11,3 +11,4 @@ data: EXECUTE_REDIS_PORT: "6379" KAFKA_BOOTSTRAP_SERVERS: "trading-kafka-kafka-bootstrap.customer1.svc.cluster.local:9092" EXECUTE_LOG_LEVEL: "info" + EXECUTE_DB_AUTO_CREATE_TABLES: "true" diff --git a/apps/base/customer1/trading-platform/configmaps/news-service-config.yaml b/apps/base/customer1/trading-platform/configmaps/news-service-config.yaml index 6eb39d8..d051f14 100644 --- a/apps/base/customer1/trading-platform/configmaps/news-service-config.yaml +++ b/apps/base/customer1/trading-platform/configmaps/news-service-config.yaml @@ -7,6 +7,10 @@ data: DB_HOST: "siriusdevops-pgdb-rw.customer1.svc.cluster.local" DB_PORT: "5432" DB_NAME: "trading_data" + NEWS_DB_HOST: "siriusdevops-pgdb-rw.customer1.svc.cluster.local" + NEWS_DB_PORT: "5432" + NEWS_DB_NAME: "news_app_db" + NEWS_DB_USER: "news_app" REDIS_HOST: "trading-redis.customer1.svc.cluster.local" REDIS_PORT: "6379" NEWS_FETCH_INTERVAL: "300" diff --git a/apps/base/customer1/trading-platform/data-service/deployment.yaml b/apps/base/customer1/trading-platform/data-service/deployment.yaml index da5fb0d..37c58d9 100644 --- a/apps/base/customer1/trading-platform/data-service/deployment.yaml +++ b/apps/base/customer1/trading-platform/data-service/deployment.yaml @@ -60,6 +60,16 @@ spec: secretKeyRef: name: trading-db-credentials key: password + - name: HELIUS_API_KEY + valueFrom: + secretKeyRef: + name: solana-api-keys + key: helius-api-key + - name: JUPITER_API_KEY + valueFrom: + secretKeyRef: + name: solana-api-keys + key: jupiter-api-key startupProbe: httpGet: path: /health/ready diff --git a/apps/base/customer1/trading-platform/network-policies/trading-network-policies.yaml b/apps/base/customer1/trading-platform/network-policies/trading-network-policies.yaml index dade3c9..683a1bd 100644 --- a/apps/base/customer1/trading-platform/network-policies/trading-network-policies.yaml +++ b/apps/base/customer1/trading-platform/network-policies/trading-network-policies.yaml @@ -99,11 +99,19 @@ spec: ports: - port: 6379 protocol: TCP - # Allow Kafka access + # Allow Kafka access (Strimzi labels) - to: - podSelector: matchLabels: - app: trading-kafka + strimzi.io/name: trading-kafka + ports: + - port: 9092 + protocol: TCP + # Allow Kafka bootstrap service (fallback) + - to: + - podSelector: + matchLabels: + strimzi.io/cluster: trading-kafka ports: - port: 9092 protocol: TCP @@ -127,3 +135,10 @@ spec: protocol: TCP - port: 8003 protocol: TCP + # Allow external HTTPS/WSS (Helius, Solana, Jupiter, Hyperliquid APIs) + - to: [] + ports: + - port: 443 + protocol: TCP + - port: 80 + protocol: TCP diff --git a/apps/base/customer1/trading-platform/news-service/deployment.yaml b/apps/base/customer1/trading-platform/news-service/deployment.yaml index dda5c98..02d0851 100644 --- a/apps/base/customer1/trading-platform/news-service/deployment.yaml +++ b/apps/base/customer1/trading-platform/news-service/deployment.yaml @@ -58,6 +58,11 @@ spec: secretKeyRef: name: trading-db-credentials key: password + - name: NEWS_DB_PASSWORD + valueFrom: + secretKeyRef: + name: news-app-password + key: password startupProbe: httpGet: path: /health diff --git a/apps/base/customer1/trading-platform/redis-cluster.yaml b/apps/base/customer1/trading-platform/redis-cluster.yaml index fadd4d4..5db0c99 100644 --- a/apps/base/customer1/trading-platform/redis-cluster.yaml +++ b/apps/base/customer1/trading-platform/redis-cluster.yaml @@ -1,4 +1,18 @@ -# Redis single-instance for trading platform caching +# Redis Stack with RediSearch for vector similarity search (HNSW, 768-dim) +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: trading-redis-pvc + namespace: customer1 + labels: + app: trading-redis +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi +--- apiVersion: v1 kind: Service metadata: @@ -20,16 +34,25 @@ kind: ConfigMap metadata: name: trading-redis-config namespace: customer1 + labels: + app: trading-redis data: redis.conf: | - maxmemory 256mb + # Memory - increased for RediSearch vector indexes + maxmemory 1gb maxmemory-policy allkeys-lru + + # Persistence save 900 1 save 300 10 save 60 10000 appendonly yes appendfsync everysec dir /data + + # RediSearch module loaded automatically by redis-stack image + # HNSW index config tuned for 768-dim vectors (e.g. nomic-embed-text) + # HNSWARGB: initial_cap=2048, M=16, EF_CONSTRUCTION=200, EF_RUNTIME=40 --- apiVersion: apps/v1 kind: Deployment @@ -56,20 +79,22 @@ spec: fsGroup: 999 containers: - name: redis - image: redis:7.4-alpine + image: redis/redis-stack:7.4.0-v8 ports: - containerPort: 6379 name: redis + - containerPort: 8001 + name: redis-insight args: - redis-server - /etc/redis/redis.conf resources: requests: - cpu: 100m - memory: 128Mi - limits: - cpu: 500m + cpu: 200m memory: 512Mi + limits: + cpu: "1" + memory: 2Gi securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true @@ -86,18 +111,19 @@ spec: command: - redis-cli - ping - initialDelaySeconds: 5 + initialDelaySeconds: 10 periodSeconds: 5 livenessProbe: exec: command: - redis-cli - ping - initialDelaySeconds: 10 + initialDelaySeconds: 15 periodSeconds: 10 volumes: - name: config configMap: name: trading-redis-config - name: data - emptyDir: {} + persistentVolumeClaim: + claimName: trading-redis-pvc diff --git a/apps/base/customer1/trading-platform/secrets/kustomization.yaml b/apps/base/customer1/trading-platform/secrets/kustomization.yaml index fab102a..4066d7f 100644 --- a/apps/base/customer1/trading-platform/secrets/kustomization.yaml +++ b/apps/base/customer1/trading-platform/secrets/kustomization.yaml @@ -4,3 +4,4 @@ kind: Kustomization resources: - trading-secrets.yaml - execute-service-jwt-secret.yaml + - solana-api-keys.yaml diff --git a/apps/base/customer1/trading-platform/secrets/solana-api-keys.yaml b/apps/base/customer1/trading-platform/secrets/solana-api-keys.yaml new file mode 100644 index 0000000..978b515 --- /dev/null +++ b/apps/base/customer1/trading-platform/secrets/solana-api-keys.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: Secret +metadata: + name: solana-api-keys + namespace: customer1 +type: Opaque +stringData: + helius-api-key: ENC[AES256_GCM,data:wuh0QeBFM7hNYxstHVy9usIKkY1KQein94ukEiPPI+6vtfZ2,iv:Jftq9HpvhjHEAqW/0h01i6qYr7g8baj3BbbGYrOq3hM=,tag:iOvqY6Ghde7Y3ur6FNR8LQ==,type:str] + jupiter-api-key: ENC[AES256_GCM,data:nBQm47bEKb8jY8+IBgTAUK0pTUz8frZ+qw==,iv:OFr/6wuKvuXL7jvr2jdlJpWYaU8vciHn5fiIQ5vNCCI=,tag:kykbpOmUg91Miv3Rf/ufsw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1uuxf066xuuqgvjppxfcmqkwfcufnwp3wcwnl9h20g9k4l8nkw9jsaungf7 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYSVFNbC9kcEExbis3VFE1 + d2NPT3lCL2VQbnRnVlNNc3VTanBMZ3ZTbkVBCnNXUCtwUUlxcW94VGxkZ2ZYOTJQ + YlFHelA1Zzl2U0RtRmtCaTFiWE9VNzQKLS0tIFI3T0g5d0dtWStSOFRobzlTeU1M + bWdRTk9ib2dkMjU2eDZMZzRaTHFSUzQKRnlFkdQudt9iTKzoGvCAgumKSub9Twko + cCc5JQcY4oFOR6huvdppGjsOt8X5jOX/PZrSh1cNikS1XkuD6MijEw== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2026-05-27T05:52:32Z" + mac: ENC[AES256_GCM,data:PSb/+gby8U2JqIQBESGMz7/SKyvWTrc6ej3V5diLweWzsFofqlI0kN//VmYsB5Z+H19cTnnXVicZVXQtbNNv4I7Qgl1TCvuDzcgR37t6jPdv5iIlilCw8cFKw4gUB8c73L7bvHAKp0SI+nL1L6YJi5Wn5f2CTxpFE5RD5HL14pA=,iv:aVjd9KUvcfFYKO11i9jIJUVbllxeul84xjowBej1B3g=,tag:KKRTlWsyzoHs7+dLs/oMdA==,type:str] + pgp: [] + encrypted_regex: ^(data|stringData)$ + version: 3.9.0 diff --git a/apps/base/customer1/trading-platform/secrets/trading-secrets.yaml b/apps/base/customer1/trading-platform/secrets/trading-secrets.yaml index 862656d..09f9348 100644 --- a/apps/base/customer1/trading-platform/secrets/trading-secrets.yaml +++ b/apps/base/customer1/trading-platform/secrets/trading-secrets.yaml @@ -5,23 +5,28 @@ metadata: namespace: customer1 type: Opaque stringData: - #ENC[AES256_GCM,data:X6HnX4CXbHydreDklg2LsCfBN1i1dp7HFifHR4rN2A581dEbYw==,iv:5MocUK+2zYn1qxhayaVnwVR+5FLLdJRKo9uBvW6RiTE=,tag:v13dWH9t/K8Whbs9EXcgnQ==,type:comment] - news-api-key: ENC[AES256_GCM,data:Ren1WNxCGBcaV49M+W5Gl3FjfZJh3o/X,iv:Ly1v+YdGodfeQHLkYIJra+2+qqa06wAcu2RGv6cueRE=,tag:IuWIJB1mzipgmnP5rD2c1A==,type:str] - market-data-api-key: ENC[AES256_GCM,data:2x2vPbOu/T+4albtkeRrktBffX1i06vXQmnn31685g==,iv:LqfpNmK6d9tt2MeaaozI+PVim8KUK8TflEalSxptfjM=,tag:Tan91JSeh5aUhGiExns4PQ==,type:str] - #ENC[AES256_GCM,data:jVRQi+JQNlDUQ+bCe189YrOcsXjYYTGF,iv:SnCbB2w1jnPnXqWGPEivK/b9bWnYA6qL1Xkx6n8XzQ8=,tag:SYJbW0Aea/evPgvGNCqw9Q==,type:comment] - service-auth-token: ENC[AES256_GCM,data:Xrqq82eI5obC86s+FJpi4DbX9+hDdTlYdmfL6DlW,iv:lDhfIuT+On7W6Xk36FKw7fE7zBheRPaMZwQBn7DF5qc=,tag:CdE0OWzQ9OLkSsDL8gq9gA==,type:str] + #ENC[AES256_GCM,data:dyXLfea8iq2yHlZep1eNdTLJ32FJ1njYaZFgwHTGSSpGpBu+mg==,iv:Ag6MtzvQH71KIBO0EXYDXYIlzi9Tkrzbv5yAnGeTWzI=,tag:5CbRxFAJhz3ygqHkYfQ3aA==,type:comment] + news-api-key: ENC[AES256_GCM,data:oPEYLf8a8qGHcOqpJf4nNEJ0thnC92je,iv:L5h71TK3+bCzEfG+mWJWtAJElUAYax8j1wufPRJwz98=,tag:jhcLILef6NI0NaHYnVIDcA==,type:str] + market-data-api-key: ENC[AES256_GCM,data:dIiQPEBaBVNrxSu15WL3+eq56NKmhjxN9VfIBeXyqw==,iv:QTzb0Ivyg1pZxp5lEW+Qf1+If8M8Qof2BfSwZq/O8AU=,tag:K5Do7SXs0gpaJPqakntoSg==,type:str] + #ENC[AES256_GCM,data:yimW2HNmOjOVEBNcfLZNl+TDx+mmTd7c,iv:wb5QUD9X3+m/phr4x/TGqnTG02Fl1jqJuPdp0YW9Jcw=,tag:fXpKSc0X3ZyMBGwEvUBnMw==,type:comment] + service-auth-token: ENC[AES256_GCM,data:JunmMQGPSWD0PRVN4PbGcCKaTTeZfl5US3LsS12L,iv:+qJjWstEiqarjVArzIcu1fUpp8ySXMf84pHepyK4XWI=,tag:hb+CSxl8j4zwxFrqn1TlPQ==,type:str] sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] age: - recipient: age1uuxf066xuuqgvjppxfcmqkwfcufnwp3wcwnl9h20g9k4l8nkw9jsaungf7 enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOWHFUcm9aNFlzRXk3bmtY - b3hMRC85a2x3R1lIVmZoTk4xT1JtMDF0MEZFCmhjRGdUYWJpVnFkMTZpTVg4U01Z - c0trekthejd6QUk3REZ2Rms0Y2hyOFUKLS0tIExseng1M0RNU3E2d1NXNlJQVGdh - andDeDdxM2pjU05GL0pKdXIwUzc2M00KBfnTHcj5QMYGlQLRVO34sbtPsjRz37ZJ - LO1q7fngycQGm0oNgZAZnxQNMArlNIUduH3Y8M365XushwPc9BHuQw== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2Mmt5alJSa1Z4dWF3anpU + RktDZTdQcExCeTV4THcwWUFDbmlKaWxqTGp3CmNIQVlmMENNem9leHJZdGJNbys0 + RG1aR0w4aExtYStXU0YwRmVoRDhib0UKLS0tIHBGK0phRXpGNXF4OVM5TTlxcnRE + VXY5R3M4aVp2RnRqS25abThBdWJxZUUKRh/BANhV9to++utXiIVnh7KavNfwwhTs + rSyLXlRVHAUMghQTPB91RAk7QmozpRUWLlf09TZVRtdyNTwlCzSwYQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-05-22T02:10:53Z" - mac: ENC[AES256_GCM,data:xpMKA/p5pEtYSjOZFwznuKO2eUE+xXNzV8Yggxt0IgzLiNSiGuHvFRaLihrgdT6/HVVEYxAbYjtnDHBY0+mVulk+p9TRUO7Z3CtlzEKfW23lpkExeN0CblWwEIh+xL86ip++BAGsI7n2LSgjVUgqInmYgi3oYAyv9wwc0+ajZzo=,iv:noqbjzz0nEUPQ/3p0rK3dHyKthz4Hm3w0GLRlya3zag=,tag:rFvLcn7QBApQs+qPrjRvKw==,type:str] + lastmodified: "2026-05-27T04:35:21Z" + mac: ENC[AES256_GCM,data:ClIlomZn/x9hILztsNtlxKb4sIYHDTL0gXJ6d7Yed7BUrIy5sUZCzaE4cB40sq3hxS2p3XCNQ4wr2hzEl549r4zUn0gC69U/lJcSQkIzI6qD4DlksCweFLmsPbU9XiActkmw9MKFRN6GVufCepCXnWqZOKGAps8br3wWConqv8w=,iv:KpldaQ4K6LMmLr1WpZci96VzYACMZwuKopomHXr7EsM=,tag:BL2Fl0le7axNYwa/F5odJw==,type:str] + pgp: [] encrypted_regex: ^(data|stringData)$ - version: 3.11.0 + version: 3.9.0 diff --git a/infrastructure/gpus/staging/kustomization.yaml b/infrastructure/gpus/staging/kustomization.yaml index 77459c3..bea67ef 100644 --- a/infrastructure/gpus/staging/kustomization.yaml +++ b/infrastructure/gpus/staging/kustomization.yaml @@ -1,5 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - # - ../base/vllm-servers/ + - ../base/vllm-servers/ # - ../base/keda-gpu-scaling/