Мы создали файл .yaml для развертывания osrm / osrm-backend (https://hub.docker.com/r/osrm/osrm-backend/tags) в кластере Kubernetes.
Сначала мы загружаем pbf-файл в том узла, затем создаем необходимые файлы для службы, и, наконец, служба запускается.
Вы можете найти файл yaml ниже:
apiVersion: v1
kind: Service
metadata:
name: osrm-albania
labels:
app: osrm-albania
spec:
ports:
- port: 5000
targetPort: 5000
name: http
selector:
app: osrm-albania
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: osrm-albania
spec:
replicas: 1
selector:
matchLabels:
app: osrm-albania
template:
metadata:
labels:
app: osrm-albania
spec:
containers:
- name: osrm-albania
image: osrm/osrm-backend:latest
command: ["/bin/sh", "-c"]
args: ["osrm-extract -p /opt/car.lua /data/albania-latest.osm.pbf && osrm-partition /data/albania-latest.osrm && osrm-customize /data/albania-latest.osrm && osrm-routed --algorithm mld /data/albania-latest.osrm"]
ports:
- containerPort: 5000
name: osrm-port
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
initContainers:
- name: get-osrm-file
image: busybox
command: ['wget', 'http://download.geofabrik.de/europe/albania-latest.osm.pbf', '--directory-prefix=/data']
volumeMounts:
- name: albania
readOnly: false
mountPath: /data
volumes:
- name: albania
emptyDir: {}
Проблема в том, что нам необходимо регулярно обновлять картографические данные, используемые службой osrm. Это означает возможность повторно загрузить файл pbf и воссоздать необходимые файлы для использования службой.
Этого можно достичь с помощью kubernetes cronjobs, которым, возможно, придется вместо этого использовать постоянные тома (Cron Jobs в Kubernetes - подключиться к существующему Pod, выполнить скрипт).
Это единственный способ получить новые данные карты и обновить данные, используемые службой osrm? Как именно? Есть ли более простой способ добиться этого?