Kapsule APIv1beta2

Download OpenAPI

Introduction

Kubernetes Kapsule by Scaleway is a managed, production-ready environment for deploying, managing and scaling containerized applications. It installs and operates Kubernetes Clusters, allowing you to get up and running with them in no time.

"Kubernetes is a portable, extensible open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available." -- What is kubernetes

The product is currently available as a beta version. This means that:

  • changes may be introduced in product API,
  • product may be discontinued,
  • you agree to use the product at your own risk,
  • the product is free of charge.

During this phase, we will do our best to ensure the production-like quality of the service but we cannot guarantee its continuity.

Technical Limitations

  • Kapsule is only available in PAR1 datacenter
  • Clusters can't be isolated in a VPC (Virtual Private Cloud).
  • Persistant Volume Claims (PVC) are available
  • Pool autoscaling is available using the API.
  • During the beta phase you can only create 1 cluster.
  • During the beta phase the maximum number of nodes per cluster is 20.
  • During the beta phase all GP1 instances can be allocated in new and default pools.
  • The maximum of pod per node is 110.
  • Kubernetes Kapsule is currently in beta and no service continuity is guarantee
  • When replacing a node : the node is deleted and a new one is created in parallel.

This API allows you to:

  • create, update and delete a Kubernetes cluster
  • manage cluster resources using node pools

The Cluster Master directs the worker nodes, making scheduling decisions, responding to events, implementing changes, and monitoring the Cluster. Its components (kube-apiserver, kube-scheduler and kube-controller-manager) are managed by Scaleway to ensure the Master remains highly available. Consequently, you cannot set your own parameters on the Kubernetes api-server, controller-manager and scheduler. Scaleway takes care of your control plane: its health is continuously monitored and watched by a dedicated team. Its availability enables the Master to get upgraded or rebooted without any downtime, and the team can perform maintenance operations on your clusters in total transparency.

kube-apiserver

Component on the master that exposes the Kubernetes API. It is the front-end for the Kubernetes control plane. It is managed by Scaleway.

Component on the master that watches newly created pods that have no assigned node, and selects a node for them to run on. It is managed by Scaleway.

Component on the master that runs controllers of Kubernetes. It is managed by Scaleway.

Scaleway Load Balancers are used to route requests toward the multiple control-plane replicas. This enables high availability for your Cluster.

Consistent and highly-available key value store used as Kubernetes backing store for all cluster data.

The Cloud Controller Manager runs controllers that interact with Scaleway cloud, allowing to create load balancer objects and to retrieve information about your cluster (node public IP, node location, node commercial type...)

Deamon that reports nodes statuses to the orchestrator, allowing -for instance- healing actions when a node has been down for a certain period of time.

Cluster resources (i.e. nodes) are managed within pools. A pool has a name (optional), a size (its current number of nodes), and nodes number limits (min, max). Changing those limits increases/decreases the size of a pool. Thus, when autoscaling is enabled, the pool will grow or shrink inside those limits, depending on its cluster load. A "default pool" is automatically created with every Cluster and can't be deleted.

A Node (short for Worker Node) is an abstraction for a Scaleway instance. It is part of a pool and is instantiated by Scaleway, making Kubernetes software installed and configured automatically on it. Please note that Kubernetes nodes cannot be accessed with ssh.

