variable "tls_secret_name" {} variable "tier" { type = string } resource "kubernetes_namespace" "osm-routing" { metadata { name = "osm-routing" labels = { "istio-injection" : "disabled" } } } # --- OSRM Foot --- resource "kubernetes_deployment" "osrm-foot" { metadata { name = "osrm-foot" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "osrm-foot" tier = var.tier } } spec { replicas = 1 strategy { type = "Recreate" } selector { match_labels = { app = "osrm-foot" } } template { metadata { labels = { app = "osrm-foot" } } spec { container { name = "osrm-foot" image = "ghcr.io/project-osrm/osrm-backend:latest" command = ["osrm-routed", "--algorithm", "MLD", "/data/foot/greater-london-latest.osrm"] port { name = "http" container_port = 5000 protocol = "TCP" } volume_mount { name = "osrm-data" mount_path = "/data" } } volume { name = "osrm-data" nfs { server = "10.0.10.15" path = "/mnt/main/osm-routing/osrm-data" } } } } } } resource "kubernetes_service" "osrm-foot" { metadata { name = "osrm-foot" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "osrm-foot" } } spec { selector = { app = "osrm-foot" } port { port = 5000 target_port = 5000 } } } # --- OSRM Bicycle --- resource "kubernetes_deployment" "osrm-bicycle" { metadata { name = "osrm-bicycle" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "osrm-bicycle" tier = var.tier } } spec { replicas = 1 strategy { type = "Recreate" } selector { match_labels = { app = "osrm-bicycle" } } template { metadata { labels = { app = "osrm-bicycle" } } spec { container { name = "osrm-bicycle" image = "ghcr.io/project-osrm/osrm-backend:latest" command = ["osrm-routed", "--algorithm", "MLD", "/data/bicycle/greater-london-latest.osrm"] port { name = "http" container_port = 5000 protocol = "TCP" } volume_mount { name = "osrm-data" mount_path = "/data" } } volume { name = "osrm-data" nfs { server = "10.0.10.15" path = "/mnt/main/osm-routing/osrm-data" } } } } } } resource "kubernetes_service" "osrm-bicycle" { metadata { name = "osrm-bicycle" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "osrm-bicycle" } } spec { selector = { app = "osrm-bicycle" } port { port = 5000 target_port = 5000 } } } # --- OTP (OpenTripPlanner) --- resource "kubernetes_deployment" "otp" { metadata { name = "otp" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "otp" tier = var.tier } } spec { replicas = 0 # Scaled down: TfL GTFS data expired, OTP crash-loops on build strategy { type = "Recreate" } selector { match_labels = { app = "otp" } } template { metadata { labels = { app = "otp" } } spec { container { name = "otp" image = "opentripplanner/opentripplanner:2.6.0" args = ["--build", "--save"] port { name = "http" container_port = 8080 protocol = "TCP" } volume_mount { name = "otp-data" mount_path = "/var/opentripplanner" } } volume { name = "otp-data" nfs { server = "10.0.10.15" path = "/mnt/main/osm-routing/otp-data" } } } } } } resource "kubernetes_service" "otp" { metadata { name = "otp" namespace = kubernetes_namespace.osm-routing.metadata[0].name labels = { app = "otp" } } spec { selector = { app = "otp" } port { port = 8080 target_port = 8080 } } }