image: repository: ghcr.io/project-osrm/osrm-backend pullPolicy: IfNotPresent replicaCount: 1 autoscaling: enabled: false minReplicas: 1 maxReplicas: 100 targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80 serviceAccount: create: true automount: true annotations: {} name: "" service: type: ClusterIP port: 5000 volume: mountPath: /data # this will be probably different for you storageClass: linode-block-storage accessMode: ReadWriteOnce # adjust the size you need depending on the dataset you need size: 20Gi existingClaim: "" resources: {} # Routing data (map.osrm.*) is built OUTSIDE the cluster and loaded onto the PVC. # In-cluster extraction was removed (osrm-extract peaks ~4GB+ and OOM-kills on restart). # To refresh the map: build locally with osrm-backend (extract -> partition -> customize), # then copy map.osrm.* onto the volume (e.g. via a helper pod + kubectl cp). command: - "osrm-routed" - "--algorithm" - "mld" - /data/map.osrm # httpGet doesn't support status code 400 and there is no health check call on the osrm api # I rather avoid making a real call which will use compute everytime the probes triggers livenessProbe: exec: command: - sh - -c - 'cat /proc/net/tcp | grep -i ":1388"' readinessProbe: exec: command: - sh - -c - 'cat /proc/net/tcp | grep -i ":1388"' # important for init containers to give it times to download and extract the data tolerations: - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 3600 # 60 minutes - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 3600 # 60 minutes