Container Network Interface (https://github.com/containernetworking/cni) is a standard designed to ease configuration of container networking at their creation/deletion. Various projects have been released to address Kubernetes networking requirements and provide the networking features that cluster administrators require. Kubernetes Kapsule supports the following CNI plugins : flannel (https://github.com/coreos/flannel), calico (https://github.com/projectcalico/cni-plugin) & weave (https://www.weave.works/oss/net/). Flannel plugin is installed by default, but yo can customize your cluster picking the one that suits your need.

Below is a step by step guide explaining how to create a cluster, deploy an application on it, use the cluster wildcard DNS to request the application, extend a pool and then delete the cluster.

In order to use the Scaleway API you need to have curl installed. It is also a good idea to have jq, which will help you to read and parse JSON output. Make sure you have these two tools before you begin. Otherwise use your package manager to install them.

To call the Scaleway API, you will need an X-Auth-Token. If you don't have one yet, you can create one on credentials page of your Scaleway account.

Using this token, get your organization ID:

$ export TOKEN="<Secret key of your token>"
$ export REGION="<choose your location (nl-ams/fr-par)>"

$ curl -H "X-Auth-Token: $TOKEN" https://account.scaleway.com/organizations | jq '.organizations[] | "orga_id: " + .id + " orga_name: " + .name'

$ export ORGANIZATION_ID="<your organization ID>"

You can also find your organization ID in Scaleway web console.

Customize the name, description, tags and set your organization ID

$ curl -X POST "https://api.scaleway.com/k8s/v1beta2/regions/$REGION/clusters" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" \
-d "{
\"cni\": \"flannel\",
\"dashboard\": true,
\"default_pool_autoscaling\": true,
\"default_pool_commercial_type\": \"gp1_xs\",
\"default_pool_max_size\": 3,
\"default_pool_min_size\": 1,
\"default_pool_size\": 3,
\"description\": \"my first cluster\",
\"ingress\": \"nginx\",
\"name\": \"cluster1\",
\"organization_id\": \"${ORGANIZATION_ID}\",
\"tags\": [
\"tag1\",
\"tag2\"
],
\"version\": \"1.14.1\"
}"

{"region":"fr-par","id":"4a31ee90-71eb-4539-a647-7b1ad3bcde67","organization_id":"82833329-b242-4cf8-9193-8d1600aff0c1","created_at":"2019-04-30T12:37:51.006332102Z","updated_at":"2019-04-30T12:37:51.006332102Z","name":"cluster1","description":"my first cluster","cluster_ip":"","cluster_port":6443,"current_node_count":0,"status":"creating","sub_status":"no_details","version":"1.14.1","cni":"flannel","tags":["tag1","tag2"],"current_core_count":0,"current_mem_count":0}

Copy the id field of the response to use in the next steps. For the sake of simplicity we will save the ID to a variable, which we will use in the following examples:

$ export CLUSTER_ID="4a31ee90-71eb-4539-a647-7b1ad3bcde67"

Wait for the cluster to be in ready state:

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta2/regions/${REGION}/clusters/${CLUSTER_ID}" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" | jq -r '.status'
ready

In order to be able to manage you cluster retrieve your kubeconfig file:

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta2/regions/${REGION}/clusters/${CLUSTER_ID}/kubeconfig?dl=1" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" > /tmp/mycluster.kubeconfig

Use the previously downloaded kubeconfig file to manage your cluster. Wait for all the nodes to join the cluster (we allow you to connect to the control plane before all the nodes are ready and it can take some time to create it).

$ export KUBECONFIG=/tmp/mycluster.kubeconfig
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 104s v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 2m4s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 97s v1.14.1
$ kubectl cluster-info
Kubernetes master is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443
CoreDNS is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
kubernetes-dashboard is running at https://4a31ee90-71eb-4539-a647-7b1ad3bcde67.api.k8s.fr-par.scw.cloud:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

In this step we will show you how to deploy your first application on Kubernetes and how to leverage the free wildcard DNS automatically created by Scaleway with your new cluster.

Create the cafe application. This application is very simple and will show "coffee" if you query a coffee url, and "tea" if you query a tea url.

$ kubectl create -f https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/master/examples/complete-example/cafe.yaml
deployment.extensions/coffee created
service/coffee-svc created
deployment.extensions/tea created
service/tea-svc created

By a default a free wildcard dns is given to you at the cluster creation, you can use it to create your ingress objects. This wildcard point to all the public ips of you cluster. If you want something more robust you can choose to deploy a load balancer (but it in this case you have to manage the dns by yourself). The free wildcard looks like that *.<CLUSTER_UUID>.nodes.k8s.fr-par.scw.cloud

You can check the wildcard is working.

$ host coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.15.196.44
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.158.110.219
coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 212.47.243.47
$ host tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.15.196.44
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 51.158.110.219
tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud has address 212.47.243.47

Then create the ingress object matching tea or coffee url:

