Skip to content

Commit 2ca79e3

Browse files
committed
feat: add support for GCP to bootstrap
Signed-off-by: Ales Verbic <[email protected]>
1 parent 117c631 commit 2ca79e3

File tree

6 files changed

+84
-11
lines changed

6 files changed

+84
-11
lines changed

bootstrap/feature/main.tf

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ variable "api_key_salt" {
3131
variable "dcu_per_frame" {
3232
type = map(string)
3333
default = {
34-
"mainnet" = "10"
35-
"preprod" = "5"
36-
"preview" = "5"
34+
"mainnet" = "10"
35+
"preprod" = "5"
36+
"preview" = "5"
37+
"vector-testnet" = "5"
3738
}
3839
}
3940

bootstrap/main.tf

+6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ module "ogmios_v1_proxy" {
3232
proxy_image_tag = var.proxy_blue_image_tag
3333
extension_name = var.extension_name
3434
networks = var.networks
35+
cloud_provider = var.cloud_provider
36+
dns_zone = var.dns_zone
37+
cluster_issuer = var.cluster_issuer
3538
name = "proxy"
3639
}
3740

@@ -44,6 +47,9 @@ module "ogmios_v1_proxy_green" {
4447
extension_name = var.extension_name
4548
networks = ["mainnet", "preprod", "preview", "vector-testnet"]
4649
environment = "green"
50+
cloud_provider = var.cloud_provider
51+
dns_zone = var.dns_zone
52+
cluster_issuer = var.cluster_issuer
4753
name = "proxy-green"
4854
}
4955

bootstrap/proxy/cert.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ resource "kubernetes_manifest" "certificate_cluster_wildcard_tls" {
2525

2626
"issuerRef" = {
2727
"kind" = "ClusterIssuer"
28-
"name" = "letsencrypt"
28+
"name" = var.cluster_issuer
2929
}
3030
"secretName" = local.cert_secret_name
3131
}

bootstrap/proxy/main.tf

+15
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,18 @@ variable "dns_zone" {
8080
type = string
8181
default = "demeter.run"
8282
}
83+
84+
variable "cluster_issuer" {
85+
type = string
86+
default = "letsencrypt"
87+
}
88+
89+
variable "cloud_provider" {
90+
type = string
91+
default = "aws"
92+
}
93+
94+
variable "healthcheck_port" {
95+
type = number
96+
default = null
97+
}

bootstrap/proxy/service.tf

+45-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
resource "kubernetes_service_v1" "proxy_service" {
1+
resource "kubernetes_service_v1" "proxy_service_aws" {
2+
for_each = toset([for n in toset(["loadbalancer"]) : n if var.cloud_provider == "aws"])
23
metadata {
34
name = local.name
45
namespace = var.namespace
56
annotations = {
67
"service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" : "instance"
78
"service.beta.kubernetes.io/aws-load-balancer-scheme" : "internet-facing"
89
"service.beta.kubernetes.io/aws-load-balancer-type" : "external"
9-
"service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol" : "HTTPS"
10+
"service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol" : "HTTP"
1011
"service.beta.kubernetes.io/aws-load-balancer-healthcheck-path" : "/healthz"
12+
"service.beta.kubernetes.io/aws-load-balancer-healthcheck-port" : var.healthcheck_port != null ? var.healthcheck_port : "traffic-port"
1113
}
1214
}
1315

@@ -17,11 +19,51 @@ resource "kubernetes_service_v1" "proxy_service" {
1719

1820
port {
1921
name = "proxy"
20-
port = 443
22+
port = 9443
2123
target_port = local.proxy_port
2224
protocol = "TCP"
2325
}
2426

27+
28+
port {
29+
name = "health"
30+
port = 80
31+
target_port = local.prometheus_port
32+
protocol = "TCP"
33+
}
34+
35+
type = "LoadBalancer"
36+
}
37+
}
38+
39+
resource "kubernetes_service_v1" "proxy_service_gcp" {
40+
for_each = toset([for n in toset(["loadbalancer"]) : n if var.cloud_provider == "gcp"])
41+
metadata {
42+
name = local.name
43+
namespace = var.namespace
44+
annotations = {
45+
"cloud.google.com/l4-rbs" : "enabled"
46+
}
47+
}
48+
49+
spec {
50+
external_traffic_policy = "Local"
51+
selector = local.proxy_labels
52+
53+
port {
54+
name = "proxy"
55+
port = 9443
56+
target_port = local.proxy_port
57+
protocol = "TCP"
58+
}
59+
60+
port {
61+
name = "health"
62+
port = 80
63+
target_port = local.prometheus_port
64+
protocol = "TCP"
65+
}
66+
2567
type = "LoadBalancer"
2668
}
2769
}

bootstrap/variables.tf

+13-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,20 @@ variable "dns_zone" {
77
default = "demeter.run"
88
}
99

10+
variable "cluster_issuer" {
11+
type = string
12+
default = "letsencrypt"
13+
}
14+
1015
variable "extension_name" {
1116
type = string
1217
default = "ogmios-m1"
1318
}
1419

20+
variable "cloud_provider" {
21+
type = string
22+
default = "aws"
23+
}
1524

1625
variable "networks" {
1726
type = list(string)
@@ -37,9 +46,10 @@ variable "api_key_salt" {
3746
variable "dcu_per_frame" {
3847
type = map(string)
3948
default = {
40-
"mainnet" = "10"
41-
"preprod" = "5"
42-
"preview" = "5"
49+
"mainnet" = "10"
50+
"preprod" = "5"
51+
"preview" = "5"
52+
"vector-testnet" = "5"
4353
}
4454
}
4555

@@ -128,7 +138,6 @@ variable "proxy_resources" {
128138
}
129139
}
130140

131-
132141
variable "instances" {
133142
type = map(object({
134143
salt = string

0 commit comments

Comments
 (0)