Cluster

Clusters are managed Kubernetes control planes.

Read more

create-sks-cluster

Create an SKS cluster

POST /sks-cluster

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
levelstringyesCluster service level

Allowed values: starter, pro.
namestringyesCluster name
versionstringyesControl plane Kubernetes version
addonsarray[string]noCluster addons
auditobjectnoKubernetes Audit parameters schema details
auto-upgradebooleannoEnable auto upgrade of the control plane to the latest patch version available
cnistringnoCluster CNI

Allowed values: calico, cilium.
create-default-security-groupbooleannoCreates an ad-hoc security group based on the choice of the selected CNI
descriptionstringnoCluster description
enable-kube-proxybooleannoIndicates whether to deploy the Kubernetes network proxy. When unspecified, defaults to true unless Cilium CNI is selected
feature-gatesarray[string]noA list of Kubernetes-only Alpha features to enable for API server component
labelsobjectnoCluster Labels
networkingobjectnoCluster networking configuration. schema details
oidcobjectnoSKS Cluster OpenID config map schema details
Example
{
  "addons": [
    "exoscale-cloud-controller"
  ],
  "audit": {
    "bearer-token": "string",
    "endpoint": "string",
    "initial-backoff": "string"
  },
  "auto-upgrade": true,
  "cni": "calico",
  "create-default-security-group": true,
  "description": "string",
  "enable-kube-proxy": true,
  "feature-gates": [
    "string"
  ],
  "labels": {},
  "level": "starter",
  "name": "string",
  "networking": {
    "cluster-cidr": "string",
    "node-cidr-mask-size-ipv4": 0,
    "node-cidr-mask-size-ipv6": 0,
    "service-cluster-ip-range": "string"
  },
  "oidc": {
    "client-id": "string",
    "groups-claim": "string",
    "groups-prefix": "string",
    "issuer-url": "string",
    "required-claim": {},
    "username-claim": "string",
    "username-prefix": "string"
  },
  "version": "string"
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for create-sks-cluster: golang | Python | Java

CLI: exo api create-sks-cluster

get-sks-cluster

Retrieve SKS cluster details

GET /sks-cluster/{id}

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
addonsarray[string]Cluster addons
auditobjectKubernetes Audit parameters schema details
auto-upgradebooleanEnable auto upgrade of the control plane to the latest patch version available
cnistringCluster CNI

Allowed values: calico, cilium.
created-atstringCluster creation date
descriptionstringCluster description
enable-kube-proxybooleanIndicates whether to deploy the Kubernetes network proxy.
enable-operators-cabooleanIndicates whether to add operators certificate authority (CA) as part of trusted CAs for the API server.
endpointstringCluster endpoint
feature-gatesarray[string]A list of Kubernetes-only Alpha features to enable for API server component
idstringCluster ID
labelsobjectCluster labels
levelstringCluster level

Allowed values: starter, pro.
namestringCluster name
nodepoolsarray[object]Cluster Nodepools schema details
statestringCluster state

Allowed values: rotating-csi-credentials, rotating-ccm-credentials, creating, upgrading, deleting, running, suspending, updating, error, rotating-karpenter-credentials, resuming.
versionstringControl plane Kubernetes version
Example output
{
  "addons": [
    "exoscale-cloud-controller"
  ],
  "audit": {
    "enabled": true,
    "endpoint": "string",
    "initial-backoff": "string"
  },
  "auto-upgrade": true,
  "cni": "calico",
  "created-at": "2024-01-01T12:00:00Z",
  "description": "string",
  "enable-kube-proxy": true,
  "enable-operators-ca": true,
  "endpoint": "string",
  "feature-gates": [
    "string"
  ],
  "id": "string",
  "labels": {},
  "level": "starter",
  "name": "string",
  "nodepools": [
    {
      "addons": [
        "storage-lvm"
      ],
      "anti-affinity-groups": [
        {
          "description": "string",
          "id": "string",
          "instances": [
            null
          ],
          "name": "string"
        }
      ],
      "created-at": "2024-01-01T12:00:00Z",
      "deploy-target": {
        "description": "string",
        "id": "string",
        "name": "string",
        "type": "edge"
      },
      "description": "string",
      "disk-size": 0,
      "id": "string",
      "instance-pool": {
        "anti-affinity-groups": [
          {
            "description": null,
            "id": null,
            "instances": null,
            "name": null
          }
        ],
        "application-consistent-snapshot-enabled": true,
        "deploy-target": {
          "description": "string",
          "id": "string",
          "name": "string",
          "type": "edge"
        },
        "description": "string",
        "disk-size": 0,
        "elastic-ips": [
          {
            "addressfamily": null,
            "cidr": null,
            "description": null,
            "healthcheck": null,
            "id": null,
            "ip": null,
            "labels": null
          }
        ],
        "id": "string",
        "instance-prefix": "string",
        "instance-type": {
          "authorized": true,
          "cpus": 0,
          "family": "gpu3",
          "gpus": 0,
          "id": "string",
          "memory": 0,
          "size": "large",
          "zones": [
            null
          ]
        },
        "instances": [
          {
            "anti-affinity-groups": null,
            "application-consistent-snapshot-enabled": null,
            "created-at": null,
            "deploy-target": null,
            "disk-size": null,
            "elastic-ips": null,
            "id": null,
            "instance-type": null,
            "ipv6-address": null,
            "labels": null,
            "mac-address": null,
            "manager": null,
            "name": null,
            "private-networks": null,
            "public-ip": null,
            "public-ip-assignment": null,
            "secureboot-enabled": null,
            "security-groups": null,
            "snapshots": null,
            "ssh-key": null,
            "ssh-keys": null,
            "state": null,
            "template": null,
            "tpm-enabled": null,
            "user-data": null
          }
        ],
        "ipv6-enabled": true,
        "labels": {},
        "manager": {
          "id": "string",
          "type": "sks-nodepool"
        },
        "min-available": 0,
        "name": "string",
        "private-networks": [
          {
            "description": null,
            "end-ip": null,
            "id": null,
            "labels": null,
            "leases": null,
            "name": null,
            "netmask": null,
            "options": null,
            "start-ip": null,
            "vni": null
          }
        ],
        "public-ip-assignment": "inet4",
        "security-groups": [
          {
            "description": null,
            "external-sources": null,
            "id": null,
            "name": null,
            "rules": null
          }
        ],
        "size": 0,
        "ssh-key": {
          "fingerprint": "string",
          "name": "string"
        },
        "ssh-keys": [
          {
            "fingerprint": null,
            "name": null
          }
        ],
        "state": "scaling-up",
        "template": {
          "application-consistent-snapshot-enabled": true,
          "boot-mode": "legacy",
          "build": "string",
          "checksum": "string",
          "created-at": "2024-01-01T12:00:00Z",
          "default-user": "string",
          "description": "string",
          "family": "string",
          "id": "string",
          "maintainer": "string",
          "name": "string",
          "password-enabled": true,
          "size": 0,
          "ssh-key-enabled": true,
          "url": "string",
          "version": "string",
          "visibility": "private",
          "zones": [
            null
          ]
        },
        "user-data": "string"
      },
      "instance-prefix": "string",
      "instance-type": {
        "authorized": true,
        "cpus": 0,
        "family": "gpu3",
        "gpus": 0,
        "id": "string",
        "memory": 0,
        "size": "large",
        "zones": [
          "ch-dk-2"
        ]
      },
      "kubelet-image-gc": {
        "high-threshold": 0,
        "low-threshold": 0,
        "min-age": "string"
      },
      "labels": {},
      "name": "string",
      "private-networks": [
        {
          "description": "string",
          "end-ip": "string",
          "id": "string",
          "labels": {},
          "leases": [
            null
          ],
          "name": "string",
          "netmask": "string",
          "options": {
            "dns-servers": null,
            "domain-search": null,
            "ntp-servers": null,
            "routers": null
          },
          "start-ip": "string",
          "vni": 0
        }
      ],
      "public-ip-assignment": "inet4",
      "security-groups": [
        {
          "description": "string",
          "external-sources": [
            null
          ],
          "id": "string",
          "name": "string",
          "rules": [
            null
          ]
        }
      ],
      "size": 0,
      "state": "renewing-token",
      "taints": {},
      "template": {
        "application-consistent-snapshot-enabled": true,
        "boot-mode": "legacy",
        "build": "string",
        "checksum": "string",
        "created-at": "2024-01-01T12:00:00Z",
        "default-user": "string",
        "description": "string",
        "family": "string",
        "id": "string",
        "maintainer": "string",
        "name": "string",
        "password-enabled": true,
        "size": 0,
        "ssh-key-enabled": true,
        "url": "string",
        "version": "string",
        "visibility": "private",
        "zones": [
          "ch-dk-2"
        ]
      },
      "version": "string"
    }
  ],
  "state": "rotating-csi-credentials",
  "version": "string"
}

SDK reference for get-sks-cluster: golang | Python | Java

CLI: exo api get-sks-cluster

update-sks-cluster

Update an SKS cluster

PUT /sks-cluster/{id}

Path parameters

NameInDescription
idpath

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
addonsarray[string]noCluster addons
auditobjectnoKubernetes Audit parameters schema details
auto-upgradebooleannoEnable auto upgrade of the control plane to the latest patch version available
descriptionstringnoCluster description
enable-operators-cabooleannoAdd or remove the operators certificate authority (CA) from the list of trusted CAs of the api server. The default value is true
feature-gatesarray[string]noA list of Kubernetes-only Alpha features to enable for API server component
labelsobjectnoCluster labels
namestringnoCluster name
oidcobjectnoSKS Cluster OpenID config map schema details
Example
{
  "addons": [
    "exoscale-cloud-controller"
  ],
  "audit": {
    "bearer-token": "string",
    "enabled": true,
    "endpoint": "string",
    "initial-backoff": "string"
  },
  "auto-upgrade": true,
  "description": "string",
  "enable-operators-ca": true,
  "feature-gates": [
    "string"
  ],
  "labels": {},
  "name": "string",
  "oidc": {
    "client-id": "string",
    "groups-claim": "string",
    "groups-prefix": "string",
    "issuer-url": "string",
    "required-claim": {},
    "username-claim": "string",
    "username-prefix": "string"
  }
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for update-sks-cluster: golang | Python | Java

CLI: exo api update-sks-cluster

delete-sks-cluster

Delete an SKS cluster

DELETE /sks-cluster/{id}

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for delete-sks-cluster: golang | Python | Java

CLI: exo api delete-sks-cluster


Other Operations

generate-sks-cluster-kubeconfig

Generate a new Kubeconfig file for a SKS cluster

POST /sks-cluster-kubeconfig/{id}

This operation returns a Kubeconfig file encoded in base64.

Path parameters

NameInDescription
idpath

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
groupsarray[string]yesList of roles. The certificate present in the Kubeconfig will have these roles set in the Org field.
userstringyesUser name in the generated Kubeconfig. The certificate present in the Kubeconfig will also have this name set for the CN field.
ttlintegernoValidity in seconds of the Kubeconfig user certificate (default: 30 days)
Example
{
  "groups": [
    "string"
  ],
  "ttl": 0,
  "user": "string"
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
kubeconfigstring
Example output
{
  "kubeconfig": "string"
}

SDK reference for generate-sks-cluster-kubeconfig: golang | Python | Java

CLI: exo api generate-sks-cluster-kubeconfig

rotate-sks-ccm-credentials

Rotate Exoscale CCM credentials

PUT /sks-cluster/{id}/rotate-ccm-credentials

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for rotate-sks-ccm-credentials: golang | Python | Java

CLI: exo api rotate-sks-ccm-credentials

rotate-sks-csi-credentials

Rotate Exoscale CSI credentials

PUT /sks-cluster/{id}/rotate-csi-credentials

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for rotate-sks-csi-credentials: golang | Python | Java

CLI: exo api rotate-sks-csi-credentials

rotate-sks-karpenter-credentials

Rotate Exoscale Karpenter credentials

PUT /sks-cluster/{id}/rotate-karpenter-credentials

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for rotate-sks-karpenter-credentials: golang | Python | Java

CLI: exo api rotate-sks-karpenter-credentials

rotate-sks-operators-ca

Rotate operators certificate authority

PUT /sks-cluster/{id}/rotate-operators-ca

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for rotate-sks-operators-ca: golang | Python | Java

CLI: exo api rotate-sks-operators-ca

get-sks-cluster-authority-cert

Get the certificate for a SKS cluster authority

GET /sks-cluster/{id}/authority/{authority}/cert

This operation returns the certificate for the given SKS cluster authority encoded in base64.

Path parameters

NameInDescription
idpath
authoritypath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
cacertstring
Example output
{
  "cacert": "string"
}

SDK reference for get-sks-cluster-authority-cert: golang | Python | Java

CLI: exo api get-sks-cluster-authority-cert

list-sks-cluster-deprecated-resources

Resources that are scheduled to be removed in future kubernetes releases

GET /sks-cluster-deprecated-resources/{id}

This operation returns the deprecated resources for a given cluster

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

Example output
[
  {
    "group": "string",
    "removed-release": "string",
    "resource": "string",
    "subresource": "string",
    "version": "string"
  }
]

SDK reference for list-sks-cluster-deprecated-resources: golang | Python | Java

CLI: exo api list-sks-cluster-deprecated-resources

get-sks-cluster-inspection

Get the latest inspection result

GET /sks-cluster/{id}/inspection

Helps troubleshoot common problems when deploying a kubernetes cluster. Inspections run every couple of minutes.

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

Example output
{}

SDK reference for get-sks-cluster-inspection: golang | Python | Java

CLI: exo api get-sks-cluster-inspection

list-sks-cluster-versions

List available versions for SKS clusters

GET /sks-cluster-version

Query parameters

NameInRequiredDescription
include-deprecatedqueryno

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
sks-cluster-versionsarray[string]
Example output
{
  "sks-cluster-versions": [
    "string"
  ]
}

SDK reference for list-sks-cluster-versions: golang | Python | Java

CLI: exo api list-sks-cluster-versions

list-sks-clusters

List SKS clusters

GET /sks-cluster

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
sks-clustersarray[object]schema details
Example output
{
  "sks-clusters": [
    {
      "addons": [
        "exoscale-cloud-controller"
      ],
      "audit": {
        "enabled": true,
        "endpoint": "string",
        "initial-backoff": "string"
      },
      "auto-upgrade": true,
      "cni": "calico",
      "created-at": "2024-01-01T12:00:00Z",
      "description": "string",
      "enable-kube-proxy": true,
      "enable-operators-ca": true,
      "endpoint": "string",
      "feature-gates": [
        "string"
      ],
      "id": "string",
      "labels": {},
      "level": "starter",
      "name": "string",
      "nodepools": [
        {
          "addons": [
            null
          ],
          "anti-affinity-groups": [
            null
          ],
          "created-at": "2024-01-01T12:00:00Z",
          "deploy-target": {
            "description": null,
            "id": null,
            "name": null,
            "type": null
          },
          "description": "string",
          "disk-size": 0,
          "id": "string",
          "instance-pool": {
            "anti-affinity-groups": null,
            "application-consistent-snapshot-enabled": null,
            "deploy-target": null,
            "description": null,
            "disk-size": null,
            "elastic-ips": null,
            "id": null,
            "instance-prefix": null,
            "instance-type": null,
            "instances": null,
            "ipv6-enabled": null,
            "labels": null,
            "manager": null,
            "min-available": null,
            "name": null,
            "private-networks": null,
            "public-ip-assignment": null,
            "security-groups": null,
            "size": null,
            "ssh-key": null,
            "ssh-keys": null,
            "state": null,
            "template": null,
            "user-data": null
          },
          "instance-prefix": "string",
          "instance-type": {
            "authorized": null,
            "cpus": null,
            "family": null,
            "gpus": null,
            "id": null,
            "memory": null,
            "size": null,
            "zones": null
          },
          "kubelet-image-gc": {
            "high-threshold": null,
            "low-threshold": null,
            "min-age": null
          },
          "labels": {},
          "name": "string",
          "private-networks": [
            null
          ],
          "public-ip-assignment": "inet4",
          "security-groups": [
            null
          ],
          "size": 0,
          "state": "renewing-token",
          "taints": {},
          "template": {
            "application-consistent-snapshot-enabled": null,
            "boot-mode": null,
            "build": null,
            "checksum": null,
            "created-at": null,
            "default-user": null,
            "description": null,
            "family": null,
            "id": null,
            "maintainer": null,
            "name": null,
            "password-enabled": null,
            "size": null,
            "ssh-key-enabled": null,
            "url": null,
            "version": null,
            "visibility": null,
            "zones": null
          },
          "version": "string"
        }
      ],
      "state": "rotating-csi-credentials",
      "version": "string"
    }
  ]
}

SDK reference for list-sks-clusters: golang | Python | Java

CLI: exo api list-sks-clusters

upgrade-sks-cluster

Upgrade an SKS cluster

PUT /sks-cluster/{id}/upgrade

Path parameters

NameInDescription
idpath

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
versionstringyesControl plane Kubernetes version
Example
{
  "version": "string"
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for upgrade-sks-cluster: golang | Python | Java

CLI: exo api upgrade-sks-cluster

upgrade-sks-cluster-service-level

Upgrade a SKS cluster to pro

PUT /sks-cluster/{id}/upgrade-service-level

Path parameters

NameInDescription
idpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceobjectRelated resource reference schema details
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "string",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "string",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for upgrade-sks-cluster-service-level: golang | Python | Java

CLI: exo api upgrade-sks-cluster-service-level

Last updated on