in alicloud/resource_alicloud_cs_kubernetes_node_pool.go [23:872]
func resourceAliCloudAckNodepool() *schema.Resource {
return &schema.Resource{
Create: resourceAliCloudAckNodepoolCreate,
Read: resourceAliCloudAckNodepoolRead,
Update: resourceAliCloudAckNodepoolUpdate,
Delete: resourceAliCloudAckNodepoolDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(90 * time.Minute),
Update: schema.DefaultTimeout(60 * time.Minute),
Delete: schema.DefaultTimeout(60 * time.Minute),
},
Schema: map[string]*schema.Schema{
"auto_renew": {
Type: schema.TypeBool,
Optional: true,
DiffSuppressFunc: csNodepoolInstancePostPaidDiffSuppressFunc,
},
"auto_renew_period": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntInSlice([]int{0, 1, 2, 3, 6, 12}),
DiffSuppressFunc: csNodepoolInstancePostPaidDiffSuppressFunc,
},
"cis_enabled": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
Deprecated: "Field 'cis_enabled' has been deprecated from provider version 1.223.1. Whether enable worker node to support cis security reinforcement, its valid value `true` or `false`. Default to `false` and apply to AliyunLinux series. Use `security_hardening_os` instead.",
},
"cluster_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
},
"compensate_with_on_demand": {
Type: schema.TypeBool,
Optional: true,
},
"cpu_policy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"static", "none"}, false),
},
"data_disks": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"bursting_enabled": {
Type: schema.TypeBool,
Optional: true,
},
"category": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"cloud_efficiency", "cloud_ssd", "cloud_essd", "cloud_auto", "cloud", "cloud_essd_xc0", "cloud_essd_xc1", "all", "ephemeral_ssd", "local_disk", "cloud_essd_entry", "elastic_ephemeral_disk_premium", "elastic_ephemeral_disk_standard"}, false),
},
"kms_key_id": {
Type: schema.TypeString,
Optional: true,
},
"performance_level": {
Type: schema.TypeString,
Optional: true,
},
"encrypted": {
Type: schema.TypeString,
Optional: true,
},
"size": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(40, 32767),
},
"device": {
Type: schema.TypeString,
Optional: true,
},
"auto_snapshot_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"mount_target": {
Type: schema.TypeString,
Optional: true,
},
"auto_format": {
Type: schema.TypeString,
Optional: true,
},
"provisioned_iops": {
Type: schema.TypeInt,
Optional: true,
},
"name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"snapshot_id": {
Type: schema.TypeString,
Optional: true,
},
"file_system": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"deployment_set_id": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
},
"desired_size": {
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{"instances", "node_count"},
},
"force_delete": {
Type: schema.TypeBool,
Optional: true,
},
"image_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"image_type": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"AliyunLinux", "AliyunLinux3", "AliyunLinux3Arm64", "AliyunLinuxUEFI", "CentOS", "Windows", "WindowsCore", "AliyunLinux Qboot", "ContainerOS", "AliyunLinuxSecurity", "Ubuntu"}, false),
},
"install_cloud_monitor": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"instance_charge_type": {
Type: schema.TypeString,
Optional: true,
Default: PostPaid,
ValidateFunc: StringInSlice([]string{"PrePaid", "PostPaid"}, false),
},
"instance_types": {
Type: schema.TypeList,
Required: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"internet_charge_type": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"PayByBandwidth", "PayByTraffic"}, false),
},
"internet_max_bandwidth_out": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 100),
},
"key_name": {
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{"password", "kms_encrypted_password"},
},
"kubelet_configuration": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cpu_manager_policy": {
Type: schema.TypeString,
Optional: true,
},
"allowed_unsafe_sysctls": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"topology_manager_policy": {
Type: schema.TypeString,
Optional: true,
},
"pod_pids_limit": {
Type: schema.TypeString,
Optional: true,
},
"cpu_cfs_quota": {
Type: schema.TypeString,
Optional: true,
},
"serialize_image_pulls": {
Type: schema.TypeString,
Optional: true,
},
"kube_api_burst": {
Type: schema.TypeString,
Optional: true,
},
"cluster_dns": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"system_reserved": {
Type: schema.TypeMap,
Optional: true,
},
"feature_gates": {
Type: schema.TypeMap,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeBool},
},
"registry_burst": {
Type: schema.TypeString,
Optional: true,
},
"read_only_port": {
Type: schema.TypeString,
Optional: true,
},
"registry_pull_qps": {
Type: schema.TypeString,
Optional: true,
},
"reserved_memory": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"limits": {
Type: schema.TypeMap,
Optional: true,
},
"numa_node": {
Type: schema.TypeInt,
Optional: true,
},
},
},
},
"container_log_monitor_interval": {
Type: schema.TypeString,
Optional: true,
},
"container_log_max_workers": {
Type: schema.TypeString,
Optional: true,
},
"event_burst": {
Type: schema.TypeString,
Optional: true,
},
"image_gc_high_threshold_percent": {
Type: schema.TypeString,
Optional: true,
},
"eviction_soft_grace_period": {
Type: schema.TypeMap,
Optional: true,
},
"image_gc_low_threshold_percent": {
Type: schema.TypeString,
Optional: true,
},
"memory_manager_policy": {
Type: schema.TypeString,
Optional: true,
},
"cpu_cfs_quota_period": {
Type: schema.TypeString,
Optional: true,
},
"eviction_soft": {
Type: schema.TypeMap,
Optional: true,
},
"event_record_qps": {
Type: schema.TypeString,
Optional: true,
},
"kube_reserved": {
Type: schema.TypeMap,
Optional: true,
},
"max_pods": {
Type: schema.TypeString,
Optional: true,
},
"container_log_max_files": {
Type: schema.TypeString,
Optional: true,
},
"eviction_hard": {
Type: schema.TypeMap,
Optional: true,
},
"tracing": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"sampling_rate_per_million": {
Type: schema.TypeString,
Optional: true,
},
"endpoint": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"container_log_max_size": {
Type: schema.TypeString,
Optional: true,
},
"kube_api_qps": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"labels": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"value": {
Type: schema.TypeString,
Optional: true,
},
"key": {
Type: schema.TypeString,
Required: true,
},
},
},
},
"login_as_non_root": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
},
"management": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"auto_upgrade_policy": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"auto_upgrade_kubelet": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
},
},
},
"auto_repair": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"auto_upgrade": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"surge_percentage": {
Type: schema.TypeInt,
Optional: true,
Deprecated: "Field 'surge_percentage' has been deprecated from provider version 1.219.0. Proportion of additional nodes. You have to specify one of surge, surge_percentage.",
},
"surge": {
Type: schema.TypeInt,
Optional: true,
Deprecated: "Field 'surge' has been deprecated from provider version 1.219.0. Number of additional nodes. You have to specify one of surge, surge_percentage.",
},
"auto_vul_fix_policy": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"restart_node": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"vul_level": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
},
},
},
"enable": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"auto_repair_policy": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"restart_node": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
},
},
},
"auto_vul_fix": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"max_unavailable": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 1000),
},
},
},
},
"multi_az_policy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"PRIORITY", "COST_OPTIMIZED", "BALANCE"}, false),
},
"node_name_mode": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"node_pool_id": {
Type: schema.TypeString,
Computed: true,
},
"node_pool_name": {
Type: schema.TypeString,
Optional: true,
ExactlyOneOf: []string{"node_pool_name", "name"},
Computed: true,
},
"on_demand_base_capacity": {
Type: schema.TypeString,
Optional: true,
},
"on_demand_percentage_above_base_capacity": {
Type: schema.TypeString,
Optional: true,
},
"password": {
Type: schema.TypeString,
Optional: true,
Sensitive: true,
ConflictsWith: []string{"key_name", "kms_encrypted_password"},
},
"period": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntInSlice([]int{0, 1, 2, 3, 6, 12}),
DiffSuppressFunc: csNodepoolInstancePostPaidDiffSuppressFunc,
},
"period_unit": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"Month"}, false),
DiffSuppressFunc: csNodepoolInstancePostPaidDiffSuppressFunc,
},
"platform": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Deprecated: "Field 'platform' has been deprecated from provider version 1.145.0. Operating system release, using `image_type` instead.",
ValidateFunc: StringInSlice([]string{"CentOS", "AliyunLinux", "Windows", "WindowsCore"}, false),
},
"pre_user_data": {
Type: schema.TypeString,
Optional: true,
},
"private_pool_options": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"private_pool_options_match_criteria": {
Type: schema.TypeString,
Optional: true,
},
"private_pool_options_id": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"ram_role_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"rds_instances": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"resource_group_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"rolling_policy": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"max_parallelism": {
Type: schema.TypeInt,
Optional: true,
},
},
},
},
"runtime_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"runtime_version": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"scaling_config": {
Type: schema.TypeList,
Optional: true,
Computed: true,
ConflictsWith: []string{"instances", "node_count"},
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"min_size": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 1000),
},
"type": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"cpu", "gpu", "gpushare", "spot"}, false),
},
"eip_bandwidth": {
Type: schema.TypeInt,
Optional: true,
ConflictsWith: []string{"internet_charge_type"},
ValidateFunc: IntBetween(0, 500),
},
"is_bond_eip": {
Type: schema.TypeBool,
Optional: true,
ConflictsWith: []string{"internet_charge_type"},
},
"enable": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"max_size": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 1000),
},
"eip_internet_charge_type": {
Type: schema.TypeString,
Optional: true,
ConflictsWith: []string{"internet_charge_type"},
ValidateFunc: StringInSlice([]string{"PayByBandwidth", "PayByTraffic"}, false),
},
},
},
},
"scaling_group_id": {
Type: schema.TypeString,
Computed: true,
},
"scaling_policy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"release", "recycle"}, false),
DiffSuppressFunc: csNodepoolScalingPolicyDiffSuppressFunc,
},
"security_group_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
Deprecated: "Field 'security_group_id' has been deprecated from provider version 1.145.0. The security group ID of the node pool. This field has been replaced by `security_group_ids`, please use the `security_group_ids` field instead.",
},
"security_group_ids": {
Type: schema.TypeList,
Optional: true,
Computed: true,
ForceNew: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"security_hardening_os": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
},
"soc_enabled": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
},
"spot_instance_pools": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 10),
},
"spot_instance_remedy": {
Type: schema.TypeBool,
Optional: true,
},
"spot_price_limit": {
Type: schema.TypeList,
Optional: true,
DiffSuppressFunc: csNodepoolSpotInstanceSettingDiffSuppressFunc,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"price_limit": {
Type: schema.TypeString,
Optional: true,
},
"instance_type": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"spot_strategy": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"system_disk_bursting_enabled": {
Type: schema.TypeBool,
Optional: true,
},
"system_disk_categories": {
Type: schema.TypeList,
Optional: true,
Computed: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"system_disk_category": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ValidateFunc: StringInSlice([]string{"cloud_efficiency", "cloud_ssd", "cloud_essd", "cloud_auto", "cloud_essd_entry", "cloud"}, false),
},
"system_disk_encrypt_algorithm": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: StringInSlice([]string{"aes-256"}, false),
},
"system_disk_encrypted": {
Type: schema.TypeBool,
Optional: true,
},
"system_disk_kms_key": {
Type: schema.TypeString,
Optional: true,
},
"system_disk_performance_level": {
Type: schema.TypeString,
Optional: true,
DiffSuppressFunc: csNodepoolDiskPerformanceLevelDiffSuppressFunc,
},
"system_disk_provisioned_iops": {
Type: schema.TypeInt,
Optional: true,
},
"system_disk_size": {
Type: schema.TypeInt,
Optional: true,
},
"system_disk_snapshot_policy_id": {
Type: schema.TypeString,
Optional: true,
},
"tags": tagsSchema(),
"taints": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"value": {
Type: schema.TypeString,
Optional: true,
},
"effect": {
Type: schema.TypeString,
Optional: true,
},
"key": {
Type: schema.TypeString,
Required: true,
},
},
},
},
"tee_config": {
Type: schema.TypeList,
Optional: true,
Computed: true,
ForceNew: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"tee_enable": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
},
},
},
},
"unschedulable": {
Type: schema.TypeBool,
Optional: true,
},
"update_nodes": {
Type: schema.TypeBool,
Optional: true,
},
"user_data": {
Type: schema.TypeString,
Optional: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
_, base64DecodeError := base64.StdEncoding.DecodeString(old)
if base64DecodeError == nil {
return new == old
}
return new == base64.StdEncoding.EncodeToString([]byte(old))
},
},
"vswitch_ids": {
Type: schema.TypeList,
Required: true,
Elem: &schema.Schema{Type: schema.TypeString},
},
"name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Deprecated: "Field 'name' has been deprecated since provider version 1.219.0. New field 'node_pool_name' instead.",
},
"kms_encrypted_password": {
Type: schema.TypeString,
Optional: true,
Sensitive: true,
},
"instances": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
},
MaxItems: 100,
ConflictsWith: []string{"node_count", "scaling_config", "desired_size"},
},
"keep_instance_name": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"format_disk": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"node_count": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
ConflictsWith: []string{"instances", "desired_size"},
Deprecated: "Field 'node_count' has been deprecated from provider version 1.158.0. New field 'desired_size' instead.",
},
"rollout_policy": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"max_unavailable": {
Type: schema.TypeInt,
Optional: true,
},
},
},
Removed: "Field 'rollout_policy' has been removed from provider version 1.184.0. Please use new field 'rolling_policy' instead it to ensure the config takes effect",
},
"vpc_id": {
Type: schema.TypeString,
Computed: true,
Removed: "Field 'vpc_id' has been removed from provider version 1.218.0.",
},
"kms_encryption_context": {
Type: schema.TypeMap,
Optional: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
return d.Get("kms_encrypted_password").(string) == ""
},
Elem: schema.TypeString,
},
},
}
}