Files
foxhunt/infra/k8s/gitlab/runner-values.yaml
jgrusewski 0f4631de78 fix(ci): mount training-data PVC and support .dbn.zst in data loader
- Mount training-data-pvc at /data/training in build pods via runner config
- Update real_data_loader to search per-symbol subdirectories (Databento layout)
- Support .dbn.zst (zstd-compressed) files alongside raw .dbn
- Add FOXHUNT_DATA_DIR env var override for CI PVC path
- Extract decode_ohlcv_bars helper (generic over reader type)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 20:02:55 +01:00

75 lines
2.5 KiB
YAML

# GitLab Runner — Kubernetes executor targeting gpu-training pool
# Runner manager pod lives on gitlab node pool
# Build pods spawn on gpu-training pool (H100, scale-to-zero — fast builds + GPU tests)
gitlabUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181
# runnerToken set via --set at install time
replicas: 1
nodeSelector:
k8s.scaleway.com/pool-name: gitlab
tolerations:
- key: gitlab
operator: Equal
value: "true"
effect: NoSchedule
runners:
# Override clone URL to internal service (pods can't reach Tailscale IPs)
cloneUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181
config: |
[[runners]]
clone_url = "http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181"
[runners.kubernetes]
namespace = "foxhunt"
image = "rust:1.89-slim"
privileged = false
# H100 scale-to-zero needs ~3-5 min to provision; default 180s times out
poll_timeout = 600
# Resource limits for build pods (H100 node: 24 vCPU, 240GB)
cpu_request = "4000m"
cpu_limit = "16000m"
memory_request = "16Gi"
memory_limit = "64Gi"
helper_cpu_request = "100m"
helper_cpu_limit = "500m"
helper_memory_request = "128Mi"
helper_memory_limit = "512Mi"
image_pull_secrets = ["scw-registry", "gitlab-registry"]
# Use nvidia RuntimeClass — injects GPU drivers + /dev/nvidia* via nvidia-container-runtime
runtime_class_name = "nvidia"
# Sub-tables must come AFTER all scalar values (TOML rule)
[runners.kubernetes.node_selector]
"k8s.scaleway.com/pool-name" = "gpu-training"
[runners.kubernetes.node_tolerations]
"nvidia.com/gpu" = "NoSchedule"
[runners.kubernetes.pod_labels]
"app.kubernetes.io/part-of" = "foxhunt-ci"
# Mount training data PVC (Databento futures .dbn.zst files)
[[runners.kubernetes.volumes.pvc]]
name = "training-data-pvc"
mount_path = "/data/training"
read_only = true
# Runner tags for job matching
tags: "kapsule,rust,docker,gpu"
# Concurrency
concurrent: 4
# RBAC for runner to spawn pods
rbac:
create: true
rules:
- apiGroups: [""]
resources: ["pods", "pods/exec", "pods/log", "secrets", "configmaps"]
verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
- apiGroups: [""]
resources: ["pods/attach"]
verbs: ["create", "get"]
serviceAccount:
create: true
name: gitlab-runner