$ cat << EOF > /tmp/myingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cafe-ingress
spec:
rules:
- host: coffee.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
http:
paths:
- backend:
serviceName: coffee-svc
servicePort: 80
- host: tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
http:
paths:
- backend:
serviceName: tea-svc
servicePort: 80
EOF
$ kubectl create -f /tmp/myingress
ingress.extensions/cafe-ingress created

Just query both url using curl and check the application is working.

$ curl cafe.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
Server address: 100.64.2.3:80
Server name: coffee-bbd45c6-m6nck
Date: 30/Apr/2019:12:56:42 +0000
URI: /
Request ID: 7ad4396d26e472626fdf16b3b1a41d99
$ curl tea.4a31ee90-71eb-4539-a647-7b1ad3bcde67.nodes.k8s.fr-par.scw.cloud
Server address: 100.64.2.4:80
Server name: tea-5857f7786b-glxp8
Date: 30/Apr/2019:12:56:48 +0000
URI: /
Request ID: b1568ac01c0d0040f3ef9357fce4268c

Get the default pool id.

$ curl -Ss -X GET "https://api.scaleway.com/k8s/v1beta2/regions/$REGION/clusters/$CLUSTER_ID/pools" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" | jq -r '.pools[]|select(.name|contains("default"))|.id'
e95f9a3a-5b95-4490-8b5c-adcd14abedb0
$ export POOL_ID=e95f9a3a-5b95-4490-8b5c-adcd14abedb0

Extend the pool for 3 to 4

$ curl -Ss -X PATCH "https://api.scaleway.com/k8s/v1beta2/regions/$REGION/pools/$POOL_ID" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json" -d "{

\"autoscaling\": true,
\"size\": \"4\",
\"min_size\": \"1\",
\"max_size\": \"4\"
}"

{"region":"fr-par","id":"e95f9a3a-5b95-4490-8b5c-adcd14abedb0","cluster_id":"4a31ee90-71eb-4539-a647-7b1ad3bcde67","created_at":"2019-04-30T12:37:51.008981Z","updated_at":"2019-04-30T13:14:18.428172545Z","name":"default","current_node_count":3,"status":"ready","version":"1.14.1","commercial_type":"gp1_xs","autoscaling":true,"size":4,"min_size":1,"max_size":4,"current_core_count":12,"current_mem_count":25769803776}

Wait for the pool to be extended.

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 35m v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 35m v1.14.1
scw-cluster1-default-86c266b168604d1a83a182cf2 NotReady <none> 1s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 35m v1.14.1
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
scw-cluster1-default-5aa9167001624d5498033c647 Ready <none> 35m v1.14.1
scw-cluster1-default-60a2fd61a09e442ca2c5a905f Ready <none> 36m v1.14.1
scw-cluster1-default-86c266b168604d1a83a182cf2 Ready <none> 22s v1.14.1
scw-cluster1-default-d82d9a85b32c47f6ab489ea1c Ready <none> 35m v1.14.1
$ curl -Ss -X DELETE "https://api.scaleway.com/k8s/v1beta2/regions/$REGION/clusters/$CLUSTER_ID" -H "accept: application/json" -H "X-Auth-Token: $TOKEN" -H "Content-Type: application/json"

Kubernetes Cluster object

GET
/k8s/v1beta2/regions/{region}/clusters
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
Query Parameters

order_by
string
You can order the response by created_at asc/desc or name asc/desc. Possible values are created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc and version_desc. The default value is created_at_asc.

page
required number
Page number. The default value is 1.

page_size
number
Set the maximum list size. The default value is 20.

name
nullable string
Filter clusters per name.

organization_id
nullable string
Filter cluster by organization.
200 Response

total_count
number

clusters
array
id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"total_count": 42,
"clusters": [
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}
]
}

Create a new kubernetes cluster.

POST
/k8s/v1beta2/regions/{region}/clusters
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
Body

organization_id
required string
Organization owning the resource.

name
required string
Cluster name.

description
nullable string
Description.

tags
nullable array
List of keyword.

version
required string
Set the cluster version (you can get available versions by calling ListVersions).

