alicloud_cs_kubernetes_autoscaler

This resource will help you to manager cluster-autoscaler in Kubernetes Cluster.

Example Usage

cluster-autoscaler in Kubernetes Cluster.

variable "name" {
  default = "tf-example"
}
data "alicloud_zones" "default" {
  available_resource_creation = "VSwitch"
}
data "alicloud_images" "default" {
  name_regex  = "^ubuntu_18.*64"
  most_recent = true
  owners      = "system"
}
data "alicloud_instance_types" "default" {
  availability_zone    = data.alicloud_zones.default.zones.0.id
  cpu_core_count       = 4
  memory_size          = 8
  kubernetes_node_role = "Worker"
}

resource "alicloud_vpc" "default" {
  vpc_name   = var.name
  cidr_block = "10.4.0.0/16"
}
resource "alicloud_vswitch" "default" {
  vswitch_name = var.name
  cidr_block   = "10.4.0.0/24"
  vpc_id       = alicloud_vpc.default.id
  zone_id      = data.alicloud_zones.default.zones.0.id
}

resource "alicloud_cs_managed_kubernetes" "default" {
  name_prefix          = var.name
  cluster_spec         = "ack.pro.small"
  worker_vswitch_ids   = [alicloud_vswitch.default.id]
  new_nat_gateway      = true
  pod_cidr             = cidrsubnet("10.0.0.0/8", 8, 36)
  service_cidr         = cidrsubnet("172.16.0.0/16", 4, 7)
  slb_internet_enabled = true
}

resource "alicloud_security_group" "default" {
  name   = var.name
  vpc_id = alicloud_vpc.default.id
}

resource "alicloud_ess_scaling_group" "default" {
  scaling_group_name = var.name
  min_size           = 1
  max_size           = 1
  vswitch_ids        = [alicloud_vswitch.default.id]
  removal_policies   = ["OldestInstance", "NewestInstance"]
}

resource "alicloud_ess_scaling_configuration" "default" {
  scaling_group_id  = alicloud_ess_scaling_group.default.id
  image_id          = data.alicloud_images.default.images[0].id
  instance_type     = data.alicloud_instance_types.default.instance_types[0].id
  security_group_id = alicloud_security_group.default.id
  force_delete      = true
  active            = true
}

resource "alicloud_cs_kubernetes_autoscaler" "default" {
  cluster_id              = alicloud_cs_managed_kubernetes.default.id
  utilization             = "0.5"
  cool_down_duration      = "10m"
  defer_scale_in_duration = "10m"
  nodepools {
    id     = alicloud_ess_scaling_configuration.default.scaling_group_id
    labels = "a=b"
  }
}

Argument Reference

The following arguments are supported:

nodepools

The nodepools mapping supports the following:

Ignoring Changes to tags and user_data

Timeouts

The timeouts block allows you to specify timeouts for certain actions: