Created
November 1, 2021 14:39
-
-
Save ldelossa/016708e30460fd6a033abc625e311b70 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
provider "google" { | |
project = "cilium-dev" | |
region = "us-east4" | |
} | |
// create two vpc networks disconnected | |
// from one another. | |
resource "google_compute_network" "bgp_demo_network_1" { | |
name = "bgp-demo-network-1" | |
} | |
resource "google_compute_network" "bgp_demo_network_2" { | |
name = "bgp-demo-network-2" | |
} | |
// create two gke clusters in both networks | |
resource "google_service_account" "bgp_demo" { | |
account_id = "bgp-demo" | |
display_name = "bgp-demo" | |
} | |
resource "google_container_cluster" "bgp_demo_cluster_1" { | |
name = "bgp-demo-cluster-1" | |
location = "us-east4-a" | |
network = google_compute_network.bgp_demo_network_1.self_link | |
initial_node_count = 3 | |
node_config { | |
# Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. | |
service_account = google_service_account.bgp_demo.email | |
oauth_scopes = [ | |
"https://www.googleapis.com/auth/cloud-platform" | |
] | |
tags = ["bgp-demo-cluster-1"] | |
} | |
timeouts { | |
create = "30m" | |
update = "40m" | |
} | |
} | |
resource "google_container_cluster" "bgp_demo_cluster_2" { | |
name = "bgp-demo-cluster-2" | |
location = "us-east4-a" | |
network = google_compute_network.bgp_demo_network_2.self_link | |
initial_node_count = 3 | |
node_config { | |
# Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. | |
service_account = google_service_account.bgp_demo.email | |
oauth_scopes = [ | |
"https://www.googleapis.com/auth/cloud-platform" | |
] | |
tags = ["bgp-demo-cluster-2"] | |
} | |
timeouts { | |
create = "30m" | |
update = "40m" | |
} | |
} | |
// deploy two instances, each in a separate vpc network, which will act as our | |
// backbone BGP routers. | |
resource "google_compute_instance" "bgp_router_vpc_1" { | |
name = "bgp-router-vpc-1" | |
machine_type = "e2-medium" | |
zone = "us-east4-a" | |
tags = ["bgp-router-vpc-1"] | |
boot_disk { | |
initialize_params { | |
image = "debian-cloud/debian-9" | |
} | |
} | |
// Local SSD disk | |
scratch_disk { | |
interface = "SCSI" | |
} | |
// ephemeral public ip for EBGP | |
// peering | |
network_interface { | |
network = google_compute_network.bgp_demo_network_1.self_link | |
access_config { | |
// Ephemeral public IP | |
} | |
} | |
// ephemeral private ip for IBGP peering. | |
network_interface { | |
network = google_compute_network.bgp_demo_network_1.self_link | |
} | |
metadata = { | |
foo = "bar" | |
} | |
metadata_startup_script = "echo hi > /test.txt" | |
service_account { | |
# Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles. | |
email = google_service_account.bgp_demo.email | |
scopes = ["cloud-platform"] | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment