clean up and add routes to paas site

This commit is contained in:
sirius0xdev 2026-04-28 03:31:52 +00:00
parent 7739f2e604
commit 9f5d1fb723
36 changed files with 222 additions and 10 deletions

View file

@ -1,14 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
# - vllm-l4.yaml
- keda-a100.yaml
- pvc.yaml
- new-configmap.yaml
# - deployment.yaml
- service.yaml
- openclaw-secrets.yaml
- pg-cluster-openclaw.yaml
#- a100-vllm.yaml
#- pg-cluster-openclaw.yaml
- xai-apikey.yaml
- gateway-routes/route.yaml

View file

@ -39,4 +39,4 @@ spec:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
type: ClusterIP

View file

@ -0,0 +1,19 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: infrastructure-gatewayapi
namespace: flux-system
spec:
interval: 1m0s
retryInterval: 1m
timeout: 5m
sourceRef:
kind: GitRepository
name: flux-system
path: ./infrastructure/gatewayapi
prune: true
decryption:
provider: sops
secretRef:
name: sops-age

View file

@ -0,0 +1,19 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: infrastructure-gpus
namespace: flux-system
spec:
interval: 1m0s
retryInterval: 1m
timeout: 5m
sourceRef:
kind: GitRepository
name: flux-system
path: ./infrastructure/gpus/staging
prune: true
decryption:
provider: sops
secretRef:
name: sops-age

View file

@ -6,13 +6,21 @@ metadata:
spec:
gatewayClassName: gke-l7-global-external-managed # Use gke-l7-global-external-http for external, or gke-l7-rilb for internal
listeners:
- name: https
- name: n8n-https
protocol: HTTPS
port: 443
tls:
mode: Terminate
options:
networking.gke.io/pre-shared-certs: n8n-sirius-sec-com
networking.gke.io/pre-shared-certs: n8n-sirius-sec-com
- name: siriusdevops-https
hostname: siriusdevops.com
protocol: HTTPS
port: 443
tls:
mode: Terminate
options:
networking.gke.io/pre-shared-certs: siriusdevops-cert
allowedRoutes:
namespaces:
from: "All"

View file

@ -0,0 +1,18 @@
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: paas-landing
namespace: customer1
spec:
parentRefs:
- name: external-http-gateway
kind: Gateway
rules:
- matches:
- path:
type: PathPrefix
value: /paas
backendRefs:
- name: paas-landing-svc
port: 80

View file

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- apigateway.yaml
- gateway-routes/

View file

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- keda-vllm.yaml

View file

@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
#- a100-vllm.yaml
- rtx600-vllm.yaml
#- vllm-l4.yaml

View file

@ -0,0 +1,129 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: openclaw-brain-vllm
namespace: customer1
labels:
app: openclaw-brain
spec:
replicas: 1
selector:
matchLabels:
app: openclaw-brain
template:
metadata:
labels:
app: openclaw-brain
spec:
nodeSelector:
cloud.google.com/gke-accelerator: "nvidia-a100-80gb"
tolerations:
- key: "nvidia.com/gpu-nvidia-rtx-pro-6000"
operator: "Equal"
value: "present"
effect: "NoSchedule"
containers:
- name: vllm-brain
image: vllm/vllm-openai:latest
command: ["python3", "-m", "vllm.entrypoints.openai.api_server"]
env:
- name: HF_TOKEN
value: ""
- name: TOKENIZER_MODE
value: "hf"
args:
- --model=Youssofal/Qwen3.6-27B-Abliterated-Heretic-Uncensored-BF16
- --host=0.0.0.0
- --port=8000
- --tensor-parallel-size=1
- --tokenizer-mode=hf
- --gpu-memory-utilization=0.95
- --kv-cache-dtype=fp8
- --max-model-len=131072
- --enable-auto-tool-choice
- --enable-chunked-prefill
- --max-num-batched-tokens=8192
- --max-num-seqs=4
- --trust-remote-code
- --dtype=auto
- --enable-prefix-caching
- --tool-call-parser=qwen3_xml
- --reasoning-parser=qwen3
- --disable-custom-all-reduce
ports:
- containerPort: 8000
resources:
limits:
nvidia.com/gpu: 1
memory: "100Gi"
cpu: "16"
requests:
nvidia.com/gpu: 1
memory: "80Gi"
cpu: "8"
startupProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 10
failureThreshold: 60
successThreshold: 1
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 180
periodSeconds: 15
failureThreshold: 5
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
httpGet:
path: /v1/models
port: 8000
initialDelaySeconds: 120
periodSeconds: 10
timeoutSeconds: 15
failureThreshold: 8
successThreshold: 1
volumeMounts:
- name: model-cache
mountPath: /root/.cache/huggingface
volumes:
- name: model-cache
persistentVolumeClaim:
claimName: vllm-model-qwen3.6-27b-uncensored
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vllm-model-qwen3.6-27b-uncensored
namespace: customer1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
---
apiVersion: v1
kind: Service
metadata:
name: openclaw-brain-service
namespace: customer1
spec:
selector:
app: openclaw-brain
ports:
- protocol: TCP
port: 8000
targetPort: 8000
type: ClusterIP

View file

@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base/vllm-servers/
- ../base/keda-gpu-scaling/

View file

@ -28,7 +28,7 @@ resource "google_container_node_pool" "pro6000_pool" {
}
# SPOT is the modern equivalent of Preemptible
spot = false
spot = true
# Specific labels to help the Autoscaler find this pool
labels = {

View file

@ -13,7 +13,7 @@ Instead of running an expensive A100 GPU 24/7 for all requests, we split the cog
## Tier 2: The Deep Thinker (A100 GPU)
- **Hardware:** 1x NVIDIA A100 (80GB VRAM)
- **Model:** `coder3101/Qwen3.5-27B-heretic`
- **Model:** `Qwen3.6-27B-heretic`
- **Status:** Scaled to zero by default.
- **Role:** Activated only for massive context tasks, deep research, and complex multi-file architectural reasoning.