-
Notifications
You must be signed in to change notification settings - Fork 2
/
clusters.tf
103 lines (89 loc) · 4.32 KB
/
clusters.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
##############################################################################
# Find valid IKS/ROKS Cluster versions for region
##############################################################################
data "ibm_container_cluster_versions" "cluster_versions" {
count = length(var.cluster_vpcs) > 0 ? 1 : 0
}
##############################################################################
##############################################################################
# Default Kube Version Local
##############################################################################
locals {
default_kube_version = {
openshift = (
length(var.cluster_vpcs) == 0 # if no clusters null, otherwise get latest
? null
: "${data.ibm_container_cluster_versions.cluster_versions[0].valid_openshift_versions[length(data.ibm_container_cluster_versions.cluster_versions[0].valid_openshift_versions) - 1]}_openshift"
)
iks = (
length(var.cluster_vpcs) == 0 # if no clusters null, otherwise get latest
? null
: data.ibm_container_cluster_versions.cluster_versions[0].valid_kube_versions[length(data.ibm_container_cluster_versions.cluster_versions[0].valid_kube_versions) - 1]
)
}
}
##############################################################################
##############################################################################
# Get Cluster Subnets
##############################################################################
module "cluster_subnets" {
source = "github.com/Cloud-Schematics/get-subnets"
for_each = toset(var.cluster_vpcs)
subnet_zone_list = module.icse_vpc_network.vpc_networks[each.key].subnet_zone_list
regex = join("|",
flatten(
[
# For each tier in cluster subnet tiers
for tier in var.cluster_subnet_tier :
[
# for each zone in cluster zones (starting at 1 and ending at max 3)
for zone in range(1, var.cluster_zones + 1) :
"-${tier}-${zone}" # Create expression for each zone joined with a pipe |
]
]
)
)
}
##############################################################################
##############################################################################
# Create Cluster KMS Key
##############################################################################
resource "ibm_kms_key" "cluster_key" {
count = length(var.cluster_vpcs) > 0 ? 1 : 0
instance_id = module.icse_vpc_network.key_management_guid
key_name = "${var.prefix}-cluster-key"
standard_key = false
endpoint_type = var.key_management_endpoint_type
}
##############################################################################
##############################################################################
# Create Clusters
##############################################################################
module "clusters" {
source = "github.com/Cloud-Schematics/icse-cluster-module"
for_each = toset(var.cluster_vpcs)
region = var.region
prefix = var.prefix
tags = var.tags
disable_public_service_endpoint = var.disable_public_service_endpoint
entitlement = var.entitlement
update_all_workers = var.update_all_workers
machine_type = var.flavor
workers_per_zone = var.workers_per_zone
wait_till = var.wait_till
kube_version = var.kube_version == "default" ? local.default_kube_version[var.cluster_type] : var.kube_version
pod_subnet = null
service_subnet = null
vpc_id = module.icse_vpc_network.vpc_networks[each.key].id
resource_group_id = local.resource_group_vpc_map[each.key]
subnet_zone_list = module.cluster_subnets[each.key].subnets
cos_instance_crn = module.icse_vpc_network.cos_instances[0].crn
kms_config = {
use_key_protect = true
instance_guid = module.icse_vpc_network.key_management_guid
private_endpoint = true
key_id = ibm_kms_key.cluster_key[0].key_id
}
depends_on = [ibm_iam_authorization_policy.easy_cluster_to_kms]
}
##############################################################################