Stub out OSM support
This commit is contained in:
parent
ff3eda5333
commit
7941c5645c
5 changed files with 395 additions and 0 deletions
177
services/navigation/navigation-deployment.yaml
Normal file
177
services/navigation/navigation-deployment.yaml
Normal 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
|
||||||
26
services/navigation/navigation-external-secrets.yaml
Normal file
26
services/navigation/navigation-external-secrets.yaml
Normal 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
|
||||||
82
services/navigation/navigation-ingress.yaml
Normal file
82
services/navigation/navigation-ingress.yaml
Normal 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
|
||||||
47
services/navigation/navigation-pvcs.yaml
Normal file
47
services/navigation/navigation-pvcs.yaml
Normal 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
|
||||||
63
services/navigation/navigation-service.yaml
Normal file
63
services/navigation/navigation-service.yaml
Normal 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
|
||||||
Loading…
Add table
Reference in a new issue