openapi: 3.1.0
info:
title: Managed Database for PostgreSQL and MySQL Access Control List Clusters API
description: "Managed Database for PostgreSQL and MySQL provides fully-managed relational Database Instances, with MySQL or PostgreSQL as database engines. The resource allows you to focus on development rather than administration or configuration. It comes with a high-availability mode, data replication, and automatic backups.\n\nCompared to traditional database management, which requires customers to provide their infrastructure and resources to manage their databases, Managed Database for PostgreSQL and MySQL Instance offers the user access to Database Instances without setting up the hardware or configuring the software. Scaleway handles the provisioning, manages the configuration, and provides useful features as high availability, automated backup, user management, and more.\n\n\n\n\n## Concepts\n\nRefer to our [dedicated concepts page](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/concepts/) to find definitions of the different terms referring to Managed Database for PostgreSQL and MySQL.\n\n\n\n\n## Quickstart\n\n1. Configure your environment variables.\n \n This is an optional step that seeks to simplify your usage of the APIs.\n \n\n ```bash\n export SCW_ACCESS_KEY=\"\"\n export SCW_SECRET_KEY=\"\"\n export SCW_REGION=\"\"\n ```\n2. Edit the POST request payload you will use to create your Database Instance. Replace the parameters in the following example:\n ```json\n '{\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"name\": \"myDB\",\n \"engine\": \"PostgreSQL-15\",\n \"tags\": [\"donnerstag\"],\n \"is_ha_cluster\": true,\n \"node_type\": \"db-pro2-xxs\",\n \"disable_backup\": false,\n \"user_name\": \"my_initial_user\",\n \"password\": \"thiZ_is_v0ry_s3cret\",\n \"volume_type\": \"sbs_5k\",\n \"volume_size\": \"30000000000\"\n }'\n ```\n\n | Parameter | Description |\n | :--------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `project_id` | The ID of the Project you want to create your Database Instance in. To find your Project ID you can **[list the projects](/api/account/project-api/#path-projects-list-all-projects-of-an-organization)** or consult the **[Scaleway console](https://console.scaleway.com/project/settings)**. |\n | `engine` | **REQUIRED** Version ID of the database engine. To check the list of available engines you can use the following endpoint: `https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/database-engines` |\n | `name` | Name of the Database Instance |\n | `node_type` | **REQUIRED** The node type. To check the list of available node types you can use the following endpoint: `https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/node-types` |\n | `is_ha_cluster` | **BOOLEAN** Defines whether High Availability is enabled for the Database Instance |\n | `disable_backup` | **BOOLEAN** Defines whether automated backups are disabled for the Database Instance |\n | `tags` | The list of tags `[\"tag1\", \"tag2\", ...]` that will be associated with the Database Instance. Tags can be appended to the query of the [List Database Instances](#path-database-instances-list-database-instances) call to show results for only the Database Instances using a specific tag. You can also combine tags to list Database Instances that possess all the appended tags. |\n | `user_name` | **REQUIRED** Identifier of the default user, which is created concurrently with the Database Instance |\n | `password` | **REQUIRED** Password for the default user |\n | `volume_type` | Type of volume where data is stored. You can specify either local volume (`lssd`) or block volume (`bssd`, `sbs_5k` or `sbs_15k`). The default value is `lssd` |\n | `volume_size` | Volume size when volume_type is `bssd`, `sbs_5k` or `sbs_15k`. The value should be expressed in bytes. For example 30GB is expressed as 30000000000 |\n3. Create a Database Instance by running the following command. Make sure you include the payload you edited in the previous step.\n ```bash\n curl -X POST \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"Content-Type: application/json\" \\\n https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/instances \\\n -d '{\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"name\": \"myDB\",\n \"engine\": \"PostgreSQL-15\",\n \"tags\": [\"donnerstag\"],\n \"is_ha_cluster\": true,\n \"node_type\": \"db-pro2-xxs\",\n \"disable_backup\": false,\n \"user_name\": \"my_initial_user\",\n \"password\": \"thiZ_is_v0ry_s3cret\",\n \"volume_type\": \"sbs_5k\",\n \"volume_size\": \"30000000000\"\n }'\n ```\n4. List your Database Instances.\n ```bash\n curl -X GET \\\n -H \"Content-Type: application/json\" \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" https://api.scaleway.com/rdb/v1/regions/$SCW_REGION/instances\n ```\n\n You should get a response like the following:\n\n \n This is a response example, the UUIDs and IP address displayed are not real.\n \n\n ```json\n {\n \"id\": \"f5122f66-fb50-4cef-aa02-487ef4fc1af0\",\n \"name\": \"myDB\",\n \"organization_id\": \"895693aa-3915-4896-8761-c2923b008be7\",\n \"project_id\": \"d8e65f2b-cce9-40b7-80fc-6a2902db6826\",\n \"status\": \"ready\",\n \"engine\": \"PostgreSQL-15\",\n \"endpoint\": {\n \"ip\": \"198.51.100.0\",\n \"port\": 22245,\n \"name\": null\n },\n \"tags\": [\n \"donnerstag\"\n ],\n \"settings\": [],\n \"backup_schedule\": {\n \"frequency\": 24,\n \"retention\": 7,\n \"disabled\": true\n },\n \"is_ha_cluster\": true,\n \"read_replicas\": [],\n \"node_type\": \"db-pro2-xxs\",\n \"volume\": {\n \"type\": \"sbs_5k\",\n \"size\": 30000000000\n }\n \"created_at\": \"2019-04-19T16:24:52.591417Z\",\n \"region\": \"fr-par\"\n }\n ```\n5. Retrieve your Database Instance IP and port from the response.\n \n In the example above, the IP and port are `198.51.100.0` and `22245`, respectively.\n \n6. Connect to your Database Instance with the database client of the engine you selected.\n For MySQL, run the following command:\n ```bash\n mysql -h --port -p -u \n ```\n\n For PostgreSQL, run:\n ```bash\n psql -h -p -U -d rdb\n ```\n\n For the recurring example, the command would look like:\n\n ```bash\n psql -h 198.51.100.0 -p 22245 -U my_initial_user -d rdb\n ```\n7. Enter the database password that you defined upon creation.\n\nYou are now connected to your Managed Database.\n\n\n\nTo perform the following steps, you must first ensure that:\n - you have an account and are logged into the [Scaleway console](https://console.scaleway.com/organization)\n - 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.\n - you have [installed `curl`](https://curl.se/download.html)\n\n\n\n## Technical Information\n\n### Regions\n\nScaleway's infrastructure is spread across different [regions and Availability Zones](https://www.scaleway.com/en/docs/account/reference-content/products-availability/).\n\nManaged Database for PostgreSQL and MySQL is available in the Paris, Amsterdam and Warsaw regions, which are represented by the following path parameters:\n\n- `fr-par`\n- `nl-ams`\n- `pl-waw`\n\n### PostgreSQL specifications\n\n#### Versions\n\nScaleway Database for PostgreSQL supports PostgreSQL versions 11, 12, 13, 14 and 15.\n\n#### System\n\nDifferent modules are available for installation, including TimescaleDB and PostGIS. Refer to the [Managed Database for PostgreSQL and MySQL FAQ page](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/faq/#which-postgresql-extensions-are-available) for an extensive list of PostgreSQL extensions.\n\n#### Database Management\n\nYou can create logical databases through the Scaleway console, the Scaleway APIs or SQL.\n\n- databases created using the Scaleway console or the API are owned by an internal system user. These are called \"managed databases\".\n- databases created using SQL will be owned by the creator. These are called \"unmanaged databases\".\n\n### MySQL specifications\n\n#### Versions\n\nScaleway Database for MySQL supports MySQL 8.\n\n#### System\n\n- only the [InnoDB engine](https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html) is supported\n- the [Global Transaction Identifier (GTID)](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-concepts.html) is enabled.\n- [`mysql_native_password`](https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html) (default) and [`caching_sha2_password`](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html) authentication are supported.\n\n#### User Management\n\n- users with an `admin` role have access to all logical databases and can create new ones.\n- users created via the API are authenticated using the default authentication plugin, which can be changed in the settings.\n\n## Technical Limitations\n\n### PostgreSQL\n\n#### User Management\n\n- users with an `admin` role have `CREATEROLE` and `CREATEDB` privileges.\n- users do NOT have `SUPERUSER` nor `REPLICATION` privileges.\n- permission management through the Scaleway console or API is only possible for the \"managed databases\".\n\n#### Backup and restoration\n\nDatabases that have been backed up and then restored retain the user permission settings in use at the time of backup. If you delete users after backup and then restore your backup in the same database, or if you restore a backup to a different database with different or no users, the permissions configured for them continue to exist, but with no associated owner. This error will put a stop to the restoration process.\n\nTo avoid this issue, we recommend you re-create the users you deleted. In the occasion you restore the backup to a new database, you must create new users with the same names.\n\n## Going Further\n\nFor more information about Managed Database for PostgreSQL and MySQL, you can check out the following pages:\n\n* [Managed Database for PostgreSQL and MySQL Documentation](https://www.scaleway.com/en/docs/managed-databases/postgresql-and-mysql/)\n* [Managed Database for PostgreSQL and MySQL FAQ](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/faq/)\n* [Scaleway Slack Community](https://scaleway-community.slack.com/) join the #database channel\n* [Contact our support team](https://console.scaleway.com/support/tickets)\n\n### How to migrate a database\n\nIf you wish to migrate existing databases to a Managed Database for PostgreSQL or MySQL, you can refer to the [Migrating existing databases to a Database Instance](https://www.scaleway.com/en/docs/tutorials/migrate-databases-instance/) tutorial page.\n\n### Troubleshoooting\n\n#### Disk full status\n\nIf your Database Instance uses local storage, your local volume might eventually approach full capacity and shift to `disk_full` mode. This mode grants you enough space to either [upgrade your node type](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/how-to/upgrade-version/#how-to-change-the-node-type) or [clear out space in your volume](https://www.scaleway.com/en/docs/managed-databases-for-postgresql-and-mysql/troubleshooting/disk-full/)."
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.
'
paths:
/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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"https://api.scaleway.com/k8s/v1/regions/{region}/clusters\""
- lang: HTTPie
source: "http GET \"https://api.scaleway.com/k8s/v1/regions/{region}/clusters\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"cni\": \"unknown_cni\",\n \"description\": \"string\",\n \"name\": \"string\",\n \"type\": \"string\",\n \"version\": \"string\"\n }' \\\n \"https://api.scaleway.com/k8s/v1/regions/{region}/clusters\""
- lang: HTTPie
source: "http POST \"https://api.scaleway.com/k8s/v1/regions/{region}/clusters\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n cni=\"unknown_cni\" \\\n description=\"string\" \\\n name=\"string\" \\\n type=\"string\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"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}\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"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}\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"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}\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n with_additional_resources==false"
/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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"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\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"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\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n \"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\" \\\n X-Auth-Token:$SCW_SECRET_KEY"
/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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{}' \\\n \"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\" \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"type\":\"string\"}' \\\n \"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\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n 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 \\\n -H \"X-Auth-Token: $SCW_SECRET_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"upgrade_pools\":false,\"version\":\"string\"}' \\\n \"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\" \\\n X-Auth-Token:$SCW_SECRET_KEY \\\n upgrade_pools:=false \\\n version=\"string\""
components:
schemas:
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.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.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.std.File:
type: object
properties:
name:
type: string
content_type:
type: string
content:
type: string
x-properties-order:
- name
- content_type
- content
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.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.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.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.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.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
securitySchemes:
scaleway:
in: header
name: X-Auth-Token
type: apiKey