@@ -12,209 +12,43 @@ module "resource_group" {
1212# Add-ons
1313# #######################################################################################################################
1414
15- module "monolith_add_ons " {
15+ module "ocp_cluster_with_add_ons " {
1616 source = " ../../modules/monolith"
1717 prefix = var. prefix
1818 region = var. region
19+ ibmcloud_api_key = var. ibmcloud_api_key
20+ provider_visibility = var. provider_visibility
1921 resource_group_id = module. resource_group . resource_group_id
20- kms_encryption_enabled_cluster = var . kms_encryption_enabled_cluster
22+ kms_encryption_enabled_cluster = true
2123 existing_kms_instance_crn = var. existing_kms_instance_crn
2224 existing_cluster_kms_key_crn = var. existing_cluster_kms_key_crn
23- kms_endpoint_type = var . kms_endpoint_type
24- key_protect_allowed_network = var . key_protect_allowed_network
25- kms_encryption_enabled_boot_volume = var . kms_encryption_enabled_boot_volume
25+ kms_endpoint_type = " private "
26+ key_protect_allowed_network = " private-only "
27+ kms_encryption_enabled_boot_volume = true
2628 existing_boot_volume_kms_key_crn = var. existing_boot_volume_kms_key_crn
27- kms_plan = var . kms_plan
28- en_service_plan = var . en_service_plan
29- en_service_endpoints = var . en_service_endpoints
29+ kms_plan = " tiered-pricing "
30+ en_service_plan = " standard "
31+ en_service_endpoints = " public-and-private "
3032 existing_secrets_manager_crn = var. existing_secrets_manager_crn
31- secrets_manager_service_plan = var. secrets_manager_service_plan
32- secrets_manager_endpoint_type = var. secrets_manager_endpoint_type
33- secrets_manager_allowed_network = var. secrets_manager_allowed_network
33+ secrets_manager_service_plan = " standard"
34+ secrets_manager_endpoint_type = " private"
3435 existing_event_notifications_instance_crn = var. existing_event_notifications_instance_crn
3536 existing_cos_instance_crn = var. existing_cos_instance_crn
36- cos_instance_plan = var . cos_instance_plan
37- management_endpoint_type_for_buckets = var . management_endpoint_type_for_buckets
37+ cos_instance_plan = " standard "
38+ management_endpoint_type_for_buckets = " direct "
3839 existing_cloud_monitoring_crn = var. existing_cloud_monitoring_crn
39- cloud_monitoring_plan = var . cloud_monitoring_plan
40+ cloud_monitoring_plan = " graduated-tier "
4041 existing_cloud_logs_crn = var. existing_cloud_logs_crn
41- scc_workload_protection_service_plan = var. scc_workload_protection_service_plan
42- enable_vpc_flow_logs = var. enable_vpc_flow_logs
43- app_config_plan = var. app_config_plan
44- app_config_service_endpoints = var. app_config_service_endpoints
45- }
46-
47- # #######################################################################################################################
48- # OCP VPC cluster
49- # #######################################################################################################################
50-
51- locals {
52- vpc_subnets = {
53- # The default behavior is to deploy the worker pool across all subnets within the VPC.
54- " default" = [
55- for subnet in module . monolith_add_ons . subnet_zone_list :
56- {
57- id = subnet.id
58- zone = subnet.zone
59- cidr_block = subnet.cidr
60- }
61- ]
62- }
63-
64- worker_pools = concat ([
65- {
66- subnet_prefix = " default"
67- pool_name = " default"
68- machine_type = var.default_worker_pool_machine_type
69- workers_per_zone = var.default_worker_pool_workers_per_zone
70- resource_group_id = module.resource_group.resource_group_id
71- operating_system = var.default_worker_pool_operating_system
72- labels = var.default_worker_pool_labels
73- minSize = var.default_pool_minimum_number_of_nodes
74- maxSize = var.default_pool_maximum_number_of_nodes
75- enableAutoscaling = var.enable_autoscaling_for_default_pool
76- boot_volume_encryption_kms_config = {
77- crk = module.monolith_add_ons.boot_volume_kms_key_id
78- kms_instance_id = module.monolith_add_ons.boot_volume_existing_kms_guid
79- kms_account_id = module.monolith_add_ons.boot_volume_kms_account_id
80- }
81- additional_security_group_ids = var.additional_security_group_ids
82- }
83- ], [for pool in var . additional_worker_pools : merge (pool, { resource_group_id = module.resource_group.resource_group_id
84- boot_volume_encryption_kms_config = {
85- crk = module.monolith_add_ons.boot_volume_kms_key_id
86- kms_instance_id = module.monolith_add_ons.boot_volume_existing_kms_guid
87- kms_account_id = module.monolith_add_ons.boot_volume_kms_account_id
88- } }) if length (pool. vpc_subnets ) > 0 ],
89- [for pool in var . additional_worker_pools : {
90- pool_name = pool.pool_name
91- machine_type = pool.machine_type
92- workers_per_zone = pool.workers_per_zone
93- resource_group_id = module.resource_group.resource_group_id
94- operating_system = pool.operating_system
95- labels = pool.labels
96- minSize = pool.minSize
97- secondary_storage = pool.secondary_storage
98- maxSize = pool.maxSize
99- enableAutoscaling = pool.enableAutoscaling
100- boot_volume_encryption_kms_config = {
101- crk = module.monolith_add_ons.boot_volume_kms_key_id
102- kms_instance_id = module.monolith_add_ons.boot_volume_existing_kms_guid
103- kms_account_id = module.monolith_add_ons.boot_volume_kms_account_id
104- }
105- additional_security_group_ids = pool.additional_security_group_ids
106- subnet_prefix = " default"
107- } if length (pool. vpc_subnets ) == 0 ])
108-
109- # Managing the ODF version accordingly, as it changes with each OCP version.
110- addons = lookup (var. addons , " openshift-data-foundation" , null ) != null ? lookup (var. addons [" openshift-data-foundation" ], " version" , null ) == null ? { for key , value in var . addons :
111- key => value != null ? {
112- version = lookup (value, " version" , null ) == null && key == " openshift-data-foundation" ? " ${ var . openshift_version } .0" : lookup (value, " version" , null )
113- parameters_json = lookup (value, " parameters_json" , null )
114- } : null } : var. addons : var. addons
115- }
116-
117- module "ocp_base" {
118- depends_on = [module . monolith_add_ons ]
119- source = " ../.."
120- resource_group_id = module. resource_group . resource_group_id
121- region = var. region
122- tags = var. cluster_resource_tags
123- cluster_name = " ${ var . prefix } -${ var . cluster_name } "
124- force_delete_storage = true
125- use_existing_cos = true
126- existing_cos_id = module. monolith_add_ons . cos_instance_id
127- vpc_id = module. monolith_add_ons . vpc_id
128- vpc_subnets = local. vpc_subnets
129- ocp_version = var. openshift_version
130- worker_pools = local. worker_pools
131- access_tags = var. access_tags
132- ocp_entitlement = var. ocp_entitlement
133- additional_lb_security_group_ids = var. additional_lb_security_group_ids
134- additional_vpe_security_group_ids = var. additional_vpe_security_group_ids
135- addons = local. addons
136- allow_default_worker_pool_replacement = var. allow_default_worker_pool_replacement
137- attach_ibm_managed_security_group = var. attach_ibm_managed_security_group
138- cluster_config_endpoint_type = var. cluster_config_endpoint_type
139- cbr_rules = var. ocp_cbr_rules
140- cluster_ready_when = var. cluster_ready_when
141- custom_security_group_ids = var. custom_security_group_ids
142- disable_outbound_traffic_protection = var. allow_outbound_traffic
143- disable_public_endpoint = ! var. allow_public_access_to_cluster_management
144- enable_ocp_console = var. enable_ocp_console
145- ignore_worker_pool_size_changes = var. ignore_worker_pool_size_changes
146- kms_config = module. monolith_add_ons . kms_config
147- manage_all_addons = var. manage_all_addons
148- number_of_lbs = var. number_of_lbs
149- pod_subnet_cidr = var. pod_subnet_cidr
150- service_subnet_cidr = var. service_subnet_cidr
151- verify_worker_network_readiness = var. verify_worker_network_readiness
152- worker_pools_taints = var. worker_pools_taints
153- enable_secrets_manager_integration = var. enable_secrets_manager_integration
154- existing_secrets_manager_instance_crn = module. monolith_add_ons . secrets_manager_crn
155- secrets_manager_secret_group_id = var. secrets_manager_secret_group_id != null ? var. secrets_manager_secret_group_id : (var. enable_secrets_manager_integration ? module. secret_group [0 ]. secret_group_id : null )
156- skip_ocp_secrets_manager_iam_auth_policy = var. skip_ocp_secrets_manager_iam_auth_policy
157- }
158-
159- resource "terraform_data" "delete_secrets" {
160- depends_on = [module . monolith_add_ons ]
161- count = var. enable_secrets_manager_integration && var. secrets_manager_secret_group_id == null ? 1 : 0
162- input = {
163- secret_id = module.secret_group[0 ].secret_group_id
164- provider_visibility = var.provider_visibility
165- secrets_manager_instance_id = module.monolith_add_ons.secrets_manager_guid
166- secrets_manager_region = module.monolith_add_ons.secrets_manager_region
167- secrets_manager_endpoint = var.secrets_manager_endpoint_type
168- }
169- # api key in triggers_replace to avoid it to be printed out in clear text in terraform_data output
170- triggers_replace = {
171- api_key = var.ibmcloud_api_key
172- }
173- provisioner "local-exec" {
174- when = destroy
175- command = " ${ path . module } /../../solutions/fully-configurable/scripts/delete_secrets.sh ${ self . input . secret_id } ${ self . input . provider_visibility } ${ self . input . secrets_manager_instance_id } ${ self . input . secrets_manager_region } ${ self . input . secrets_manager_endpoint } "
176- interpreter = [" /bin/bash" , " -c" ]
177-
178- environment = {
179- API_KEY = self.triggers_replace.api_key
180- }
181- }
182- }
183-
184- module "secret_group" {
185- count = var. enable_secrets_manager_integration && var. secrets_manager_secret_group_id == null ? 1 : 0
186- source = " terraform-ibm-modules/secrets-manager-secret-group/ibm"
187- version = " 1.3.15"
188- region = module. monolith_add_ons . secrets_manager_region
189- secrets_manager_guid = module. monolith_add_ons . secrets_manager_guid
190- secret_group_name = module. ocp_base . cluster_id
191- secret_group_description = " Secret group for storing ingress certificates for cluster ${ var . cluster_name } with id: ${ module . ocp_base . cluster_id } "
192- endpoint_type = var. secrets_manager_endpoint_type
42+ scc_workload_protection_service_plan = " graduated-tier"
43+ enable_vpc_flow_logs = true
44+ app_config_plan = " enterprise"
45+ app_config_service_endpoints = " public-and-private"
19346}
19447
19548data "ibm_container_cluster_config" "cluster_config" {
196- count = var . enable_kube_audit ? 1 : 0
197- cluster_name_id = module. ocp_base . cluster_id
49+ cluster_name_id = module . ocp_cluster_with_add_ons . cluster_id
50+ resource_group_id = module. resource_group . resource_group_id
19851 config_dir = " ${ path . module } /../../kubeconfig"
199- admin = true
200- resource_group_id = module. ocp_base . resource_group_id
201- endpoint_type = var. cluster_config_endpoint_type != " default" ? var. cluster_config_endpoint_type : null
202- }
203-
204- module "kube_audit" {
205- count = var. enable_kube_audit ? 1 : 0
206- ibmcloud_api_key = var. ibmcloud_api_key
207- source = " ../../modules/kube-audit"
208- cluster_id = module. ocp_base . cluster_id
209- cluster_resource_group_id = module. ocp_base . resource_group_id
210- region = module. ocp_base . region
211- use_private_endpoint = var. use_private_endpoint
212- cluster_config_endpoint_type = var. cluster_config_endpoint_type
213- audit_log_policy = var. audit_log_policy
214- audit_namespace = var. audit_namespace
215- audit_deployment_name = var. audit_deployment_name
216- audit_webhook_listener_image = var. audit_webhook_listener_image
217- audit_webhook_listener_image_tag_digest = var. audit_webhook_listener_image_tag_digest
21852}
21953
22054# #############################################################################
@@ -224,10 +58,10 @@ module "kube_audit" {
22458module "monitoring_agent" {
22559 source = " terraform-ibm-modules/monitoring-agent/ibm"
22660 version = " 1.19.0"
227- cluster_id = module. ocp_base . cluster_id
61+ cluster_id = module. ocp_cluster_with_add_ons . cluster_id
22862 cluster_resource_group_id = module. resource_group . resource_group_id
22963 is_vpc_cluster = true
230- access_key = module. monolith_add_ons . cloud_monitoring_access_key
64+ access_key = module. ocp_cluster_with_add_ons . cloud_monitoring_access_key
23165 instance_region = var. region
23266 metrics_filter = [{ exclude = " metricA.*" }, { include = " metricB.*" }]
23367 container_filter = [{ type = " exclude" , parameter = " kubernetes.namespace.name" , name = " kube-system" }]
@@ -263,7 +97,7 @@ module "trusted_profile" {
26397 cr_type = " ROKS_SA"
26498 unique_identifier = " logs-agent-link"
26599 links = [{
266- crn = module.ocp_base .cluster_crn
100+ crn = module.ocp_cluster_with_add_ons .cluster_crn
267101 namespace = local.logs_agent_namespace
268102 name = local.logs_agent_name
269103 }]
@@ -274,18 +108,18 @@ module "trusted_profile" {
274108module "logs_agent" {
275109 source = " terraform-ibm-modules/logs-agent/ibm"
276110 version = " 1.10.0"
277- cluster_id = module. ocp_base . cluster_id
111+ cluster_id = module. ocp_cluster_with_add_ons . cluster_id
278112 cluster_resource_group_id = module. resource_group . resource_group_id
279113 # Logs agent
280114 logs_agent_trusted_profile_id = module. trusted_profile . trusted_profile . id
281115 logs_agent_namespace = local. logs_agent_namespace
282116 logs_agent_name = local. logs_agent_name
283- cloud_logs_ingress_endpoint = module. monolith_add_ons . cloud_logs_ingress_private_endpoint
117+ cloud_logs_ingress_endpoint = module. ocp_cluster_with_add_ons . cloud_logs_ingress_private_endpoint
284118 cloud_logs_ingress_port = 3443
285119 # example of how to add additional metadata to the logs agent
286120 logs_agent_additional_metadata = [{
287121 key = " cluster_id"
288- value = module.ocp_base .cluster_id
122+ value = module.ocp_cluster_with_add_ons .cluster_id
289123 }]
290124 logs_agent_resources = {
291125 limits = {
0 commit comments