{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/scaleway.k8s.v1.CreateClusterRequest.PoolConfig",
  "title": "scaleway.k8s.v1.CreateClusterRequest.PoolConfig",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the pool."
    },
    "node_type": {
      "type": "string",
      "description": "Node type is the type of Scaleway Instance wanted for the pool. Nodes with insufficient memory are not eligible (DEV1-S, PLAY2-PICO, STARDUST). 'external' is a special node type used to provision instances from other cloud providers in a Kosmos Cluster."
    },
    "placement_group_id": {
      "type": "string",
      "description": "Placement group ID in which all the nodes of the pool will be created, placement groups are limited to 20 instances.",
      "nullable": true
    },
    "autoscaling": {
      "type": "boolean",
      "description": "Defines whether the autoscaling feature is enabled for the pool."
    },
    "size": {
      "type": "integer",
      "description": "Size (number of nodes) of the pool.",
      "format": "uint32"
    },
    "min_size": {
      "type": "integer",
      "description": "Defines the minimum size of the pool. Note that this field is only used when autoscaling is enabled on the pool.",
      "format": "uint32",
      "nullable": true
    },
    "max_size": {
      "type": "integer",
      "description": "Defines the maximum size of the pool. Note that this field is only used when autoscaling is enabled on the pool.",
      "format": "uint32",
      "nullable": true
    },
    "container_runtime": {
      "type": "string",
      "description": "Customization of the container runtime is available for each pool.",
      "enum": [
        "unknown_runtime",
        "docker",
        "containerd",
        "crio"
      ],
      "x-enum-descriptions": {
        "values": {
          "containerd": "Containerd Runtime will be configured (https://github.com/containerd/containerd)"
        }
      },
      "default": "unknown_runtime"
    },
    "autohealing": {
      "type": "boolean",
      "description": "Defines whether the autohealing feature is enabled for the pool."
    },
    "tags": {
      "type": "array",
      "description": "Tags associated with the pool, see [managing tags](https://www.scaleway.com/en/docs/kubernetes/api-cli/managing-tags).",
      "items": {
        "type": "string"
      }
    },
    "kubelet_args": {
      "type": "object",
      "description": "Kubelet arguments to be used by this pool. Note that this feature is experimental.",
      "properties": {
        "<kubelet_argKey>": {
          "type": "string",
          "description": "Kubelet arguments to be used by this pool. Note that this feature is experimental."
        }
      },
      "additionalProperties": true
    },
    "upgrade_policy": {
      "type": "object",
      "description": "Pool upgrade policy.",
      "properties": {
        "max_unavailable": {
          "type": "integer",
          "description": "The maximum number of nodes that can be not ready at the same time.",
          "format": "uint32",
          "nullable": true
        },
        "max_surge": {
          "type": "integer",
          "description": "The maximum number of nodes to be created during the upgrade.",
          "format": "uint32",
          "nullable": true
        }
      },
      "x-properties-order": [
        "max_unavailable",
        "max_surge"
      ]
    },
    "zone": {
      "type": "string",
      "description": "Zone in which the pool's nodes will be spawned."
    },
    "root_volume_type": {
      "type": "string",
      "description": "Defines the system volume disk type. Several types of volume (`volume_type`) are provided:.\n* `l_ssd` is a local block storage which means your system is stored locally on your node's hypervisor. This type is not available for all node types\n* `sbs_5k` is a remote block storage which means your system is stored on a centralized and resilient cluster with 5k IOPS limits\n* `sbs_15k` is a faster remote block storage which means your system is stored on a centralized and resilient cluster with 15k IOPS limits\n* `b_ssd` is the legacy remote block storage which means your system is stored on a centralized and resilient cluster. Not available for new pools, use `sbs_5k` or `sbs_15k` instead.",
      "enum": [
        "default_volume_type",
        "l_ssd",
        "b_ssd",
        "sbs_5k",
        "sbs_15k"
      ],
      "x-enum-descriptions": {
        "values": {
          "l_ssd": "Local Block Storage: your system is stored locally on your node hypervisor",
          "b_ssd": "Remote Block Storage: your system is stored on a centralized and resilient cluster (deprecated: will use sbs_5k instead)",
          "sbs_5k": "Remote Block Storage: your system is stored on a centralized and resilient cluster with up to 5k IOPS",
          "sbs_15k": "Remote Block Storage: your system is stored on a centralized and resilient cluster with up to 15k IOPS"
        }
      },
      "default": "default_volume_type"
    },
    "root_volume_size": {
      "type": "integer",
      "description": "System volume disk size. (in bytes)",
      "format": "uint64",
      "nullable": true
    },
    "public_ip_disabled": {
      "type": "boolean",
      "description": "Defines if the public IP should be removed from Nodes. To use this feature, your Cluster must have an attached Private Network set up with a Public Gateway."
    },
    "security_group_id": {
      "type": "string",
      "description": "Security group ID in which all the nodes of the pool will be created. If unset, the pool will use default Kapsule security group in current zone."
    },
    "labels": {
      "type": "object",
      "description": "Kubernetes labels applied and reconciled on the nodes.",
      "properties": {
        "<labelKey>": {
          "type": "string",
          "description": "Kubernetes labels applied and reconciled on the nodes."
        }
      },
      "additionalProperties": true
    },
    "taints": {
      "type": "array",
      "description": "Kubernetes taints applied and reconciled on the nodes.",
      "items": {
        "$ref": "#/components/schemas/scaleway.k8s.v1.CoreV1Taint"
      }
    },
    "startup_taints": {
      "type": "array",
      "description": "Kubernetes taints applied at node creation but not reconciled afterwards.",
      "items": {
        "$ref": "#/components/schemas/scaleway.k8s.v1.CoreV1Taint"
      }
    }
  },
  "required": [
    "name",
    "node_type",
    "size"
  ],
  "x-properties-order": [
    "name",
    "node_type",
    "placement_group_id",
    "autoscaling",
    "size",
    "min_size",
    "max_size",
    "container_runtime",
    "autohealing",
    "tags",
    "kubelet_args",
    "upgrade_policy",
    "zone",
    "root_volume_type",
    "root_volume_size",
    "public_ip_disabled",
    "security_group_id",
    "labels",
    "taints",
    "startup_taints"
  ]
}