cni
required string
Set the Container Network Interface. Possible values are flannel, calico and weave. The default value is flannel.

dashboard
boolean
Enable or disable Kubernetes dashboard preinstallation.

ingress
string
Preinstall an ingress controller into your cluster. Possible values are no_ingress, nginx and traefik. The default value is no_ingress.

default_pool_commercial_type
required string
Define the servers commercial type (i.e. GP1-S).

default_pool_autoscaling
boolean
Enable or disable pool autoscaling on default pool.

default_pool_autohealing
boolean
Enable or disable pool autohealing on default pool.

default_pool_size
required number
Target number of nodes in default pool.

default_pool_min_size
nullable number
Define a lower limit for default pool.

default_pool_max_size
nullable number
Define a upper limit for default pool.

default_pool_container_runtime
nullable string

autoscaler_config
object
scale_down_disable
nullable boolean

scale_down_delay_after_add
nullable string

estimator
nullable string

expander
nullable string

ignore_daemonsets_utilization
nullable boolean

balance_similar_node_groups
nullable boolean

expendable_pods_priority_cutoff
nullable number
Request Example
{
"organization_id": "string",
"name": "string",
"description": "string",
"tags": [
"string"
],
"version": "string",
"cni": "flannel",
"dashboard": "boolean",
"ingress": "no_ingress",
"default_pool_commercial_type": "string",
"default_pool_autoscaling": "boolean",
"default_pool_autohealing": "boolean",
"default_pool_size": 42,
"default_pool_min_size": 42,
"default_pool_max_size": 42,
"default_pool_container_runtime": "string",
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}
200 Response

id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}

Get the cluster details associated with the given id.

GET
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
200 Response

id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}

Update the cluster associated with the given id.

PATCH
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Cluster ID.
Body

description
nullable string
Description.

tags
nullable array
List of keyword.

autoscaler_config
object
scale_down_disable
nullable boolean

scale_down_delay_after_add
nullable string

estimator
nullable string

expander
nullable string

ignore_daemonsets_utilization
nullable boolean

balance_similar_node_groups
nullable boolean

expendable_pods_priority_cutoff
nullable number
Request Example
{
"description": "string",
"tags": [
"string"
],
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}
200 Response

id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}

Delete the cluster associated with the given id.

DELETE
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
200 Response

id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}
GET
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/kubeconfig
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
200 Response

name
string

content_type
string

content
string
Response Example
{
"name": "string",
"content_type": "string",
"content": "string"
}

Revoke and renew your cluster admin token, you will have to download kubeconfig again.

POST
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/reset-admin-token
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Body

Request Example
{}
200 Response

Response Example
{}

Upgrade the cluster associated with the given id.

POST
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/upgrade
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Body

version
string

upgrade_pools
boolean
Request Example
{
"version": "string",
"upgrade_pools": "boolean"
}
200 Response

id
string
Display the cluster unique ID.

region
string
Display the cluster region.

name
string
Display the cluster name.

description
string
Display the cluster description.

organization_id
string
Display the cluster organization.

tags
array
Display the cluster associated tags.

status
string
Possible values are creating, ready, deleting, deleted, updating, warning, error and locked. The default value is creating.

sub_status
string
Possible values are no_details, deploy_loadbalancer, deploy_etcd, deploy_controlplane, deploy_nodes, updating_etcd and updating_controlplane. The default value is no_details.

version
string
Display the cluster version.

cni
string
Display the cni model. Possible values are flannel, calico and weave. The default value is flannel.

cluster_ip
string
Display the cluster IP.

cluster_port
number
Display the cluster Port.

cluster_url
string
Display the cluster URL.

dns_wildcard
string
Display the dns wildcard associated with the cluster.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

autoscaler_config
object
scale_down_disable
boolean

scale_down_delay_after_add
string

estimator
string

expander
string

ignore_daemonsets_utilization
boolean

balance_similar_node_groups
boolean

