clean up and add routes to paas site
This commit is contained in:
parent
7739f2e604
commit
9f5d1fb723
36 changed files with 222 additions and 10 deletions
|
|
@ -1,14 +1,10 @@
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
resources:
|
resources:
|
||||||
# - vllm-l4.yaml
|
|
||||||
- keda-a100.yaml
|
|
||||||
- pvc.yaml
|
- pvc.yaml
|
||||||
- new-configmap.yaml
|
- new-configmap.yaml
|
||||||
# - deployment.yaml
|
# - deployment.yaml
|
||||||
- service.yaml
|
- service.yaml
|
||||||
- openclaw-secrets.yaml
|
- openclaw-secrets.yaml
|
||||||
- pg-cluster-openclaw.yaml
|
#- pg-cluster-openclaw.yaml
|
||||||
#- a100-vllm.yaml
|
|
||||||
- xai-apikey.yaml
|
- xai-apikey.yaml
|
||||||
- gateway-routes/route.yaml
|
|
||||||
|
|
|
||||||
19
clusters/devops-lab/infra-gatewayapi.yaml
Normal file
19
clusters/devops-lab/infra-gatewayapi.yaml
Normal 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
|
||||||
19
clusters/devops-lab/infra-gpus.yaml
Normal file
19
clusters/devops-lab/infra-gpus.yaml
Normal 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
|
||||||
|
|
@ -6,13 +6,21 @@ metadata:
|
||||||
spec:
|
spec:
|
||||||
gatewayClassName: gke-l7-global-external-managed # Use gke-l7-global-external-http for external, or gke-l7-rilb for internal
|
gatewayClassName: gke-l7-global-external-managed # Use gke-l7-global-external-http for external, or gke-l7-rilb for internal
|
||||||
listeners:
|
listeners:
|
||||||
- name: https
|
- name: n8n-https
|
||||||
protocol: HTTPS
|
protocol: HTTPS
|
||||||
port: 443
|
port: 443
|
||||||
tls:
|
tls:
|
||||||
mode: Terminate
|
mode: Terminate
|
||||||
options:
|
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:
|
allowedRoutes:
|
||||||
namespaces:
|
namespaces:
|
||||||
from: "All"
|
from: "All"
|
||||||
18
infrastructure/gatewayapi/gateway-routes/route.yaml
Normal file
18
infrastructure/gatewayapi/gateway-routes/route.yaml
Normal 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
|
||||||
|
|
||||||
6
infrastructure/gatewayapi/kustomization.yaml
Normal file
6
infrastructure/gatewayapi/kustomization.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- apigateway.yaml
|
||||||
|
- gateway-routes/
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- keda-vllm.yaml
|
||||||
|
|
||||||
6
infrastructure/gpus/base/vllm-servers/kustomization.yaml
Normal file
6
infrastructure/gpus/base/vllm-servers/kustomization.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
#- a100-vllm.yaml
|
||||||
|
- rtx600-vllm.yaml
|
||||||
|
#- vllm-l4.yaml
|
||||||
129
infrastructure/gpus/base/vllm-servers/rtx6000-vllm.yaml
Normal file
129
infrastructure/gpus/base/vllm-servers/rtx6000-vllm.yaml
Normal 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
|
||||||
5
infrastructure/gpus/staging/kustomization.yaml
Normal file
5
infrastructure/gpus/staging/kustomization.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base/vllm-servers/
|
||||||
|
- ../base/keda-gpu-scaling/
|
||||||
|
|
@ -28,7 +28,7 @@ resource "google_container_node_pool" "pro6000_pool" {
|
||||||
}
|
}
|
||||||
|
|
||||||
# SPOT is the modern equivalent of Preemptible
|
# SPOT is the modern equivalent of Preemptible
|
||||||
spot = false
|
spot = true
|
||||||
|
|
||||||
# Specific labels to help the Autoscaler find this pool
|
# Specific labels to help the Autoscaler find this pool
|
||||||
labels = {
|
labels = {
|
||||||
|
|
@ -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)
|
## Tier 2: The Deep Thinker (A100 GPU)
|
||||||
- **Hardware:** 1x NVIDIA A100 (80GB VRAM)
|
- **Hardware:** 1x NVIDIA A100 (80GB VRAM)
|
||||||
- **Model:** `coder3101/Qwen3.5-27B-heretic`
|
- **Model:** `Qwen3.6-27B-heretic`
|
||||||
- **Status:** Scaled to zero by default.
|
- **Status:** Scaled to zero by default.
|
||||||
- **Role:** Activated only for massive context tasks, deep research, and complex multi-file architectural reasoning.
|
- **Role:** Activated only for massive context tasks, deep research, and complex multi-file architectural reasoning.
|
||||||
|
|
||||||
Loading…
Add table
Reference in a new issue