solution/solution-ack-managed-cluster/modules/ack-managed-cluster/main.tf (122 lines of code) (raw):

locals { ack_managed_cluster_name = var.ack_managed_cluster_name ack_node_pool_name = join("-", [local.ack_managed_cluster_name, "node-pool"]) ack_vpc_name = join("-", [local.ack_managed_cluster_name, "vpc"]) ack_nat_gateway_name = join("-", [local.ack_managed_cluster_name, "nat-gateway"]) ack_eip_name = join("-", [local.ack_managed_cluster_name, "eip"]) } resource "alicloud_vpc" "default" { vpc_name = local.ack_vpc_name cidr_block = var.vpc_cidr } resource "alicloud_vswitch" "node_vswitches" { count = length(var.node_vswitches) vswitch_name = join("-", [local.ack_managed_cluster_name, "node-vswitches", count.index]) vpc_id = alicloud_vpc.default.id cidr_block = var.node_vswitches[count.index].cidr zone_id = var.node_vswitches[count.index].zone_id } resource "alicloud_vswitch" "pod_vswitches" { count = length(var.pod_vswitches) vswitch_name = join("-", [local.ack_managed_cluster_name, "pod-vswitches", count.index]) vpc_id = alicloud_vpc.default.id cidr_block = var.pod_vswitches[count.index].cidr zone_id = var.pod_vswitches[count.index].zone_id } resource "alicloud_nat_gateway" "default" { vpc_id = alicloud_vpc.default.id nat_gateway_name = local.ack_nat_gateway_name nat_type = "Enhanced" vswitch_id = alicloud_vswitch.pod_vswitches[0].id internet_charge_type = "PayByLcu" payment_type = "PayAsYouGo" } resource "alicloud_eip_address" "default" { address_name = local.ack_eip_name bandwidth = var.eip_bandwidth isp = "BGP" internet_charge_type = "PayByDominantTraffic" payment_type = "PayAsYouGo" } resource "alicloud_eip_association" "default" { allocation_id = alicloud_eip_address.default.id instance_id = alicloud_nat_gateway.default.id instance_type = "Nat" } resource "alicloud_snat_entry" "node_snat_entry" { count = length(alicloud_vswitch.node_vswitches) snat_table_id = alicloud_nat_gateway.default.snat_table_ids source_vswitch_id = alicloud_vswitch.node_vswitches[count.index].id snat_ip = alicloud_eip_address.default.*.ip_address[floor(count.index / length(alicloud_vswitch.node_vswitches))] depends_on = [ alicloud_eip_association.default ] } resource "alicloud_snat_entry" "pod_snat_entry" { count = length(alicloud_vswitch.pod_vswitches) snat_table_id = alicloud_nat_gateway.default.snat_table_ids source_vswitch_id = alicloud_vswitch.pod_vswitches[count.index].id snat_ip = alicloud_eip_address.default.*.ip_address[floor(count.index / length(alicloud_vswitch.pod_vswitches))] depends_on = [ alicloud_eip_association.default ] } resource "alicloud_cs_managed_kubernetes" "default" { name = local.ack_managed_cluster_name version = var.ack_version timezone = var.timezone cluster_spec = "ack.pro.small" node_cidr_mask = 24 service_cidr = var.service_cidr load_balancer_spec = var.load_balancer_spec new_nat_gateway = false worker_vswitch_ids = alicloud_vswitch.node_vswitches.*.id pod_vswitch_ids = alicloud_vswitch.pod_vswitches.*.id is_enterprise_security_group = true deletion_protection = true install_cloud_monitor = true control_plane_log_components = ["apiserver", "kcm", "scheduler"] addons { name = "terway-eniip" } addons { name = "csi-plugin" } addons { name = "csi-provisioner" } addons { name = "logtail-ds" config = "{\"IngressDashboardEnabled\":\"true\"}" } addons { name = "alb-ingress-controller" } addons { name = "nginx-ingress-controller" disabled = "true" } addons { name = "arms-prometheus" } addons { name = "ack-node-problem-detector" config = "{\"sls_project_name\":\"\"}" } runtime = { name = "containerd" version = "1.5.10" } } resource "alicloud_cs_kubernetes_node_pool" "default" { name = local.ack_node_pool_name cluster_id = alicloud_cs_managed_kubernetes.default.id vswitch_ids = alicloud_vswitch.node_vswitches.*.id instance_types = var.worker_instance_types image_type = "AliyunLinux" instance_charge_type = "PostPaid" system_disk_category = var.disk_category system_disk_size = var.system_disk_size key_name = var.ack_key_pair_name desired_size = var.desired_size data_disks { category = var.disk_category size = var.data_disk_size } }