expendable_pods_priority_cutoff
number
Response Example
{
"id": "string",
"region": "string",
"name": "string",
"description": "string",
"organization_id": "string",
"tags": [
"string"
],
"status": "creating",
"sub_status": "no_details",
"version": "string",
"cni": "flannel",
"cluster_ip": "string",
"cluster_port": 42,
"cluster_url": "string",
"dns_wildcard": "string",
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"autoscaler_config": {
"scale_down_disable": "boolean",
"scale_down_delay_after_add": "string",
"estimator": "string",
"expander": "string",
"ignore_daemonsets_utilization": "boolean",
"balance_similar_node_groups": "boolean",
"expendable_pods_priority_cutoff": 42
}
}

Pool groups object

GET
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/nodes
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Cluster unique ID.
Query Parameters

pool_id
nullable string
Filter nodes by pool id.

order_by
string
You can order the response by created_at asc/desc or name asc/desc. Possible values are created_at_asc and created_at_desc. The default value is created_at_asc.

page
required number
Page number. The default value is 1.

page_size
number
Set the maximum list size. The default value is 20.

name
nullable string
Filter nodes by name.
200 Response

total_count
number

nodes
array
id
string
Display node unique ID.

pool_id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string

name
string
Display node name.

public_ip_v4
string
Display the servers public IPv4 address.

public_ip_v6
string
Display the servers public IPv6 address.

npd_status
map
Display kubernetes node conditions.
<npd_statuKey>
string

status
string
Possible values are creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is creating.

created_at
string

updated_at
string
Response Example
{
"total_count": 42,
"nodes": [
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "string",
"public_ip_v6": "string",
"npd_status": {
"<npd_statuKey>": "string"
},
"status": "creating",
"created_at": "string",
"updated_at": "string"
}
]
}
GET
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/pools
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Display the cluster unique ID.
Query Parameters

order_by
string
You can order the response by created_at asc/desc or name asc/desc. Possible values are created_at_asc, created_at_desc, updated_at_asc, updated_at_desc, name_asc, name_desc, status_asc, status_desc, version_asc and version_desc. The default value is created_at_asc.

page
required number
Page number. The default value is 1.

page_size
number
Set the maximum list size. The default value is 20.

name
nullable string
Filter pools per name.
200 Response

total_count
number

pools
array
id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"total_count": 42,
"pools": [
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}
]
}

Create a new pool in your cluster.

POST
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/pools
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
Body

name
string

commercial_type
string

autoscaling
boolean

size
number

min_size
nullable number

max_size
nullable number

container_runtime
nullable string

autohealing
boolean
Request Example
{
"name": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"container_runtime": "string",
"autohealing": "boolean"
}
200 Response

id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}

Get the pool details associated with the given id.

GET
/k8s/v1beta2/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
200 Response

id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}

Update the pool associated with the given id (nodes will be replaced one by one, quotas must be set to allow user to have -at least- one more node than the size of its current pool).

PATCH
/k8s/v1beta2/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
Body

autoscaling
nullable boolean

size
nullable number

min_size
nullable number

max_size
nullable number

autohealing
nullable boolean
Request Example
{
"autoscaling": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"autohealing": "boolean"
}
200 Response

id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}

Delete the pool associated with the given id.

DELETE
/k8s/v1beta2/regions/{region}/pools/{pool_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
200 Response

id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}

Upgrade the pool associated with the given id.

POST
/k8s/v1beta2/regions/{region}/pools/{pool_id}/upgrade
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

pool_id
required string
Body

version
string
Request Example
{
"version": "string"
}
200 Response

id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string
Display the cluster region.

name
string
Display pool name.

status
string
Possible values are creating, ready, deleting, deleted, updating, scalling, warning, error and locked. The default value is creating.

version
string
Display pool version.

commercial_type
string
Display nodes commercial type (e.g. GP1-M).

autoscaling
boolean
Enable or disable autoscaling.

autohealing
boolean
Enable or disable autohealing.

size
number
Target number of nodes.

min_size
number
Display lower limit for this pool.

max_size
number
Display upper limit for this pool.

created_at
string

updated_at
string

current_core_count
number

current_node_count
number

current_mem_count
number

