forked from demeter-run/ext-cardano-ogmios
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.tf
126 lines (112 loc) · 3.7 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
locals {
network_version_combinations = [
for combo in setproduct(var.networks, var.versions) : {
network = combo[0]
version = combo[1]
}
]
}
resource "kubernetes_namespace" "namespace" {
metadata {
name = var.namespace
}
}
module "ogmios_v1_feature" {
depends_on = [kubernetes_namespace.namespace]
source = "./feature"
namespace = var.namespace
operator_image_tag = var.operator_image_tag
metrics_delay = var.metrics_delay
extension_name = var.extension_name
api_key_salt = var.api_key_salt
dcu_per_frame = var.dcu_per_frame
dns_zone = var.dns_zone
resources = var.operator_resources
}
module "ogmios_v1_proxy" {
depends_on = [kubernetes_namespace.namespace]
source = "./proxy"
cloud_provider = var.cloud_provider
cluster_issuer = var.cluster_issuer
dns_zone = var.dns_zone
environment = var.proxy_blue_environment
extension_name = var.extension_name
extra_annotations = var.proxy_blue_extra_annotations
name = var.proxy_blue_name
namespace = var.namespace
networks = var.networks
proxy_image_tag = var.proxy_blue_image_tag
replicas = var.proxy_blue_replicas
}
module "ogmios_v1_proxy_green" {
depends_on = [kubernetes_namespace.namespace]
source = "./proxy"
cloud_provider = var.cloud_provider
cluster_issuer = var.cluster_issuer
dns_zone = var.dns_zone
environment = var.proxy_green_environment
extension_name = var.extension_name
extra_annotations = var.proxy_green_extra_annotations
name = var.proxy_green_name
namespace = var.namespace
networks = var.networks
proxy_image_tag = var.proxy_green_image_tag
replicas = var.proxy_green_replicas
}
// mainnet
module "ogmios_configs" {
depends_on = [kubernetes_namespace.namespace]
for_each = { for network in var.networks : "${network}" => network }
source = "./configs"
namespace = var.namespace
network = each.value
}
module "ogmios_instances" {
depends_on = [kubernetes_namespace.namespace, module.ogmios_configs]
for_each = var.instances
source = "./instance"
namespace = var.namespace
salt = each.value.salt
network = each.value.network
ogmios_image = each.value.ogmios_image
node_private_dns = each.value.node_private_dns
ogmios_version = each.value.ogmios_version
replicas = each.value.replicas
image_pull_secret = each.value.image_pull_secret
tolerations = coalesce(each.value.tolerations, [
{
effect = "NoSchedule"
key = "demeter.run/compute-profile"
operator = "Exists"
},
{
effect = "NoSchedule"
key = "demeter.run/compute-arch"
operator = "Equal"
value = "arm64"
},
{
effect = "NoSchedule"
key = "demeter.run/availability-sla"
operator = "Equal"
value = "consistent"
}
])
node_affinity = coalesce(each.value.node_affinity, {
required_during_scheduling_ignored_during_execution = {}
preferred_during_scheduling_ignored_during_execution = []
})
}
module "ogmios_services" {
depends_on = [kubernetes_namespace.namespace]
for_each = { for i, nv in local.network_version_combinations : "${nv.network}-${nv.version}" => nv }
source = "./service"
namespace = var.namespace
ogmios_version = each.value.version
network = each.value.network
}
module "ogmios_monitoring" {
source = "./monitoring"
for_each = var.o11y_datasource_uid != null ? toset(["enabled"]) : toset([])
o11y_datasource_uid = var.o11y_datasource_uid
}