# # Controller node resources # resource "openstack_networking_port_v2" "kubecport" { name = "${var.controller_name}${count.index+1}-${replace(var.dns_suffix,".","-")}-port" # We create as many ports as there are instances created count = var.controller_instance_count network_id = data.openstack_networking_network_v2.public.id # A list of security group ID security_group_ids = [ data.openstack_networking_secgroup_v2.sshfromjumphosts.id, data.openstack_networking_secgroup_v2.allegress.id, resource.openstack_networking_secgroup_v2.microk8s.id, resource.openstack_networking_secgroup_v2.https.id ] admin_state_up = "true" } resource "openstack_blockstorage_volume_v3" "kubecvolumeboot" { count = var.controller_instance_count # size of cluster name = "${var.controller_name}${count.index+1}-${replace(var.dns_suffix,".","-")}-vol" description = "OS volume for kubernetes control node ${count.index + 1}" size = 100 image_id = data.openstack_images_image_v2.debian12image.id enable_online_resize = true # Allow us to resize volume while attached. } resource "openstack_compute_instance_v2" "controller-nodes" { count = var.controller_instance_count name = "${var.controller_name}${count.index+1}.${var.dns_suffix}" flavor_name = "${var.controller_instance_type}" key_pair = "${var.keyname}" security_groups = [ data.openstack_networking_secgroup_v2.sshfromjumphosts.name, data.openstack_networking_secgroup_v2.allegress.name, resource.openstack_networking_secgroup_v2.microk8s.name, resource.openstack_networking_secgroup_v2.https.name ] block_device { uuid = resource.openstack_blockstorage_volume_v3.kubecvolumeboot[count.index].id source_type = "volume" destination_type = "volume" boot_index = 0 } scheduler_hints { group = openstack_compute_servergroup_v2.controllers.id } network { port = resource.openstack_networking_port_v2.kubecport[count.index].id } } # # Worker node resources # resource "openstack_networking_port_v2" "kubewport" { name = "${var.worker_name}${count.index+1}-${replace(var.dns_suffix,".","-")}-port" # We create as many ports as there are instances created count = var.worker_instance_count network_id = data.openstack_networking_network_v2.public.id # A list of security group ID security_group_ids = [ data.openstack_networking_secgroup_v2.sshfromjumphosts.id, data.openstack_networking_secgroup_v2.allegress.id, resource.openstack_networking_secgroup_v2.microk8s.id ] admin_state_up = "true" } resource "openstack_blockstorage_volume_v3" "kubewvolumeboot" { count = var.worker_instance_count # size of cluster name = "${var.worker_name}${count.index+1}-${replace(var.dns_suffix,".","-")}-vol" description = "OS volume for kubernetes worker node ${count.index + 1}" size = 100 image_id = data.openstack_images_image_v2.debian12image.id enable_online_resize = true # Allow us to resize volume while attached. } resource "openstack_blockstorage_volume_v3" "kubewvolumerook" { count = var.worker_instance_count # size of cluster name = "${var.worker_name}${count.index+1}-${replace(var.dns_suffix,".","-")}-rook-vol" description = "Rook storage volume for kubernetes worker node ${count.index + 1}" size = 100 enable_online_resize = true # Allow us to resize volume while attached. } resource "openstack_compute_instance_v2" "worker-nodes" { count = var.worker_instance_count name = "${var.worker_name}${count.index+1}.${var.dns_suffix}" flavor_name = "${var.worker_instance_type}" key_pair = "${var.keyname}" security_groups = [ data.openstack_networking_secgroup_v2.sshfromjumphosts.name, data.openstack_networking_secgroup_v2.allegress.name, resource.openstack_networking_secgroup_v2.microk8s.name ] block_device { uuid = resource.openstack_blockstorage_volume_v3.kubewvolumeboot[count.index].id source_type = "volume" destination_type = "volume" boot_index = 0 } block_device { uuid = resource.openstack_blockstorage_volume_v3.kubewvolumerook[count.index].id source_type = "volume" destination_type = "volume" boot_index = 1 } scheduler_hints { group = openstack_compute_servergroup_v2.workers.id } network { port = resource.openstack_networking_port_v2.kubewport[count.index].id } }