From ae81b8ab05020679f5a7077af437ab31d1783b31 Mon Sep 17 00:00:00 2001 From: Jakub Novak Date: Wed, 29 Jan 2025 13:23:10 -0800 Subject: [PATCH] Dynamically resolve DNS --- packages/api/internal/orchestrator/orchestrator.go | 9 ++++++++- packages/cluster/network/main.tf | 1 + packages/nomad/api.hcl | 3 +++ packages/nomad/proxies/client.conf | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/api/internal/orchestrator/orchestrator.go b/packages/api/internal/orchestrator/orchestrator.go index b92179584..680e497d0 100644 --- a/packages/api/internal/orchestrator/orchestrator.go +++ b/packages/api/internal/orchestrator/orchestrator.go @@ -5,7 +5,9 @@ import ( "errors" "fmt" "log" + "strconv" + "github.com/e2b-dev/infra/packages/shared/pkg/utils" nomadapi "github.com/hashicorp/nomad/api" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" @@ -39,7 +41,12 @@ func New( logger.Errorf("Error initializing Analytics client\n: %v", err) } + port := utils.RequiredEnv("DNS_PORT", "Local DNS server resolving IPs for sandboxes") dnsServer := dns.New() + intPort, convErr := strconv.Atoi(port) + if convErr != nil { + log.Fatalf("Failed to convert DNS_PORT to int: %v\n", convErr) + } if env.IsLocal() { fmt.Printf("Running locally, skipping starting DNS server\n") @@ -47,7 +54,7 @@ func New( go func() { fmt.Printf("Starting DNS server\n") - dnsErr := dnsServer.Start(ctx, "127.0.0.4", 53) + dnsErr := dnsServer.Start(ctx, "0.0.0.0", intPort) if dnsErr != nil { log.Fatalf("Failed running DNS server: %v\n", dnsErr) } diff --git a/packages/cluster/network/main.tf b/packages/cluster/network/main.tf index 8db0523f1..b8fa7c404 100644 --- a/packages/cluster/network/main.tf +++ b/packages/cluster/network/main.tf @@ -206,6 +206,7 @@ resource "google_compute_url_map" "orch_map" { name = "api-paths" default_service = google_compute_backend_service.default["api"].self_link } + path_matcher { name = "docker-reverse-proxy-paths" default_service = google_compute_backend_service.default["docker-reverse-proxy"].self_link diff --git a/packages/nomad/api.hcl b/packages/nomad/api.hcl index dd9e06bac..880a98ffe 100644 --- a/packages/nomad/api.hcl +++ b/packages/nomad/api.hcl @@ -73,6 +73,9 @@ job "api" { REDIS_URL = "${redis_url}" # This is here just because it is required in some part of our code which is transitively imported TEMPLATE_BUCKET_NAME = "skip" + ADMIN_TOKEN = var.admin_token + REDIS_URL = var.redis_url + DNS_PORT = 5353 } config { diff --git a/packages/nomad/proxies/client.conf b/packages/nomad/proxies/client.conf index 7faf52957..ae61d0191 100644 --- a/packages/nomad/proxies/client.conf +++ b/packages/nomad/proxies/client.conf @@ -30,7 +30,7 @@ server { listen 3002; # DNS server resolved addreses as to - resolver 127.0.0.4 valid=0s; + resolver api.service.consul:5353 valid=0s; resolver_timeout 5s; proxy_set_header Host $host;