11# Copyright (c) 2023 Oracle Corporation and/or its affiliates.
22# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl
33
4+ locals {
5+ all_ports = - 1
6+
7+ # keep as reference
8+ # apiserver_port = 6443
9+
10+ # Protocols
11+ # See https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
12+ all_protocols = " all"
13+ icmp_protocol = 1
14+ tcp_protocol = 6
15+ udp_protocol = 17
16+
17+ anywhere = " 0.0.0.0/0"
18+ rule_type_nsg = " NETWORK_SECURITY_GROUP"
19+ rule_type_cidr = " CIDR_BLOCK"
20+ rule_type_service = " SERVICE_CIDR_BLOCK"
21+
22+ service_mesh_ports = [80 , 443 , 15012 , 15017 , 15021 , 15443 ]
23+
24+ # Todo verify if we need 15021 open for public
25+ public_lb_allowed_ports = [80 , 443 , 15021 ]
26+ }
27+
428module "admin" {
5- source = " oracle-terraform-modules/oke/oci"
6- version = " 4.5.9"
29+ # source = "oracle-terraform-modules/oke/oci"
30+ # version = "4.5.9"
31+
32+ source = " github.com/oracle-terraform-modules/terraform-oci-oke?ref=5.x&depth=1"
733
834 home_region = local. admin_region
935 region = local. admin_region
@@ -12,28 +38,21 @@ module "admin" {
1238
1339 # general oci parameters
1440 compartment_id = var. compartment_id
15- label_prefix = var. label_prefix
1641
1742 # ssh keys
1843 ssh_private_key_path = var. ssh_private_key_path
1944 ssh_public_key_path = var. ssh_public_key_path
2045
2146 # networking
22- create_drg = true
47+ # create_drg = true
2348 drg_display_name = lookup (var. admin_region , " admin_name" )
2449
25- # admin is always connected to everybody
26- remote_peering_connections = {
27- for k , v in var . managed_clusters : " rpc-to-${ k } " => {} if tobool (v)
28- }
29-
30-
3150 internet_gateway_route_rules = [
3251 for c in keys (var. managed_clusters ) :
3352 {
3453 destination = lookup (lookup (var. cidrs , c), " vcn" )
3554 destination_type = " CIDR_BLOCK"
36- network_entity_id = " drg "
55+ network_entity_id = module.admin_drg.drg_id
3756 description = " Routing to allow ssh to ${ title (c)} "
3857 } if tobool (lookup (var. managed_clusters , c))
3958 ]
@@ -43,7 +62,7 @@ module "admin" {
4362 {
4463 destination = lookup (lookup (var. cidrs , c), " vcn" )
4564 destination_type = " CIDR_BLOCK"
46- network_entity_id = " drg "
65+ network_entity_id = module.admin_drg.drg_id
4766 description = " Routing to allow connectivity to ${ title (c)} cluster"
4867 } if tobool (lookup (var. managed_clusters , c))
4968 ]
@@ -52,41 +71,68 @@ module "admin" {
5271 vcn_dns_label = lookup (var. admin_region , " admin_name" )
5372 vcn_name = lookup (var. admin_region , " admin_name" )
5473
55-
74+ # subnets
75+ subnets = {
76+ bastion = { newbits = 13 , dns_label = " bastion" }
77+ operator = { newbits = 13 , dns_label = " operator" }
78+ cp = { newbits = 13 , dns_label = " cp" }
79+ int_lb = { newbits = 11 , dns_label = " ilb" }
80+ pub_lb = { newbits = 11 , dns_label = " plb" }
81+ workers = { newbits = 2 , dns_label = " workers" }
82+ pods = { newbits = 2 , dns_label = " pods" }
83+ }
5684 # bastion host
57- create_bastion_host = true
58- upgrade_bastion = false
85+ create_bastion = true
86+ bastion_upgrade = false
87+ bastion_allowed_cidrs = [" 0.0.0.0/0" ]
88+
5989
6090 # operator host
61- create_operator = true
62- upgrade_operator = false
63- enable_operator_instance_principal = true
91+ create_operator = true
92+ operator_upgrade = false
93+ create_iam_operator_policy = " auto "
6494
6595 # oke cluster options
6696 cluster_name = lookup (var. admin_region , " admin_name" )
6797 cni_type = var. preferred_cni
68- control_plane_type = var. oke_control_plane
69- control_plane_allowed_cidrs = [" 0.0.0.0/0 " ]
98+ control_plane_is_public = var. oke_control_plane == " public "
99+ control_plane_allowed_cidrs = [local . anywhere ]
70100 kubernetes_version = var. kubernetes_version
71101 pods_cidr = lookup (var. admin_region , " pods" )
72102 services_cidr = lookup (var. admin_region , " services" )
73103
74104
75105 # node pools
76- kubeproxy_mode = " ipvs"
77- node_pools = var. nodepools
106+ kubeproxy_mode = " ipvs"
107+ worker_pool_mode = " node-pool"
108+
109+ worker_pools = var. nodepools
78110
79- cloudinit_nodepool_common = var. cloudinit_nodepool_common
111+ worker_cloud_init = var. worker_cloud_init
80112
81- node_pool_image_type = " oke"
113+ worker_image_type = " oke"
82114
83115 # oke load balancers
84- load_balancers = " both"
85- preferred_load_balancer = " public"
86- internal_lb_allowed_cidrs = [" 0.0.0.0/0" ]
87- internal_lb_allowed_ports = var. connectivity_mode == " mesh" ? [80 , 443 , 15012 , 15017 , 15021 , 15443 ] : [80 , 443 ]
88- public_lb_allowed_cidrs = [" 0.0.0.0/0" ]
89- public_lb_allowed_ports = [80 , 443 , 15021 ]
116+ load_balancers = " both"
117+ preferred_load_balancer = " public"
118+
119+ allow_rules_internal_lb = {
120+ for p in local . service_mesh_ports :
121+
122+ format (" Allow ingress to port %v" , p) => {
123+ protocol = local.tcp_protocol, port = p, source = " 10.0.0.0/16" , source_type = local.rule_type_cidr,
124+ }
125+ }
126+ # internal_lb_allowed_ports = var.connectivity_mode == "mesh" ? [80, 443, 15012, 15017, 15021, 15443] : [80, 443]
127+ # TODO: allow configuration of source cidr
128+ allow_rules_public_lb = {
129+
130+ for p in local . public_lb_allowed_ports :
131+
132+ format (" Allow ingress to port %v" , p) => {
133+ protocol = local.tcp_protocol, port = p, source = " 10.0.0.0/16" , source_type = local.rule_type_cidr,
134+ }
135+ }
90136
91137 user_id = var. user_id
92138
@@ -105,3 +151,37 @@ resource "oci_objectstorage_bucket" "thanos_admin" {
105151
106152 count = tobool (lookup (var. thanos , " enabled" , " false" )) ? 1 : 0
107153}
154+
155+
156+ module "admin_drg" {
157+ source = " oracle-terraform-modules/drg/oci"
158+ version = " 1.0.5"
159+
160+ # general oci parameters
161+ compartment_id = var. compartment_id
162+ label_prefix = var. label_prefix
163+
164+ # drg parameters
165+ drg_display_name = " ${ lookup (var. admin_region , " admin_name" )} -drg"
166+
167+ drg_vcn_attachments = {
168+ drg = {
169+ vcn_id = module.admin.vcn_id
170+ vcn_transit_routing_rt_id = null
171+ drg_route_table_id = null
172+ }
173+ }
174+
175+ # var.drg_id can either contain an existing DRG ID or be null.
176+ drg_id = null
177+
178+ # admin is always connected to everybody
179+ remote_peering_connections = {
180+ for k , v in var . managed_clusters : " rpc-to-${ k } " => {} if tobool (v)
181+ }
182+
183+ # count = var.create_drg || var.drg_id != null ? 1 : 0
184+ providers = {
185+ oci = oci.sydney
186+ }
187+ }
0 commit comments