# GitLab Runner — RL training workloads (DQN, PPO) # Runs on ci-training pool (L40S: 48GB VRAM) # Mounts separate PVCs to avoid RWO conflicts with main runner gitlabUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181 # runnerToken set via --set at install time replicas: 1 # Reuse the existing gitlab-runner SA (has pods/secrets/configmaps RBAC) rbac: create: false serviceAccount: create: false name: gitlab-runner nodeSelector: k8s.scaleway.com/pool-name: infra runners: cloneUrl: http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181 config: | [[runners]] clone_url = "http://gitlab-webservice-default.foxhunt.svc.cluster.local:8181" tag_list = ["kapsule", "l40s"] [runners.kubernetes] namespace = "foxhunt" service_account = "gitlab-runner" image = "rust:1.89-slim" privileged = false node_selector_overwrite_allowed = ".*" # Hyperopt RL jobs need 6000m CPU + 20Gi mem (PSO parallel trials) cpu_request_overwrite_max_allowed = "8000m" cpu_limit_overwrite_max_allowed = "8000m" memory_request_overwrite_max_allowed = "48Gi" memory_limit_overwrite_max_allowed = "48Gi" poll_timeout = 600 # All RL runner jobs target GPU nodes → set nvidia runtime globally runtime_class_name = "nvidia" # Allow CI jobs to set pod annotations (training jobs expose Prometheus metrics) pod_annotations_overwrite_allowed = ".*" # Default resources for RL training on L40S cpu_request = "2000m" cpu_limit = "3800m" memory_request = "4Gi" memory_limit = "8Gi" helper_cpu_request = "100m" helper_cpu_limit = "500m" helper_memory_request = "128Mi" helper_memory_limit = "512Mi" image_pull_secrets = ["gitlab-registry"] [runners.kubernetes.node_selector] "k8s.scaleway.com/pool-name" = "ci-training" [runners.kubernetes.node_tolerations] "nvidia.com/gpu" = "NoSchedule" "node.cilium.io/agent-not-ready" = "NoSchedule" [runners.kubernetes.pod_labels] "app.kubernetes.io/part-of" = "foxhunt-ci" # Request GPU via K8s scheduler so only one training pod runs per GPU [[runners.kubernetes.pod_spec]] name = "build" patch_type = "strategic" patch = '{"containers":[{"name":"build","resources":{"requests":{"nvidia.com/gpu":"1"},"limits":{"nvidia.com/gpu":"1"}}}]}' # Training PVCs — separate from main runner to avoid RWO Multi-Attach errors [[runners.kubernetes.volumes.pvc]] name = "training-data-l4-pvc" mount_path = "/mnt/training-data" read_only = true [[runners.kubernetes.volumes.pvc]] name = "sccache-l4-pvc" mount_path = "/mnt/sccache" read_only = false tags: "kapsule,l40s" concurrent: 2