-
Notifications
You must be signed in to change notification settings - Fork 1
/
option-loadbalancer.tf
58 lines (51 loc) 路 1.65 KB
/
option-loadbalancer.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
resource "kubernetes_namespace" "loadbalancer_namespace" {
count = var.enable_loadbalancer ? 1 : 0
metadata {
name = "metallb-system"
labels = {
"app" = "metallb"
}
}
}
resource "random_id" "loadbalancer_secret_random" {
count = var.enable_loadbalancer ? 1 : 0
byte_length = 128
}
resource "kubernetes_secret" "loadbalancer_secret" {
count = var.enable_loadbalancer ? 1 : 0
metadata {
name = "memberlist"
namespace = kubernetes_namespace.loadbalancer_namespace[0].id
}
data = {
secretkey = random_id.loadbalancer_secret_random[0].b64_std
}
}
data "docker_network" "kind_network" {
count = var.enable_loadbalancer ? 1 : 0
name = "kind"
}
resource "kubernetes_config_map" "loadbalancer_config" {
count = var.enable_loadbalancer ? 1 : 0
metadata {
name = "config"
namespace = kubernetes_namespace.loadbalancer_namespace[0].id
}
data = {
config = <<-EOF
address-pools:
- name: default
protocol: layer2
addresses:
- 172.${split(".", tolist(data.docker_network.kind_network[0].ipam_config).0.gateway)[1]}.255.250-172.${split(".", tolist(data.docker_network.kind_network[0].ipam_config).0.gateway)[1]}.255.250
EOF
}
}
data "kubectl_file_documents" "loadbalancer_manifests" {
count = var.enable_loadbalancer ? 1 : 0
content = file("${path.module}/manifest/loadbalancer.yml")
}
resource "kubectl_manifest" "kubectl_apply_loadbalancer" {
count = var.enable_loadbalancer ? length(data.kubectl_file_documents.loadbalancer_manifests[0].documents) : 0
yaml_body = element(data.kubectl_file_documents.loadbalancer_manifests[0].documents, count.index)
}