container_runtime
string
Response Example
{
"id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"status": "creating",
"version": "string",
"commercial_type": "string",
"autoscaling": "boolean",
"autohealing": "boolean",
"size": 42,
"min_size": 42,
"max_size": 42,
"created_at": "string",
"updated_at": "string",
"current_core_count": 42,
"current_node_count": 42,
"current_mem_count": 42,
"container_runtime": "string"
}

Versions available

GET
/k8s/v1beta2/regions/{region}/versions
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.
200 Response

versions
array
id
string

description
string

label
string

cni
array

ingress
array

monitoring
boolean

region
string
Response Example
{
"versions": [
{
"id": "string",
"description": "string",
"label": "string",
"cni": [
"flannel"
],
"ingress": [
"no_ingress"
],
"monitoring": "boolean",
"region": "string"
}
]
}

Get version detail associated with the given id.

GET
/k8s/v1beta2/regions/{region}/versions/{version_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

version_id
required string
200 Response

id
string

description
string

label
string

cni
array

ingress
array

monitoring
boolean

region
string
Response Example
{
"id": "string",
"description": "string",
"label": "string",
"cni": [
"flannel"
],
"ingress": [
"no_ingress"
],
"monitoring": "boolean",
"region": "string"
}

Compute instance object

Get the node associated with the given id.

GET
/k8s/v1beta2/regions/{region}/nodes/{node_id}
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
200 Response

id
string
Display node unique ID.

pool_id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string

name
string
Display node name.

public_ip_v4
string
Display the servers public IPv4 address.

public_ip_v6
string
Display the servers public IPv6 address.

npd_status
map
Display kubernetes node conditions.
<npd_statuKey>
string

status
string
Possible values are creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is creating.

created_at
string

updated_at
string
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "string",
"public_ip_v6": "string",
"npd_status": {
"<npd_statuKey>": "string"
},
"status": "creating",
"created_at": "string",
"updated_at": "string"
}

Reboot node.

POST
/k8s/v1beta2/regions/{region}/nodes/{node_id}/reboot
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
Body

Request Example
{}
200 Response

id
string
Display node unique ID.

pool_id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string

name
string
Display node name.

public_ip_v4
string
Display the servers public IPv4 address.

public_ip_v6
string
Display the servers public IPv6 address.

npd_status
map
Display kubernetes node conditions.
<npd_statuKey>
string

status
string
Possible values are creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is creating.

created_at
string

updated_at
string
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "string",
"public_ip_v6": "string",
"npd_status": {
"<npd_statuKey>": "string"
},
"status": "creating",
"created_at": "string",
"updated_at": "string"
}

Replace a node by another (first the node is deleted, then a new one is created).

POST
/k8s/v1beta2/regions/{region}/nodes/{node_id}/replace
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

node_id
required string
Body

Request Example
{}
200 Response

id
string
Display node unique ID.

pool_id
string
Display pool unique ID.

cluster_id
string
Display cluster unique ID.

region
string

name
string
Display node name.

public_ip_v4
string
Display the servers public IPv4 address.

public_ip_v6
string
Display the servers public IPv6 address.

npd_status
map
Display kubernetes node conditions.
<npd_statuKey>
string

status
string
Possible values are creating, rebuilding, notready, ready, deleting, deleted, warning, error, locked and rebooting. The default value is creating.

created_at
string

updated_at
string
Response Example
{
"id": "string",
"pool_id": "string",
"cluster_id": "string",
"region": "string",
"name": "string",
"public_ip_v4": "string",
"public_ip_v6": "string",
"npd_status": {
"<npd_statuKey>": "string"
},
"status": "creating",
"created_at": "string",
"updated_at": "string"
}

MISC methods

GET
/k8s/v1beta2/regions/{region}/clusters/{cluster_id}/available-versions
Path Parameters

region
required string
The region you want to target. Possible value is fr-par.

cluster_id
required string
200 Response

versions
array
id
string

description
string

label
string

cni
array

ingress
array

monitoring
boolean

region
string
Response Example
{
"versions": [
{
"id": "string",
"description": "string",
"label": "string",
"cni": [
"flannel"
],
"ingress": [
"no_ingress"
],
"monitoring": "boolean",
"region": "string"
}
]
}