Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 1 addition & 22 deletions infra/relay-lb.tf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Global Geo DNS for IPv4, routing to the closest region.
# Global Geo DNS, routing to the closest region.
resource "google_dns_record_set" "relay_global" {
name = "relay.${var.domain}."
type = "A"
Expand All @@ -19,27 +19,6 @@ resource "google_dns_record_set" "relay_global" {
}
}

# Global Geo DNS for IPv6, routing to the closest region.
resource "google_dns_record_set" "relay_global_ipv6" {
name = "relay.${var.domain}."
type = "AAAA"
ttl = 60
managed_zone = google_dns_managed_zone.public.name

routing_policy {
dynamic "geo" {
for_each = local.relays

content {
location = geo.value.region
rrdatas = [
google_compute_address.relay_ipv6[geo.key].address
]
}
}
}
}

# Unfortunately GCP doesn't support global UDP load balancing despite their marketing.
# oof there goes a few hours; here's my progress for posterity:
# TODO We could still use this for regional load balancing.
Expand Down
68 changes: 8 additions & 60 deletions infra/relay.tf
Original file line number Diff line number Diff line change
@@ -1,19 +1,3 @@
resource "google_compute_network" "relay" {
name = "relay"
auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "relay" {
for_each = local.relays

name = "relay-${each.key}"
ip_cidr_range = "10.${index(keys(local.relays), each.key) + 1}.0.0/24"
region = each.value.region
network = google_compute_network.relay.id
stack_type = "IPV4_IPV6"
ipv6_access_type = "EXTERNAL"
}

resource "google_compute_instance" "relay" {
for_each = local.relays

Expand All @@ -35,20 +19,10 @@ resource "google_compute_instance" "relay" {
}

network_interface {
network = google_compute_network.relay.id
subnetwork = google_compute_subnetwork.relay[each.key].id
stack_type = "IPV4_IPV6"
network = "default"

access_config {
nat_ip = google_compute_address.relay[each.key].address
network_tier = "PREMIUM"
public_ptr_domain_name = "relay.${each.key}.${var.domain}."
}

ipv6_access_config {
network_tier = "PREMIUM"
public_ptr_domain_name = "relay.${each.key}.${var.domain}."
external_ipv6 = google_compute_address.relay_ipv6[each.key].address
nat_ip = google_compute_address.relay[each.key].address
}
}

Expand Down Expand Up @@ -82,6 +56,11 @@ resource "google_compute_instance" "relay" {
# For the firewall
tags = ["relay"]

lifecycle {
# There seems to be a terraform bug causing this to be recreated on every apply
# ignore_changes = [boot_disk]
}

allow_stopping_for_update = true
}

Expand All @@ -90,22 +69,6 @@ resource "google_compute_address" "relay" {

name = "relay-${each.key}"
region = each.value.region

address_type = "EXTERNAL"
ip_version = "IPV4"
network_tier = "PREMIUM"
}

resource "google_compute_address" "relay_ipv6" {
for_each = local.relays

name = "relay-${each.key}-ipv6"
region = each.value.region
address_type = "EXTERNAL"
ip_version = "IPV6"
ipv6_endpoint_type = "VM"
network_tier = "PREMIUM"
subnetwork = google_compute_subnetwork.relay[each.key].id
}

# Create a DNS entry for each node.
Expand All @@ -122,7 +85,7 @@ resource "google_dns_record_set" "relay" {
# Allow UDP 443
resource "google_compute_firewall" "relay" {
name = "relay"
network = google_compute_network.relay.id
network = "default"

allow {
protocol = "udp"
Expand All @@ -133,21 +96,6 @@ resource "google_compute_firewall" "relay" {
target_tags = ["relay"]
}

# Allow UDP 443 for IPv6
resource "google_compute_firewall" "relay_ipv6" {
name = "relay-ipv6"
network = google_compute_network.relay.id

allow {
protocol = "udp"
ports = ["443"]
}

source_ranges = ["::/0"]
target_tags = ["relay"]
}


# We must use a legacy health check for the UDP load balancer
resource "google_compute_http_health_check" "relay" {
name = "relay"
Expand Down
2 changes: 1 addition & 1 deletion infra/relay.yml.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ write_files:
--cap-add=SYS_PTRACE \
-v "/etc/cert:/etc/cert:ro" \
-e RUST_LOG=debug -e RUST_BACKTRACE=1 \
${docker}/moq-relay --bind [::]:443 \
${docker}/moq-relay --bind 0.0.0.0:443 \
--tls-cert "/etc/cert/${cluster_node}.crt" --tls-key "/etc/cert/${cluster_node}.key" \
--tls-cert "/etc/cert/${public_host}.crt" --tls-key "/etc/cert/${public_host}.key" \
--tls-root "/etc/cert/internal.ca" \
Expand Down
2 changes: 1 addition & 1 deletion infra/web.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ resource "google_cloud_run_v2_service" "web" {

template {
containers {
image = "docker.io/kixelated/moq-js"
image = "docker.io/kixelated/quic.video"
}
}

Expand Down