openapi: 3.1.0 info: title: Kubernetes API description: |- Kubernetes is an open-source platform that enables developers to manage their containerized applications. Scaleway Kubernetes Kapsule and Kosmos are powerful tools to help you manage your containerized workloads and services. They both provide a managed environment for creating, configuring, and running clusters of pre-configured machines. The primary difference between Kapsule and Kosmos is that Kapsule clusters are composed solely of Scaleway Instances. In contrast, Kosmos is a managed Multi-Cloud Kubernetes Engine that allows you to connect Instances and virtual or dedicated servers from any cloud provider to a single managed Control-Plane. ## Concepts Refer to our [dedicated concepts page](https://www.scaleway.com/en/docs/kubernetes/concepts/) to find definitions of all Kubetnetes-related terminology. ## Quickstart 1. Configure your environment variables. Note: This is an optional step that seeks to simplify your usage of the Kapsule and Kosmos API. ```bash export SCW_ACCESS_KEY="" export SCW_SECRET_KEY="" export SCW_REGION="" export SCW_PROJECT_ID="" export SCW_PRIVATE_NETWORK_ID="" ``` 2. Edit the POST request payload you will use to create your Kubernetes cluster. Replace the parameters in the following example: ```json { "project_id": "$SCW_PROJECT_ID", "private_network_id": "$SCW_PRIVATE_NETWORK_ID", "type": "string", "name": "string", "description": "string", "tags": [ "string" ], "version": "string", "cni": "unknown_cni", "pools": [ { "name": "string", "node_type": "string", "size": "integer", "tags": [ "string" ], "zone": "string", "root_volume_type": "default_volume_type", "root_volume_size": "integer" } ] } ``` | Parameter | Description | | :----------------------- | :----------------------------------------------------------------- | | `project_id` | The ID of the Project you want to create your Kubernetes cluster in. To find your Project ID you can consult the [Scaleway console](https://console.scaleway.com/project/settings). | | `type` | The type of the cluster (possible values are `kapsule`, `multicloud`, `kapsule-dedicated-X`, `multicloud-dedicated-X` - `X` can be `4`, `8` or `16`). | | `name` | **REQUIRED** Name of the cluster. | | `description` | Description of the cluster. | | `tags` | Tags associated with the cluster. | | `version` | **REQUIRED** Kubernetes version of the cluster. | | `cni` | **REQUIRED** Container Network Interface (CNI) plugin that will run on the cluster. The default value is `unknown_cni`. (possible values are `cilium`, `cilium_native`, `calico` for `kapsule` and `kilo` for `multicloud`) | | `pools` | Pools to be created along with the cluster. | | `pools.name` | **REQUIRED** Name of the pool. | | `pools.node-type` | **REQUIRED** The node type of the Scaleway Instance wanted for the pool. | | `pools.size` | **REQUIRED** The number of nodes in the pool. | | `pools.tags` | Tags associated with the pool. See [managing tags](https://www.scaleway.com/en/docs/kubernetes/api-cli/managing-tags). | | `pools.zone` | Availability zone in which the pools will be deployed in. | | `pools.root_volume_type` | The root volume type. The default value is `default_volume_type`. | | `pools.root_volume_size` | The system volume disk size in bytes. | | `private_network_id` | Private network ID for internal cluster communication. | 3. Create a Kapsule cluster and node pool by running the following command. Make sure you include the payload you edited in the previous step. ```bash curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "Content-Type: application/json" \ "https://api.scaleway.com/k8s/v1/regions/$SCW_REGION/clusters" \ -d "{ \"project_id\": \"$SCW_PROJECT_ID\", \"private_network_id\": \"$SCW_PRIVATE_NETWORK_ID\", \"type\": \"kapsule\", \"name\": \"MyFirstKapsuleCluster\", \"description\": \"My first Kapsule Cluster\", \"tags\": [ \"kapsule\", \"kubernetes\" ], \"version\": \"1.31.2\", \"cni\": \"unknown_cni\", \"pools\": [ { \"name\": \"MyFirstKapsulePool\", \"node_type\": \"PLAY2-MICRO\", \"size\": \"2\", \"tags\": [ \"pool\" ], \"zone\": \"fr-par-1\", \"root_volume_type\": \"default_volume_type\", \"root_volume_size\": \"20000000000\" } ] }" ``` 4. List your Kapsule clusters. ```bash curl -X GET \ -H "Content-Type: application/json" \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ https://api.scaleway.com/k8s/v1/regions/$SCW_REGION/clusters ``` You will see detailed information about your clusters. 5. Download the kubeconfig file for your cluster. ```bash curl -X GET \ -H "Content-Type: application/json" \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ https://api.scaleway.com/k8s/v1/regions/$SCW_REGION/clusters/$SCW_CLUSTER_ID/kubeconfig ``` Add `?dl=1` at the end of the URL to directly get the `base64`-decoded kubeconfig. If not, the kubeconfig will be `base64`-encoded. 6. [Connect to your cluster](https://www.scaleway.com/en/docs/kubernetes/how-to/connect-cluster-kubectl) using kubectl. 7. Delete your cluster. ```bash curl -X GET -H "Content-Type: application/json" \ -H "X-Auth-Token: $SCW_SECRET_KEY" https://api.scaleway.com/k8s/v1/regions/$SCW_REGION/clusters/$SCW_CLUSTER_ID ``` To perform the following steps, you must first ensure that: - you have an account and are logged into the [Scaleway console](https://console.scaleway.com/organization) - you have created an [API key](https://www.scaleway.com/en/docs/iam/how-to/create-api-keys/) and that the API key has sufficient [IAM permissions](https://www.scaleway.com/en/docs/iam/reference-content/permission-sets/) to perform the actions described on this page. - you have [installed `curl`](https://curl.se/download.html) ## Technical information Kubernetes Kapsule provides features such as: - Persistent Volume Claims (PVC) are available through Scaleway Block Volumes. - Pool autoscaling and autohealing is available. - Kubernetes auto upgrades features is available. ### Regions Scaleway's infrastructure is spread across different [regions and Availability Zones](https://www.scaleway.com/en/docs/account/reference-content/products-availability/). Kubernetes Kapsule and Kosmos are available in the Paris, Amsterdam and Warsaw regions, which are represented by the following path parameters: - `fr-par` - `nl-ams` - `pl-waw` ### Versions Kubernetes Kosmos and Kapsule supports at least the latest version of the last 3 major Kubernetes releases. ## Technical limitations The following limitations should be taken into account when using the Kubernetes API: - The maximum number of pods per node is 110, as per the official k8s project recommendation (configurable). - The maximum number of volumes (PVC) per node is 15. - The maximum number of nodes per cluster varies from 150 to up to 500 (depending on the control plane tier). - [VPC Limitations](https://www.scaleway.com/en/docs/vpc/troubleshooting/vpc-limitations/) may restrict the number of nodes and loadbalancers. - Private network must not conflict with the 198.18.0.0/15 subnet. - Users cannot expose port 53 (DNS) to `hostPort` or in `hostNetwork` mode. - Security groups set to drop all inbound must have stateful group enabled. - Security groups must have ports `80` and `443` left open in outbound. - For Kosmos clusters **or** if ACLs are not activated (no network tab in console), ports `8132` and `6443` must also be opened. - Kilo CNI (kosmos nodes) also needs UDP port `51820` to be open. The following limitations should be acknowledged, while Scaleway is actively working on planned solutions to address them: - Dual Stack IPv4/IPv6 is not (yet) available. - Read Write Many / Read Only Many are not (yet) available. - Kubernetes control plane network access is managed by a Load Balancer located on `ZONE-1`. In the event of a global failure for this AZ, the Control Plane will be unreachable. The following limitations should be taken into account when setting custom settings for Pod & Service CIDRs and DNS IP: - Setting these may reduce the number of nodes and pods per nodes the cluster can handle. - The Pod and Service CIDRs must not conflict between them. - The Pod & Service CIDRs must not conflict with the Private Networks' subnets of the VPC attached to the cluster. - The Pod & Service CIDRs must not conflict with the routes set in the VPC attached to the cluster. - The Pod & Service CIDRs subnets must be part of the RFC 1918 and RFC 6598 (subnet included in: 10.0.0.0/8 or 172.16.0.0/12 or 192.168.0.0/16 or 100.64.0.0/10). - Mask /16 minimum for the Pod CIDR (not above 16) - Mask /24 minimum for the Service CIDR (not above 24) - The Service DNS IP must be included in the Service CIDR ## Going further For more help using Kubernetes Kapsule and Kosmos, check out the following resources: - Our [main documentation](https://www.scaleway.com/en/docs/kubernetes/) - The `#k8s` channel on our [Slack Community](https://www.scaleway.com/en/docs/tutorials/scaleway-slack-community/) - Our [support ticketing system](https://www.scaleway.com/en/docs/account/how-to/open-a-support-ticket/). version: v1 servers: - url: https://api.scaleway.com tags: - name: Clusters description: | A cluster is a fully managed Kubernetes cluster It is composed of different pools, each pool containing the same kind of nodes. - name: Pools description: | A pool is a set of identical nodes A pool has a name, a size (its desired number of nodes), node number limits (min, max), and a Scaleway Instance type. Changing those limits increases/decreases the size of a pool. As a result and depending on its load, the pool will grow or shrink within those limits when autoscaling is enabled. - name: Nodes description: | A node (short for worker node) is an abstraction for a Scaleway Instance A node is always part of a pool. Each of them has the Kubernetes software automatically installed and configured by Scaleway. - name: Versions description: | A version is a vanilla Kubernetes version like `x.y.z` It comprises a major version `x`, a minor version `y`, and a patch version `z`. At the minimum, Kapsule (Scaleway's managed Kubernetes), will support the last patch version for the past three minor releases. Also, each version has a different set of CNIs, eventually container runtimes, feature gates, and admission plugins available. See our [Version Support Policy](https://www.scaleway.com/en/docs/kubernetes/reference-content/version-support-policy/). - name: Cluster types description: | All cluster types available in a specified region A cluster type represents the different commercial types of clusters offered by Scaleway. - name: Access Control List description: | Network Access Control Lists (ACLs) allow you to manage inbound network traffic by setting up ACL rules components: schemas: google.protobuf.UInt32Value: type: integer format: uint32 nullable: true scaleway.k8s.v1.ACLRule: type: object properties: id: type: string description: ID of the ACL rule. (UUID format) example: 6170692e-7363-616c-6577-61792e636f6d ip: type: string description: IP subnet to allow. (IP network) example: 1.2.3.4/32 nullable: true x-one-of: allowed scaleway_ranges: type: boolean description: |- Allow access to cluster from all Scaleway ranges as defined in https://www.scaleway.com/en/docs/console/account/reference-content/scaleway-network-information/#ip-ranges-used-by-scaleway. Only one rule with this field set to true can be added. nullable: true x-one-of: allowed description: type: string description: Description of the ACL. x-properties-order: - id - ip - scaleway_ranges - description scaleway.k8s.v1.ACLRuleRequest: type: object properties: ip: type: string description: IP subnet to allow. (IP network) example: 1.2.3.4/32 nullable: true x-one-of: allowed scaleway_ranges: type: boolean description: |- Allow access to cluster from all Scaleway ranges as defined in https://www.scaleway.com/en/docs/console/account/reference-content/scaleway-network-information/#ip-ranges-used-by-scaleway. Only one rule with this field set to true can be added. nullable: true x-one-of: allowed description: type: string description: Description of the ACL. x-properties-order: - ip - scaleway_ranges - description scaleway.k8s.v1.AddClusterACLRulesResponse: type: object properties: rules: type: array description: ACLs that were added. items: $ref: '#/components/schemas/scaleway.k8s.v1.ACLRule' x-properties-order: - rules scaleway.k8s.v1.CNI: type: string enum: - unknown_cni - cilium - calico - weave - flannel - kilo - none - cilium_native x-enum-descriptions: values: cilium: Cilium CNI will be configured (https://github.com/cilium/cilium) calico: Calico CNI will be configured (https://github.com/projectcalico/calico) kilo: Kilo CNI will be configured (https://github.com/squat/kilo/). Note that this CNI is only available for Kosmos clusters none: Does not install any CNI. This feature is only available through a ticket and is not covered by support. cilium_native: Cilium CNI will be configured in native routing mode (https://docs.cilium.io/en/stable/network/concepts/routing/#native-routing) default: unknown_cni scaleway.k8s.v1.Cluster: type: object properties: id: type: string description: Cluster ID. type: type: string description: Cluster type. name: type: string description: Cluster name. status: type: string description: Status of the cluster. enum: - unknown - creating - ready - deleting - deleted - updating - locked - pool_required x-enum-descriptions: values: creating: Cluster is provisioning ready: Cluster is ready to use deleting: Cluster is waiting to be processed for deletion updating: Cluster is updating its own configuration, it can be a version upgrade too locked: Cluster is locked because an abuse has been detected or reported pool_required: Cluster has no associated pool and has been shutdown default: unknown version: type: string description: Kubernetes version of the cluster. region: type: string description: Region in which the cluster is deployed. organization_id: type: string description: ID of the Organization owning the cluster. project_id: type: string description: ID of the Project owning the cluster. tags: type: array description: Tags associated with the cluster. items: type: string cni: type: string description: Container Network Interface (CNI) plugin running in the cluster. enum: - unknown_cni - cilium - calico - weave - flannel - kilo - none - cilium_native x-enum-descriptions: values: cilium: Cilium CNI will be configured (https://github.com/cilium/cilium) calico: Calico CNI will be configured (https://github.com/projectcalico/calico) kilo: Kilo CNI will be configured (https://github.com/squat/kilo/). Note that this CNI is only available for Kosmos clusters none: Does not install any CNI. This feature is only available through a ticket and is not covered by support. cilium_native: Cilium CNI will be configured in native routing mode (https://docs.cilium.io/en/stable/network/concepts/routing/#native-routing) default: unknown_cni description: type: string description: Cluster description. cluster_url: type: string description: Kubernetes API server URL of the cluster. dns_wildcard: type: string description: Wildcard DNS resolving all the ready cluster nodes. created_at: type: string description: Date on which the cluster was created. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true updated_at: type: string description: Date on which the cluster was last updated. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true autoscaler_config: type: object description: Autoscaler configuration for the cluster, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md for details. properties: scale_down_disabled: type: boolean description: Forbid cluster autoscaler to scale down the cluster, defaults to false. scale_down_delay_after_add: type: string description: How long after scale up the scale down evaluation resumes. estimator: type: string description: Type of resource estimator to be used in scale up. enum: - unknown_estimator - binpacking default: unknown_estimator expander: type: string description: Kubernetes autoscaler strategy to fit pods into nodes, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders for details. enum: - unknown_expander - random - most_pods - least_waste - priority - price default: unknown_expander ignore_daemonsets_utilization: type: boolean description: Ignore DaemonSet pods when calculating resource utilization for scaling down, defaults to false. balance_similar_node_groups: type: boolean description: Detect similar node groups and balance the number of nodes between them, defaults to false. expendable_pods_priority_cutoff: type: integer description: Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they won't cause scale up. Pods with null priority (PodPriority disabled) are non expendable. format: int32 scale_down_unneeded_time: type: string description: How long a node should be unneeded before it is eligible for scale down, defaults to 10 minutes. scale_down_utilization_threshold: type: number description: Node utilization level, defined as a sum of requested resources divided by allocatable capacity, below which a node can be considered for scale down. format: float max_graceful_termination_sec: type: integer description: Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node, defaults to 600 (10 minutes). format: uint32 skip_nodes_with_local_storage: type: boolean description: Cluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath, defaults to true. log_level: type: integer description: Cluster autoscaler logging level expressed from 0 to 4 (4 being the more verbose), defaults to 2. see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-can-i-increase-the-information-that-the-ca-is-logging for details. format: int32 x-properties-order: - scale_down_disabled - scale_down_delay_after_add - estimator - expander - ignore_daemonsets_utilization - balance_similar_node_groups - expendable_pods_priority_cutoff - scale_down_unneeded_time - scale_down_utilization_threshold - max_graceful_termination_sec - skip_nodes_with_local_storage - log_level auto_upgrade: type: object description: Auto upgrade Kubernetes version of the cluster. properties: enabled: type: boolean description: Defines whether auto upgrade is enabled for the cluster. maintenance_window: type: object description: Maintenance window of the cluster auto upgrades. properties: start_hour: type: integer description: Start time of the two-hour maintenance window. format: uint32 day: type: string description: Day of the week for the maintenance window. enum: - any - monday - tuesday - wednesday - thursday - friday - saturday - sunday default: any x-properties-order: - start_hour - day x-properties-order: - enabled - maintenance_window upgrade_available: type: boolean description: Defines whether a new Kubernetes version is available. feature_gates: type: array description: List of enabled feature gates. items: type: string admission_plugins: type: array description: List of enabled admission plugins. items: type: string open_id_connect_config: type: object description: This configuration enables to update the OpenID Connect configuration of the Kubernetes API server. properties: issuer_url: type: string description: URL of the provider which allows the API server to discover public signing keys. Only URLs using the `https://` scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.com" or "https://login.salesforce.com". client_id: type: string description: A client ID that all tokens must be issued for. username_claim: type: string description: JWT claim to use as the user name. The default is `sub`, which is expected to be the end user's unique identifier. Admins can choose other claims, such as `email` or `name`, depending on their provider. However, claims other than `email` will be prefixed with the issuer URL to prevent name collision. username_prefix: type: string description: Prefix prepended to username claims to prevent name collision (such as `system:` users). For example, the value `oidc:` will create usernames like `oidc:jane.doe`. If this flag is not provided and `username_claim` is a value other than `email`, the prefix defaults to `( Issuer URL )#` where `( Issuer URL )` is the value of `issuer_url`. The value `-` can be used to disable all prefixing. groups_claim: type: array description: JWT claim to use as the user's group. items: type: string groups_prefix: type: string description: Prefix prepended to group claims to prevent name collision (such as `system:` groups). For example, the value `oidc:` will create group names like `oidc:engineering` and `oidc:infra`. required_claim: type: array description: Multiple key=value pairs describing a required claim in the ID token. If set, the claims are verified to be present in the ID token with a matching value. items: type: string x-properties-order: - issuer_url - client_id - username_claim - username_prefix - groups_claim - groups_prefix - required_claim apiserver_cert_sans: type: array description: Additional Subject Alternative Names for the Kubernetes API server certificate. items: type: string private_network_id: type: string description: Private network ID for internal cluster communication. nullable: true commitment_ends_at: type: string description: Date on which it will be possible to switch to a smaller offer. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true acl_available: type: boolean description: Defines whether ACL is available on the cluster. deprecated: true iam_nodes_group_id: type: string description: IAM group that nodes are members of (this field might be empty during early stage of cluster creation). pod_cidr: type: string description: Subnet used for the Pod CIDR. (IP network) example: 1.2.3.4/32 service_cidr: type: string description: Subnet used for the Service CIDR. (IP network) example: 1.2.3.4/32 service_dns_ip: type: string description: IP used for the DNS Service. (IPv4 address) example: 1.2.3.4 x-properties-order: - id - type - name - status - version - region - organization_id - project_id - tags - cni - description - cluster_url - dns_wildcard - created_at - updated_at - autoscaler_config - auto_upgrade - upgrade_available - feature_gates - admission_plugins - open_id_connect_config - apiserver_cert_sans - private_network_id - commitment_ends_at - acl_available - iam_nodes_group_id - pod_cidr - service_cidr - service_dns_ip scaleway.k8s.v1.ClusterType: type: object properties: name: type: string description: Cluster type name. availability: type: string description: Cluster type availability. enum: - available - scarce - shortage x-enum-descriptions: values: available: Type is available in quantity scarce: Limited availability shortage: Out of stock default: available max_nodes: type: integer description: Maximum number of nodes supported by the offer. format: uint32 commitment_delay: type: string description: Time period during which you can no longer switch to a lower offer. (in seconds) example: 2.5s nullable: true sla: type: number description: Value of the Service Level Agreement of the offer. format: float resiliency: type: string description: Resiliency offered by the offer. enum: - unknown_resiliency - standard - high_availability x-enum-descriptions: values: standard: The control plane is rescheduled on other machines in case of failure of a lower layer high_availability: The control plane has replicas to ensure service continuity in case of failure of a lower layer. default: unknown_resiliency memory: type: integer description: Max RAM allowed for the control plane. (in bytes) format: uint64 dedicated: type: boolean description: Returns information if this offer uses dedicated resources. audit_logs_supported: type: boolean description: True if the offer allows activation of the audit log functionality. Please note that audit logs are sent to Cockpit. x-properties-order: - name - availability - max_nodes - commitment_delay - sla - resiliency - memory - dedicated - audit_logs_supported scaleway.k8s.v1.CoreV1Taint: type: object properties: key: type: string description: The taint key to be applied to a node. value: type: string description: The taint value corresponding to the taint key. effect: type: string description: Effect defines the effects of Taint. enum: - NoSchedule - PreferNoSchedule - NoExecute x-enum-descriptions: values: NoSchedule: Do not allow new pods to schedule onto the node unless they tolerate the taint PreferNoSchedule: Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely NoExecute: Evict any already-running pods that do not tolerate the taint (Currently enforced by NodeController) default: NoSchedule x-properties-order: - key - value - effect 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: : 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:. * `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 * `sbs_5k` is a remote block storage which means your system is stored on a centralized and resilient cluster with 5k IOPS limits * `sbs_15k` is a faster remote block storage which means your system is stored on a centralized and resilient cluster with 15k IOPS limits * `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: : 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 scaleway.k8s.v1.ExternalNode: type: object properties: id: type: string name: type: string cluster_url: type: string pool_version: type: string cluster_ca: type: string kube_token: type: string kubelet_config: type: string external_ip: type: string containerd_version: type: string runc_version: type: string cni_plugins_version: type: string node_labels: type: object properties: : type: string additionalProperties: true node_taints: type: array items: $ref: '#/components/schemas/scaleway.k8s.v1.ExternalNode.CoreV1Taint' iam_token: type: string x-properties-order: - id - name - cluster_url - pool_version - cluster_ca - kube_token - kubelet_config - external_ip - containerd_version - runc_version - cni_plugins_version - node_labels - node_taints - iam_token scaleway.k8s.v1.ExternalNode.CoreV1Taint: type: object properties: key: type: string value: type: string effect: type: string x-properties-order: - key - value - effect scaleway.k8s.v1.ListClusterACLRulesResponse: type: object properties: total_count: type: integer description: Total number of ACLs that exist for the cluster. format: uint64 rules: type: array description: Paginated returned ACLs. items: $ref: '#/components/schemas/scaleway.k8s.v1.ACLRule' x-properties-order: - total_count - rules scaleway.k8s.v1.ListClusterAvailableTypesResponse: type: object properties: cluster_types: type: array description: Available cluster types for the cluster. items: $ref: '#/components/schemas/scaleway.k8s.v1.ClusterType' total_count: type: integer description: Total number of types. format: uint64 x-properties-order: - cluster_types - total_count scaleway.k8s.v1.ListClusterAvailableVersionsResponse: type: object properties: versions: type: array description: Available Kubernetes versions for the cluster. items: $ref: '#/components/schemas/scaleway.k8s.v1.Version' x-properties-order: - versions scaleway.k8s.v1.ListClusterTypesResponse: type: object properties: total_count: type: integer description: Total number of cluster-types. format: uint64 cluster_types: type: array description: Paginated returned cluster-types. items: $ref: '#/components/schemas/scaleway.k8s.v1.ClusterType' x-properties-order: - total_count - cluster_types scaleway.k8s.v1.ListClustersResponse: type: object properties: total_count: type: integer description: Total number of clusters. format: uint64 clusters: type: array description: Paginated returned clusters. items: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' x-properties-order: - total_count - clusters scaleway.k8s.v1.ListNodesResponse: type: object properties: total_count: type: integer description: Total number of nodes. format: uint64 nodes: type: array description: Paginated returned nodes. items: $ref: '#/components/schemas/scaleway.k8s.v1.Node' x-properties-order: - total_count - nodes scaleway.k8s.v1.ListPoolsResponse: type: object properties: total_count: type: integer description: Total number of pools that exists for the cluster. format: uint64 pools: type: array description: Paginated returned pools. items: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' x-properties-order: - total_count - pools scaleway.k8s.v1.ListVersionsResponse: type: object properties: versions: type: array description: Available Kubernetes versions. items: $ref: '#/components/schemas/scaleway.k8s.v1.Version' x-properties-order: - versions scaleway.k8s.v1.Node: type: object properties: id: type: string description: Node ID. pool_id: type: string description: Pool ID of the node. cluster_id: type: string description: Cluster ID of the node. provider_id: type: string description: Underlying instance ID. It is prefixed by instance type and location information (see https://pkg.go.dev/k8s.io/api/core/v1#NodeSpec.ProviderID). region: type: string description: Cluster region of the node. name: type: string description: Name of the node. status: type: string description: Status of the node. enum: - unknown - creating - not_ready - ready - deleting - deleted - locked - rebooting - creation_error - upgrading - starting - registering x-enum-descriptions: values: creating: Node is provisioning not_ready: Node is unable to connect to apiserver ready: Node is ready to execute workload (marked schedulable by k8s scheduler) deleting: Node is waiting to be processed for deletion locked: Node is locked because an abuse has been detected or reported rebooting: Node is rebooting default: unknown error_message: type: string description: Details of the error, if any occurred when managing the node. nullable: true created_at: type: string description: Date on which the node was created. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true updated_at: type: string description: Date on which the node was last updated. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true x-properties-order: - id - pool_id - cluster_id - provider_id - region - name - status - error_message - created_at - updated_at scaleway.k8s.v1.Pool: type: object properties: id: type: string description: Pool ID. cluster_id: type: string description: Cluster ID of the pool. created_at: type: string description: Date on which the pool was created. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true updated_at: type: string description: Date on which the pool was last updated. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true name: type: string description: Pool name. status: type: string description: Pool status. enum: - unknown - ready - deleting - deleted - scaling - warning - locked - upgrading x-enum-descriptions: values: ready: Pool has the right amount of nodes and is ready to process the workload deleting: Pool is waiting to be processed for deletion scaling: Pool is growing or shrinking warning: Pool has some issues, check nodes locked: Pool is locked because an abuse has been detected or reported upgrading: Pool is upgrading its Kubernetes version default: unknown version: type: string description: Pool version. 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. 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 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 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 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 kubelet_args: type: object description: Kubelet arguments to be used by this pool. Note that this feature is experimental. properties: : 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 format: uint32 max_surge: type: integer format: uint32 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:. * `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 * `sbs_5k` is a remote block storage which means your system is stored on a centralized and resilient cluster with 5k IOPS limits * `sbs_15k` is a faster remote block storage which means your system is stored on a centralized and resilient cluster with 15k IOPS limits * `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: : 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' region: type: string description: Cluster region of the pool. required: - node_type - size x-properties-order: - id - cluster_id - created_at - updated_at - name - status - version - node_type - autoscaling - size - min_size - max_size - container_runtime - autohealing - tags - placement_group_id - kubelet_args - upgrade_policy - zone - root_volume_type - root_volume_size - public_ip_disabled - security_group_id - labels - taints - startup_taints - region scaleway.k8s.v1.Runtime: type: string enum: - unknown_runtime - docker - containerd - crio x-enum-descriptions: values: containerd: Containerd Runtime will be configured (https://github.com/containerd/containerd) default: unknown_runtime scaleway.k8s.v1.SetClusterACLRulesResponse: type: object properties: rules: type: array description: ACLs that were set. items: $ref: '#/components/schemas/scaleway.k8s.v1.ACLRule' x-properties-order: - rules scaleway.k8s.v1.Version: type: object properties: name: type: string description: Name of the Kubernetes version. label: type: string description: Label of the Kubernetes version. region: type: string description: Region in which this version is available. available_cnis: type: array description: Supported Container Network Interface (CNI) plugins for this version. items: $ref: '#/components/schemas/scaleway.k8s.v1.CNI' available_container_runtimes: type: array description: Supported container runtimes for this version. items: $ref: '#/components/schemas/scaleway.k8s.v1.Runtime' available_feature_gates: type: array description: Supported feature gates for this version. items: type: string available_admission_plugins: type: array description: Supported admission plugins for this version. items: type: string available_kubelet_args: type: object description: Supported kubelet arguments for this version. properties: : type: string description: Supported kubelet arguments for this version. additionalProperties: true deprecated_at: type: string description: Date from which this version will no longer be available for provisioning. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true end_of_life_at: type: string description: Date from which any remaining clusters on this version will begin to be forcibly upgraded to the next minor version. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true released_at: type: string description: Date at which this version was made available by Kapsule product. (RFC 3339 format) format: date-time example: "2022-03-22T12:34:56.123456Z" nullable: true x-properties-order: - name - label - region - available_cnis - available_container_runtimes - available_feature_gates - available_admission_plugins - available_kubelet_args - deprecated_at - end_of_life_at - released_at scaleway.std.File: type: object properties: name: type: string content_type: type: string content: type: string x-properties-order: - name - content_type - content securitySchemes: scaleway: in: header name: X-Auth-Token type: apiKey paths: /k8s/v1/regions/{region}/acls/{acl_id}: delete: tags: - Access Control List operationId: DeleteACLRule summary: Delete an existing ACL parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: acl_id description: ID of the ACL rule to delete. required: true schema: type: string responses: "204": description: "" security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X DELETE \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/acls/{acl_id}" - lang: HTTPie source: |- http DELETE "https://api.scaleway.com/k8s/v1/regions/{region}/acls/{acl_id}" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/cluster-types: get: tags: - Cluster types operationId: ListClusterTypes summary: List cluster types description: List available cluster types and their technical details. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: query name: page description: Page number, from the paginated results, to return for cluster-types. schema: type: integer format: int32 - in: query name: page_size description: Maximum number of clusters per page. schema: type: integer format: uint32 responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListClusterTypesResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/cluster-types" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/cluster-types" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters: get: tags: - Clusters operationId: ListClusters summary: List Clusters description: List all existing Kubernetes clusters in a specific region. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: query name: organization_id description: Organization ID on which to filter the returned clusters. schema: type: string - in: query name: project_id description: Project ID on which to filter the returned clusters. schema: type: string - in: query name: order_by description: Sort order of returned clusters. schema: type: string enum: - created_at_asc - created_at_desc - updated_at_asc - updated_at_desc - name_asc - name_desc - status_asc - status_desc - version_asc - version_desc default: created_at_asc - in: query name: page description: Page number to return for clusters, from the paginated results. schema: type: integer format: int32 - in: query name: page_size description: Maximum number of clusters per page. schema: type: integer format: uint32 - in: query name: name description: Name to filter on, only clusters containing this substring in their name will be returned. schema: type: string - in: query name: status description: Status to filter on, only clusters with this status will be returned. schema: type: string enum: - unknown - creating - ready - deleting - deleted - updating - locked - pool_required x-enum-descriptions: values: creating: Cluster is provisioning ready: Cluster is ready to use deleting: Cluster is waiting to be processed for deletion updating: Cluster is updating its own configuration, it can be a version upgrade too locked: Cluster is locked because an abuse has been detected or reported pool_required: Cluster has no associated pool and has been shutdown default: unknown - in: query name: type description: Type to filter on, only clusters with this type will be returned. schema: type: string - in: query name: private_network_id description: Private Network ID to filter on, only clusters within this Private Network will be returned. schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListClustersResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters" \ X-Auth-Token:$SCW_SECRET_KEY post: tags: - Clusters operationId: CreateCluster summary: Create a new Cluster description: Create a new Kubernetes cluster in a Scaleway region. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' requestBody: required: true content: application/json: schema: type: object properties: organization_id: type: string description: Organization ID in which the cluster will be created. deprecated: true nullable: true x-one-of: ProjectIdentifier project_id: type: string description: Project ID in which the cluster will be created. nullable: true x-one-of: ProjectIdentifier type: type: string description: Type of the cluster. See [list available cluster types](#list-available-cluster-types-for-a-cluster) for a list of valid types. name: type: string description: Cluster name. description: type: string description: Cluster description. tags: type: array description: Tags associated with the cluster. items: type: string version: type: string description: Kubernetes version of the cluster. cni: type: string description: Container Network Interface (CNI) plugin running in the cluster. enum: - unknown_cni - cilium - calico - weave - flannel - kilo - none - cilium_native x-enum-descriptions: values: cilium: Cilium CNI will be configured (https://github.com/cilium/cilium) calico: Calico CNI will be configured (https://github.com/projectcalico/calico) kilo: Kilo CNI will be configured (https://github.com/squat/kilo/). Note that this CNI is only available for Kosmos clusters none: Does not install any CNI. This feature is only available through a ticket and is not covered by support. cilium_native: Cilium CNI will be configured in native routing mode (https://docs.cilium.io/en/stable/network/concepts/routing/#native-routing) default: unknown_cni pools: type: array description: Pools created along with the cluster. items: $ref: '#/components/schemas/scaleway.k8s.v1.CreateClusterRequest.PoolConfig' autoscaler_config: type: object description: Autoscaler configuration for the cluster. It allows you to set (to an extent) your preferred autoscaler configuration, which is an implementation of the cluster-autoscaler (https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler/). properties: scale_down_disabled: type: boolean description: Forbid cluster autoscaler to scale down the cluster, defaults to false. nullable: true scale_down_delay_after_add: type: string description: How long after scale up the scale down evaluation resumes. nullable: true estimator: type: string description: Type of resource estimator to be used in scale up. enum: - unknown_estimator - binpacking default: unknown_estimator expander: type: string description: Kubernetes autoscaler strategy to fit pods into nodes, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders for details. enum: - unknown_expander - random - most_pods - least_waste - priority - price default: unknown_expander ignore_daemonsets_utilization: type: boolean description: Ignore DaemonSet pods when calculating resource utilization for scaling down, defaults to false. nullable: true balance_similar_node_groups: type: boolean description: Detect similar node groups and balance the number of nodes between them, defaults to false. nullable: true expendable_pods_priority_cutoff: type: integer description: Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they won't cause scale up. Pods with null priority (PodPriority disabled) are non expendable. format: int32 nullable: true scale_down_unneeded_time: type: string description: How long a node should be unneeded before it is eligible for scale down, defaults to 10 minutes. nullable: true scale_down_utilization_threshold: type: object description: Node utilization level, defined as a sum of requested resources divided by allocatable capacity, below which a node can be considered for scale down. properties: value: type: number format: float x-properties-order: - value max_graceful_termination_sec: type: integer description: Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node, defaults to 600 (10 minutes). format: uint32 nullable: true skip_nodes_with_local_storage: type: boolean description: Cluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath, defaults to true. log_level: type: integer description: Cluster autoscaler logging level expressed from 0 to 4 (4 being the more verbose), defaults to 2. see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-can-i-increase-the-information-that-the-ca-is-logging for details. format: int32 x-properties-order: - scale_down_disabled - scale_down_delay_after_add - estimator - expander - ignore_daemonsets_utilization - balance_similar_node_groups - expendable_pods_priority_cutoff - scale_down_unneeded_time - scale_down_utilization_threshold - max_graceful_termination_sec - skip_nodes_with_local_storage - log_level auto_upgrade: type: object description: Auto upgrade configuration of the cluster. This configuration enables to set a specific 2-hour time window in which the cluster can be automatically updated to the latest patch version. properties: enable: type: boolean description: Defines whether auto upgrade is enabled for the cluster. maintenance_window: type: object description: Maintenance window of the cluster auto upgrades. properties: start_hour: type: integer description: Start time of the two-hour maintenance window. format: uint32 day: type: string description: Day of the week for the maintenance window. enum: - any - monday - tuesday - wednesday - thursday - friday - saturday - sunday default: any x-properties-order: - start_hour - day x-properties-order: - enable - maintenance_window feature_gates: type: array description: List of feature gates to enable. items: type: string admission_plugins: type: array description: List of admission plugins to enable. items: type: string open_id_connect_config: type: object description: OpenID Connect configuration of the cluster. This configuration enables to update the OpenID Connect configuration of the Kubernetes API server. properties: issuer_url: type: string description: URL of the provider which allows the API server to discover public signing keys. Only URLs using the `https://` scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.com" or "https://login.salesforce.com". client_id: type: string description: A client ID that all tokens must be issued for. username_claim: type: string description: JWT claim to use as the user name. The default is `sub`, which is expected to be the end user's unique identifier. Admins can choose other claims, such as `email` or `name`, depending on their provider. However, claims other than `email` will be prefixed with the issuer URL to prevent name collision. nullable: true username_prefix: type: string description: Prefix prepended to username claims to prevent name collision (such as `system:` users). For example, the value `oidc:` will create usernames like `oidc:jane.doe`. If this flag is not provided and `username_claim` is a value other than `email`, the prefix defaults to `( Issuer URL )#` where `( Issuer URL )` is the value of `issuer_url`. The value `-` can be used to disable all prefixing. nullable: true groups_claim: type: array description: JWT claim to use as the user's group. nullable: true items: type: string groups_prefix: type: string description: Prefix prepended to group claims to prevent name collision (such as `system:` groups). For example, the value `oidc:` will create group names like `oidc:engineering` and `oidc:infra`. nullable: true required_claim: type: array description: Multiple key=value pairs describing a required claim in the ID token. If set, the claims are verified to be present in the ID token with a matching value. nullable: true items: type: string x-properties-order: - issuer_url - client_id - username_claim - username_prefix - groups_claim - groups_prefix - required_claim apiserver_cert_sans: type: array description: Additional Subject Alternative Names for the Kubernetes API server certificate. items: type: string private_network_id: type: string description: Private network ID for internal cluster communication (cannot be changed later). nullable: true pod_cidr: type: string description: Subnet used for the Pod CIDR (cannot be changed later). (IP network) example: 1.2.3.4/32 service_cidr: type: string description: Subnet used for the Service CIDR (cannot be changed later). (IP network) example: 1.2.3.4/32 service_dns_ip: type: string description: IP used for the DNS Service (cannot be changes later). If unset, default to Service CIDR's network + 10. (IPv4 address) example: 1.2.3.4 required: - name - version - cni x-properties-order: - organization_id - project_id - type - name - description - tags - version - cni - pools - autoscaler_config - auto_upgrade - feature_gates - admission_plugins - open_id_connect_config - apiserver_cert_sans - private_network_id - pod_cidr - service_cidr - service_dns_ip security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "cni": "unknown_cni", "description": "string", "name": "string", "type": "string", "version": "string" }' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters" \ X-Auth-Token:$SCW_SECRET_KEY \ cni="unknown_cni" \ description="string" \ name="string" \ type="string" \ version="string" /k8s/v1/regions/{region}/clusters/{cluster_id}: get: tags: - Clusters operationId: GetCluster summary: Get a Cluster description: Retrieve information about a specific Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the requested cluster. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}" \ X-Auth-Token:$SCW_SECRET_KEY patch: tags: - Clusters operationId: UpdateCluster summary: Update a Cluster description: Update information on a specific Kubernetes cluster. You can update details such as its name, description, tags and configuration. To upgrade a cluster, you will need to use the dedicated endpoint. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster to update. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: New external name for the cluster. nullable: true description: type: string description: New description for the cluster. nullable: true tags: type: array description: New tags associated with the cluster. nullable: true items: type: string autoscaler_config: type: object description: New autoscaler config for the cluster. properties: scale_down_disabled: type: boolean description: Forbid cluster autoscaler to scale down the cluster, defaults to false. nullable: true scale_down_delay_after_add: type: string description: How long after scale up the scale down evaluation resumes. nullable: true estimator: type: string description: Type of resource estimator to be used in scale up. enum: - unknown_estimator - binpacking default: unknown_estimator expander: type: string description: Kubernetes autoscaler strategy to fit pods into nodes, see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders for details. enum: - unknown_expander - random - most_pods - least_waste - priority - price default: unknown_expander ignore_daemonsets_utilization: type: boolean description: Ignore DaemonSet pods when calculating resource utilization for scaling down, defaults to false. nullable: true balance_similar_node_groups: type: boolean description: Detect similar node groups and balance the number of nodes between them, defaults to false. nullable: true expendable_pods_priority_cutoff: type: integer description: Pods with priority below cutoff will be expendable. They can be killed without any consideration during scale down and they won't cause scale up. Pods with null priority (PodPriority disabled) are non expendable. format: int32 nullable: true scale_down_unneeded_time: type: string description: How long a node should be unneeded before it is eligible for scale down, defaults to 10 minutes. nullable: true scale_down_utilization_threshold: type: object description: Node utilization level, defined as a sum of requested resources divided by allocatable capacity, below which a node can be considered for scale down. properties: value: type: number format: float x-properties-order: - value max_graceful_termination_sec: type: integer description: Maximum number of seconds the cluster autoscaler waits for pod termination when trying to scale down a node, defaults to 600 (10 minutes). format: uint32 nullable: true skip_nodes_with_local_storage: type: boolean description: Cluster autoscaler will never delete nodes with pods with local storage, e.g. EmptyDir or HostPath, defaults to true. log_level: type: integer description: Cluster autoscaler logging level expressed from 0 to 4 (4 being the more verbose), defaults to 2. see https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-can-i-increase-the-information-that-the-ca-is-logging for details. format: int32 x-properties-order: - scale_down_disabled - scale_down_delay_after_add - estimator - expander - ignore_daemonsets_utilization - balance_similar_node_groups - expendable_pods_priority_cutoff - scale_down_unneeded_time - scale_down_utilization_threshold - max_graceful_termination_sec - skip_nodes_with_local_storage - log_level auto_upgrade: type: object description: New auto upgrade configuration for the cluster. Note that all fields needs to be set. properties: enable: type: boolean description: Defines whether auto upgrade is enabled for the cluster. nullable: true maintenance_window: type: object description: Maintenance window of the cluster auto upgrades. properties: start_hour: type: integer description: Start time of the two-hour maintenance window. format: uint32 day: type: string description: Day of the week for the maintenance window. enum: - any - monday - tuesday - wednesday - thursday - friday - saturday - sunday default: any x-properties-order: - start_hour - day x-properties-order: - enable - maintenance_window feature_gates: type: array description: List of feature gates to enable. nullable: true items: type: string admission_plugins: type: array description: List of admission plugins to enable. nullable: true items: type: string open_id_connect_config: type: object description: OpenID Connect configuration of the cluster. This configuration enables to update the OpenID Connect configuration of the Kubernetes API server. properties: issuer_url: type: string description: URL of the provider which allows the API server to discover public signing keys. Only URLs using the `https://` scheme are accepted. This is typically the provider's discovery URL without a path, for example "https://accounts.google.com" or "https://login.salesforce.com". nullable: true client_id: type: string description: A client ID that all tokens must be issued for. nullable: true username_claim: type: string description: JWT claim to use as the user name. The default is `sub`, which is expected to be the end user's unique identifier. Admins can choose other claims, such as `email` or `name`, depending on their provider. However, claims other than `email` will be prefixed with the issuer URL to prevent name collision. nullable: true username_prefix: type: string description: Prefix prepended to username claims to prevent name collision (such as `system:` users). For example, the value `oidc:` will create usernames like `oidc:jane.doe`. If this flag is not provided and `username_claim` is a value other than `email`, the prefix defaults to `( Issuer URL )#` where `( Issuer URL )` is the value of `issuer_url`. The value `-` can be used to disable all prefixing. nullable: true groups_claim: type: array description: JWT claim to use as the user's group. nullable: true items: type: string groups_prefix: type: string description: Prefix prepended to group claims to prevent name collision (such as `system:` groups). For example, the value `oidc:` will create group names like `oidc:engineering` and `oidc:infra`. nullable: true required_claim: type: array description: Multiple key=value pairs describing a required claim in the ID token. If set, the claims are verified to be present in the ID token with a matching value. nullable: true items: type: string x-properties-order: - issuer_url - client_id - username_claim - username_prefix - groups_claim - groups_prefix - required_claim apiserver_cert_sans: type: array description: Additional Subject Alternative Names for the Kubernetes API server certificate. nullable: true items: type: string x-properties-order: - name - description - tags - autoscaler_config - auto_upgrade - feature_gates - admission_plugins - open_id_connect_config - apiserver_cert_sans security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PATCH \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}" - lang: HTTPie source: |- http PATCH "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}" \ X-Auth-Token:$SCW_SECRET_KEY delete: tags: - Clusters operationId: DeleteCluster summary: Delete a Cluster description: Delete a specific Kubernetes cluster and all its associated pools and nodes, and possibly its associated Load Balancers or Block Volumes. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster to delete. required: true schema: type: string - in: query name: with_additional_resources description: Defines whether all volumes (including retain volume type), empty Private Networks and Load Balancers with a name starting with the cluster ID will also be deleted. required: true schema: type: boolean responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X DELETE \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}?with_additional_resources=false" - lang: HTTPie source: |- http DELETE "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}" \ X-Auth-Token:$SCW_SECRET_KEY \ with_additional_resources==false /k8s/v1/regions/{region}/clusters/{cluster_id}/acls: get: tags: - Access Control List operationId: ListClusterACLRules summary: List ACLs description: List ACLs for a specific cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster whose ACLs will be listed. required: true schema: type: string - in: query name: page description: Page number for the returned ACLs. schema: type: integer format: int32 - in: query name: page_size description: Maximum number of ACLs per page. schema: type: integer format: uint32 responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListClusterACLRulesResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" \ X-Auth-Token:$SCW_SECRET_KEY post: tags: - Access Control List operationId: AddClusterACLRules summary: Add new ACLs description: Add new ACL rules for a specific cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster whose ACLs will be added. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.AddClusterACLRulesResponse' requestBody: required: true content: application/json: schema: type: object properties: acls: type: array description: ACLs to add. items: $ref: '#/components/schemas/scaleway.k8s.v1.ACLRuleRequest' x-properties-order: - acls security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" \ X-Auth-Token:$SCW_SECRET_KEY put: tags: - Access Control List operationId: SetClusterACLRules summary: Set new ACLs description: Set new ACL rules for a specific cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster whose ACLs will be set. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.SetClusterACLRulesResponse' requestBody: required: true content: application/json: schema: type: object properties: acls: type: array description: ACLs to set. items: $ref: '#/components/schemas/scaleway.k8s.v1.ACLRuleRequest' x-properties-order: - acls security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PUT \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" - lang: HTTPie source: |- http PUT "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/acls" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/available-types: get: tags: - Clusters operationId: ListClusterAvailableTypes summary: List available cluster types for a cluster description: List the cluster types that a specific Kubernetes cluster is allowed to switch to. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID for which the available Kubernetes types will be listed. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListClusterAvailableTypesResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/available-types" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/available-types" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/available-versions: get: tags: - Clusters operationId: ListClusterAvailableVersions summary: List available versions for a Cluster description: List the versions that a specific Kubernetes cluster is allowed to upgrade to. Results will include every patch version greater than the current patch, as well as one minor version ahead of the current version. Any upgrade skipping a minor version will not work. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID for which the available Kubernetes versions will be listed. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListClusterAvailableVersionsResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/available-versions" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/available-versions" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/kubeconfig: get: tags: - Clusters operationId: GetClusterKubeConfig summary: Download the kubeconfig for a Cluster description: |- Download the Kubernetes cluster config file (also known as `kubeconfig`) for a specific cluster to use it with `kubectl`. Tip: add `?dl=1` at the end of the URL to directly retrieve the base64 decoded kubeconfig. If you choose not to, the kubeconfig will be base64 encoded. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID for which to download the kubeconfig. required: true schema: type: string - in: query name: redacted description: Hide the legacy token from the kubeconfig. schema: type: boolean responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.std.File' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/kubeconfig" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/kubeconfig" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/nodes: get: tags: - Nodes operationId: ListNodes summary: List Nodes in a Cluster description: List all the existing nodes for a specific Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID from which the nodes will be listed from. required: true schema: type: string - in: query name: pool_id description: Pool ID on which to filter the returned nodes. schema: type: string - in: query name: order_by description: Sort order of the returned nodes. schema: type: string enum: - created_at_asc - created_at_desc - updated_at_asc - updated_at_desc - name_asc - name_desc - status_asc - status_desc - version_asc - version_desc default: created_at_asc - in: query name: page description: Page number for the returned nodes. schema: type: integer format: int32 - in: query name: page_size description: Maximum number of nodes per page. schema: type: integer format: uint32 - in: query name: name description: Name to filter on, only nodes containing this substring in their name will be returned. schema: type: string - in: query name: status description: Status to filter on, only nodes with this status will be returned. schema: type: string enum: - unknown - creating - not_ready - ready - deleting - deleted - locked - rebooting - creation_error - upgrading - starting - registering x-enum-descriptions: values: creating: Node is provisioning not_ready: Node is unable to connect to apiserver ready: Node is ready to execute workload (marked schedulable by k8s scheduler) deleting: Node is waiting to be processed for deletion locked: Node is locked because an abuse has been detected or reported rebooting: Node is rebooting default: unknown responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListNodesResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/nodes" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/nodes" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/pools: get: tags: - Pools operationId: ListPools summary: List Pools in a Cluster description: List all the existing pools for a specific Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster whose pools will be listed. required: true schema: type: string - in: query name: order_by description: Sort order of returned pools. schema: type: string enum: - created_at_asc - created_at_desc - updated_at_asc - updated_at_desc - name_asc - name_desc - status_asc - status_desc - version_asc - version_desc default: created_at_asc - in: query name: page description: Page number for the returned pools. schema: type: integer format: int32 - in: query name: page_size description: Maximum number of pools per page. schema: type: integer format: uint32 - in: query name: name description: Name to filter on, only pools containing this substring in their name will be returned. schema: type: string - in: query name: status description: Status to filter on, only pools with this status will be returned. schema: type: string enum: - unknown - ready - deleting - deleted - scaling - warning - locked - upgrading x-enum-descriptions: values: ready: Pool has the right amount of nodes and is ready to process the workload deleting: Pool is waiting to be processed for deletion scaling: Pool is growing or shrinking warning: Pool has some issues, check nodes locked: Pool is locked because an abuse has been detected or reported upgrading: Pool is upgrading its Kubernetes version default: unknown responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListPoolsResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/pools" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/pools" \ X-Auth-Token:$SCW_SECRET_KEY post: tags: - Pools operationId: CreatePool summary: Create a new Pool in a Cluster description: Create a new pool in a specific Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID to which the pool will be attached. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: Pool name. 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: : 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: $ref: '#/components/schemas/google.protobuf.UInt32Value' max_surge: $ref: '#/components/schemas/google.protobuf.UInt32Value' 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:. * `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 * `sbs_5k` is a remote block storage which means your system is stored on a centralized and resilient cluster with 5k IOPS limits * `sbs_15k` is a faster remote block storage which means your system is stored on a centralized and resilient cluster with 15k IOPS limits * `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: : 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 security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "autohealing": false, "autoscaling": false, "kubelet_args": { "": "string" }, "labels": { "": "string" }, "name": "string", "node_type": "string", "public_ip_disabled": false, "size": 42, "zone": "string" }' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/pools" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/pools" \ X-Auth-Token:$SCW_SECRET_KEY \ autohealing:=false \ autoscaling:=false \ kubelet_args:='{ "": "string" }' \ labels:='{ "": "string" }' \ name="string" \ node_type="string" \ public_ip_disabled:=false \ size:=42 \ zone="string" /k8s/v1/regions/{region}/clusters/{cluster_id}/reset-admin-token: post: tags: - Clusters operationId: ResetClusterAdminToken summary: Reset the admin token of a Cluster description: Reset the admin token for a specific Kubernetes cluster. This will revoke the old admin token (which will not be usable afterwards) and create a new one. Note that you will need to download the kubeconfig again to keep interacting with the cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: Cluster ID on which the admin token will be renewed. required: true schema: type: string responses: "204": description: "" requestBody: required: true content: application/json: schema: type: object security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/reset-admin-token" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/reset-admin-token" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/clusters/{cluster_id}/set-type: post: tags: - Clusters operationId: SetClusterType summary: Change the Cluster type description: Change the type of a specific Kubernetes cluster. To see the possible values you can enter for the `type` field, [list available cluster types](#list-available-cluster-types-for-a-cluster). parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster to migrate from one type to another. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: Type of the cluster. Note that some migrations are not possible (please refer to product documentation). required: - type x-properties-order: - type security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{"type":"string"}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/set-type" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/set-type" \ X-Auth-Token:$SCW_SECRET_KEY \ type="string" /k8s/v1/regions/{region}/clusters/{cluster_id}/upgrade: post: tags: - Clusters operationId: UpgradeCluster summary: Upgrade a Cluster description: Upgrade a specific Kubernetes cluster and possibly its associated pools to a specific and supported Kubernetes version. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: cluster_id description: ID of the cluster to upgrade. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Cluster' requestBody: required: true content: application/json: schema: type: object properties: version: type: string description: New Kubernetes version of the cluster. Note that the version should either be a higher patch version of the same minor version or the direct minor version after the current one. upgrade_pools: type: boolean description: Defines whether pools will also be upgraded once the control plane is upgraded. required: - version x-properties-order: - version - upgrade_pools security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{"upgrade_pools":false,"version":"string"}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/upgrade" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/clusters/{cluster_id}/upgrade" \ X-Auth-Token:$SCW_SECRET_KEY \ upgrade_pools:=false \ version="string" /k8s/v1/regions/{region}/nodes/{node_id}: get: tags: - Nodes operationId: GetNode summary: Get a Node in a Cluster description: Retrieve details about a specific Kubernetes Node. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: node_id description: ID of the requested node. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Node' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}" \ X-Auth-Token:$SCW_SECRET_KEY delete: tags: - Nodes operationId: DeleteNode summary: Delete a Node in a Cluster description: Delete a specific Node. The node will first be drained and pods will be rescheduled onto another node. Note that when there is not enough space to reschedule all the pods (such as in a one-node cluster, or with specific constraints), disruption of your applications may occur. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: node_id description: ID of the node to replace. required: true schema: type: string - in: query name: skip_drain description: 'Skip draining node from its workload (Note: this parameter is currently inactive).' required: true schema: type: boolean responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Node' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X DELETE \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}?skip_drain=false" - lang: HTTPie source: |- http DELETE "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}" \ X-Auth-Token:$SCW_SECRET_KEY \ skip_drain==false /k8s/v1/regions/{region}/nodes/{node_id}/reboot: post: tags: - Nodes operationId: RebootNode summary: Reboot a Node in a Cluster description: Reboot a specific Node. The node will first be drained and pods will be rescheduled onto another node. Note that when there is not enough space to reschedule all the pods (such as in a one-node cluster, or with specific constraints), disruption of your applications may occur. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: node_id description: ID of the node to reboot. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Node' requestBody: required: true content: application/json: schema: type: object security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}/reboot" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/nodes/{node_id}/reboot" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/pools/{pool_id}: get: tags: - Pools operationId: GetPool summary: Get a Pool in a Cluster description: Retrieve details about a specific pool in a Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the requested pool. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" \ X-Auth-Token:$SCW_SECRET_KEY patch: tags: - Pools operationId: UpdatePool summary: Update a Pool in a Cluster description: Update the attributes of a specific pool, such as its desired size, autoscaling settings, and tags. To upgrade a pool, you will need to use the dedicated endpoint. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the pool to update. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: autoscaling: type: boolean description: New value for the pool autoscaling enablement. nullable: true size: type: integer description: New desired pool size. format: uint32 nullable: true min_size: type: integer description: New minimum size for the pool. format: uint32 nullable: true max_size: type: integer description: New maximum size for the pool. format: uint32 nullable: true autohealing: type: boolean description: New value for the pool autohealing enablement. nullable: true tags: type: array description: New tags associated with the pool. nullable: true items: type: string kubelet_args: type: object description: New Kubelet arguments to be used by this pool. Note that this feature is experimental. properties: : type: string nullable: true upgrade_policy: type: object description: New upgrade policy for the pool. properties: max_unavailable: $ref: '#/components/schemas/google.protobuf.UInt32Value' max_surge: $ref: '#/components/schemas/google.protobuf.UInt32Value' x-properties-order: - max_unavailable - max_surge security_group_id: type: string description: Security group ID in which all the nodes of the pool will be moved. x-properties-order: - autoscaling - size - min_size - max_size - autohealing - tags - kubelet_args - upgrade_policy - security_group_id security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PATCH \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" - lang: HTTPie source: |- http PATCH "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" \ X-Auth-Token:$SCW_SECRET_KEY delete: tags: - Pools operationId: DeletePool summary: Delete a Pool in a Cluster description: Delete a specific pool from a cluster. Note that all the pool's nodes will also be deleted. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the pool to delete. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X DELETE \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" - lang: HTTPie source: |- http DELETE "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/pools/{pool_id}/external-nodes: post: tags: - Nodes operationId: CreateExternalNode summary: Create a Kosmos node description: Retrieve metadata for a Kosmos node. This method is not intended to be called by end users but rather programmatically by the kapsule-node-agent. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ExternalNode' requestBody: required: true content: application/json: schema: type: object security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/external-nodes" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/external-nodes" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/pools/{pool_id}/set-labels: put: tags: - Pools operationId: SetPoolLabels summary: Set a list of labels for a specific pool description: Apply a list of taints to all nodes of the pool (only apply to labels which was set through scaleway api). parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: labels: type: object properties: : type: string additionalProperties: true x-properties-order: - labels security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PUT \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{"labels":{"":"string"}}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-labels" - lang: HTTPie source: |- http PUT "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-labels" \ X-Auth-Token:$SCW_SECRET_KEY \ labels:='{"":"string"}' /k8s/v1/regions/{region}/pools/{pool_id}/set-startup-taints: put: tags: - Pools operationId: SetPoolStartupTaints summary: Set a list of startup taints for a specific pool description: Apply a list of taints to new nodes of the pool which would not be reconciled by scaleway. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the pool to update. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: startup_taints: type: array description: List of startup taints to set. items: $ref: '#/components/schemas/scaleway.k8s.v1.CoreV1Taint' x-properties-order: - startup_taints security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PUT \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-startup-taints" - lang: HTTPie source: |- http PUT "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-startup-taints" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/pools/{pool_id}/set-taints: put: tags: - Pools operationId: SetPoolTaints summary: Set a list of taints for a specific pool description: Apply a list of taints to all nodes of the pool which will be periodically reconciled by scaleway. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the pool to update. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: taints: type: array description: List of taints to set. items: $ref: '#/components/schemas/scaleway.k8s.v1.CoreV1Taint' x-properties-order: - taints security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X PUT \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-taints" - lang: HTTPie source: |- http PUT "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/set-taints" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/pools/{pool_id}/upgrade: post: tags: - Pools operationId: UpgradePool summary: Upgrade a Pool in a Cluster description: |- Upgrade the Kubernetes version of a specific pool. Note that it only works if the targeted version matches the cluster's version. This will drain and replace the nodes in that pool. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: pool_id description: ID of the pool to upgrade. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Pool' requestBody: required: true content: application/json: schema: type: object properties: version: type: string description: New Kubernetes version for the pool. required: - version x-properties-order: - version security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X POST \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{"version":"string"}' \ "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/upgrade" - lang: HTTPie source: |- http POST "https://api.scaleway.com/k8s/v1/regions/{region}/pools/{pool_id}/upgrade" \ X-Auth-Token:$SCW_SECRET_KEY \ version="string" /k8s/v1/regions/{region}/versions: get: tags: - Versions operationId: ListVersions summary: List all available Versions description: List all available versions for the creation of a new Kubernetes cluster. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.ListVersionsResponse' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/versions" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/versions" \ X-Auth-Token:$SCW_SECRET_KEY /k8s/v1/regions/{region}/versions/{version_name}: get: tags: - Versions operationId: GetVersion summary: Get a Version description: Retrieve a specific Kubernetes version and its details. parameters: - in: path name: region description: The region you want to target required: true schema: type: string enum: - fr-par - nl-ams - pl-waw - in: path name: version_name description: Requested version name. required: true schema: type: string responses: "200": description: "" content: application/json: schema: $ref: '#/components/schemas/scaleway.k8s.v1.Version' security: - scaleway: [] x-codeSamples: - lang: cURL source: |- curl -X GET \ -H "X-Auth-Token: $SCW_SECRET_KEY" \ "https://api.scaleway.com/k8s/v1/regions/{region}/versions/{version_name}" - lang: HTTPie source: |- http GET "https://api.scaleway.com/k8s/v1/regions/{region}/versions/{version_name}" \ X-Auth-Token:$SCW_SECRET_KEY