Stub out OSM support

This commit is contained in:
Astra Logical 2026-06-28 10:59:26 -04:00
parent ff3eda5333
commit 7941c5645c
5 changed files with 395 additions and 0 deletions

View file

@ -0,0 +1,177 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: oauth2-proxy
name: oauth2-proxy
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: oauth2-proxy
template:
metadata:
labels:
app: oauth2-proxy
spec:
containers:
- name: oauth2-proxy
image: quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
ports:
- containerPort: 4180
protocol: TCP
name: proxy-port
env:
- name: OAUTH2_PROXY_PROVIDER
value: "keycloak-oidc"
- name: OAUTH2_PROXY_PROVIDER_DISPLAY_NAME
value: "Keycloak"
- name: OAUTH2_PROXY_CLIENT_ID
valueFrom:
secretKeyRef:
name: navigation-secrets
key: OIDC_CLIENT_ID
- name: OAUTH2_PROXY_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: navigation-secrets
key: OIDC_CLIENT_SECRET
- name: OAUTH2_PROXY_COOKIE_SECRET
valueFrom:
secretKeyRef:
name: navigation-secrets
key: OAUTH2_PROXY_COOKIE_SECRET
- name: OAUTH2_PROXY_UPSTREAMS
value: "file:///dev/null"
- name: OAUTH2_PROXY_HTTP_ADDRESS
value: "0.0.0.0:4180"
- name: OAUTH2_PROXY_REDIRECT_URL
value: "https://migrate.mynest.love/oauth2/callback"
- name: OAUTH2_PROXY_OIDC_ISSUER_URL
value: "https://sso.mynest.love/realms/nest"
- name: OAUTH2_PROXY_COOKIE_DOMAINS
value: "migrate.mynest.love"
- name: OAUTH2_PROXY_WHITELIST_DOMAINS
value: "migrate.mynest.love"
- name: OAUTH2_PROXY_COOKIE_SECURE
value: "true"
- name: OAUTH2_PROXY_EMAIL_DOMAINS
value: "*"
- name: OAUTH2_PROXY_SKIP_JWT_BEARER_TOKENS
value: "true"
- name: OAUTH2_PROXY_EXTRA_JWT_ISSUERS
value: "https://sso.mynest.love/realms/nest=account"
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: valhalla
name: valhalla
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: valhalla
strategy:
type: Recreate
template:
metadata:
labels:
app: valhalla
spec:
containers:
- name: valhalla
image: ghcr.io/valhalla/valhalla:latest
ports:
- containerPort: 8002
protocol: TCP
name: valhalla-port
env:
- name: TZ
value: America/New_York
- name: tile_urls
value: "https://download.geofabrik.de/north-america/us/maryland-latest.osm.pbf"
- name: build_elevation
value: "True"
- name: serve_tiles
value: "True"
- name: force_rebuild
value: "False"
volumeMounts:
- mountPath: /custom_files
name: valhalla-storage
volumes:
- name: valhalla-storage
persistentVolumeClaim:
claimName: valhalla-data-pvc
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: tileserver
name: tileserver
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: tileserver
strategy:
type: Recreate
template:
metadata:
labels:
app: tileserver
spec:
containers:
- name: tileserver
image: maptiler/tileserver-gl:latest
ports:
- containerPort: 8080
protocol: TCP
name: tileserver-port
volumeMounts:
- mountPath: /data
name: tileserver-storage
volumes:
- name: tileserver-storage
persistentVolumeClaim:
claimName: tileserver-data-pvc
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: photon
name: photon
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: photon
strategy:
type: Recreate
template:
metadata:
labels:
app: photon
spec:
containers:
- name: photon
image: komoot/photon:latest
ports:
- containerPort: 2322
protocol: TCP
name: photon-port
volumeMounts:
- mountPath: /photon/photon_data
name: photon-storage
volumes:
- name: photon-storage
persistentVolumeClaim:
claimName: photon-data-pvc

View file

@ -0,0 +1,26 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: navigation-secrets
namespace: default
spec:
refreshInterval: "1h"
secretStoreRef:
name: vault-external-secrets-store
kind: ClusterSecretStore
target:
name: navigation-secrets
creationPolicy: Owner
data:
- secretKey: OIDC_CLIENT_ID
remoteRef:
key: navigation
property: client-id
- secretKey: OIDC_CLIENT_SECRET
remoteRef:
key: navigation
property: client-secret
- secretKey: OAUTH2_PROXY_COOKIE_SECRET
remoteRef:
key: navigation
property: cookie-secret

View file

@ -0,0 +1,82 @@
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: navigation-forwardauth
namespace: default
spec:
forwardAuth:
address: http://oauth2-proxy.default.svc.cluster.local:4180
trustForwardHeader: true
authResponseHeaders:
- "X-Auth-User"
- "X-Auth-Email"
- "Authorization"
---
# Unauthenticated Ingress for the OAuth Callback endpoint
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: navigation-ingress-oauth
namespace: default
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
tls:
- hosts:
- migrate.mynest.love
secretName: navigation-tls
rules:
- host: migrate.mynest.love
http:
paths:
- path: /oauth2
pathType: Prefix
backend:
service:
name: oauth2-proxy
port:
name: http-proxy
---
# Authenticated Ingress protecting the mapping services
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: navigation-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
traefik.ingress.kubernetes.io/router.middlewares: default-navigation-forwardauth@kubernetescrd
spec:
tls:
- hosts:
- migrate.mynest.love
secretName: navigation-tls
rules:
- host: migrate.mynest.love
http:
paths:
- path: /route
pathType: Prefix
backend:
service:
name: valhalla
port:
name: http-valhalla
- path: /api
pathType: Prefix
backend:
service:
name: photon
port:
name: http-photon
- path: /
pathType: Prefix
backend:
service:
name: tileserver
port:
name: http-tileserver

View file

@ -0,0 +1,47 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: valhalla-data-pvc
namespace: default
labels:
recurring-job.longhorn.io/source: "enabled"
recurring-job-group.longhorn.io/app-config-group: "enabled"
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 50Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tileserver-data-pvc
namespace: default
labels:
recurring-job.longhorn.io/source: "enabled"
recurring-job-group.longhorn.io/app-config-group: "enabled"
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: photon-data-pvc
namespace: default
labels:
recurring-job.longhorn.io/source: "enabled"
recurring-job-group.longhorn.io/app-config-group: "enabled"
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 20Gi

View file

@ -0,0 +1,63 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: oauth2-proxy
name: oauth2-proxy
namespace: default
spec:
type: ClusterIP
ports:
- name: http-proxy
port: 4180
targetPort: proxy-port
selector:
app: oauth2-proxy
---
apiVersion: v1
kind: Service
metadata:
labels:
app: valhalla
name: valhalla
namespace: default
spec:
type: ClusterIP
ports:
- name: http-valhalla
port: 8002
targetPort: valhalla-port
selector:
app: valhalla
---
apiVersion: v1
kind: Service
metadata:
labels:
app: tileserver
name: tileserver
namespace: default
spec:
type: ClusterIP
ports:
- name: http-tileserver
port: 8080
targetPort: tileserver-port
selector:
app: tileserver
---
apiVersion: v1
kind: Service
metadata:
labels:
app: photon
name: photon
namespace: default
spec:
type: ClusterIP
ports:
- name: http-photon
port: 2322
targetPort: photon-port
selector:
app: photon