linode Linode Kubernetes Engine (LKE) API

Deploy and manage Kubernetes clusters, node pools, and cluster configurations through the Linode Kubernetes Engine.

OpenAPI Specification

linode-linode-kubernetes-engine-lke-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Linode API v4 Account Linode Kubernetes Engine (LKE) API
  description: The Linode API v4 provides programmatic access to the full range of Akamai Connected Cloud (formerly Linode) products and services. It enables developers to create and manage compute instances, deploy Kubernetes clusters, configure NodeBalancers, manage DNS domains, provision Block Storage volumes, control Object Storage buckets, set up firewalls, and administer account settings. The RESTful API uses OAuth and personal access tokens for authentication and returns JSON responses, with support for filtering and sorting across all resource endpoints.
  version: 4.189.0
  contact:
    name: Linode Support
    url: https://www.linode.com/support/
  termsOfService: https://www.linode.com/legal-tos/
servers:
- url: https://api.linode.com/v4
  description: Production Server
security:
- personalAccessToken: []
- oauth: []
tags:
- name: Linode Kubernetes Engine (LKE)
  description: Deploy and manage Kubernetes clusters, node pools, and cluster configurations through the Linode Kubernetes Engine.
paths:
  /lke/clusters:
    get:
      operationId: getLKEClusters
      summary: List Kubernetes clusters
      description: Returns a paginated list of all LKE clusters on your account.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: LKE clusters retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedLKEClusterList'
        '401':
          description: Unauthorized - invalid or missing authentication
    post:
      operationId: createLKECluster
      summary: Create a Kubernetes cluster
      description: Creates a new LKE cluster with the specified configuration, including the Kubernetes version, region, and node pools.
      tags:
      - Linode Kubernetes Engine (LKE)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LKEClusterRequest'
      responses:
        '200':
          description: LKE cluster created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LKECluster'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
  /lke/clusters/{clusterId}:
    get:
      operationId: getLKECluster
      summary: Get a Kubernetes cluster
      description: Returns the details for a single LKE cluster.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      responses:
        '200':
          description: LKE cluster retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LKECluster'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
    put:
      operationId: updateLKECluster
      summary: Update a Kubernetes cluster
      description: Updates the configuration for an LKE cluster.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LKEClusterUpdateRequest'
      responses:
        '200':
          description: LKE cluster updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LKECluster'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
    delete:
      operationId: deleteLKECluster
      summary: Delete a Kubernetes cluster
      description: Deletes an LKE cluster and all associated node pools and nodes.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      responses:
        '200':
          description: LKE cluster deleted successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
  /lke/clusters/{clusterId}/pools:
    get:
      operationId: getLKENodePools
      summary: List node pools
      description: Returns a paginated list of node pools for a given LKE cluster.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Node pools retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedNodePoolList'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
    post:
      operationId: createLKENodePool
      summary: Create a node pool
      description: Creates a new node pool for the specified LKE cluster.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodePoolRequest'
      responses:
        '200':
          description: Node pool created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodePool'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
  /lke/clusters/{clusterId}/kubeconfig:
    get:
      operationId: getLKEClusterKubeconfig
      summary: Get kubeconfig
      description: Returns the base64-encoded kubeconfig for the specified LKE cluster, which can be used with kubectl to interact with the cluster.
      tags:
      - Linode Kubernetes Engine (LKE)
      parameters:
      - $ref: '#/components/parameters/clusterIdParam'
      responses:
        '200':
          description: Kubeconfig retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  kubeconfig:
                    type: string
                    description: The base64-encoded kubeconfig content.
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: LKE cluster not found
  /lke/versions:
    get:
      operationId: getLKEVersions
      summary: List Kubernetes versions
      description: Returns a list of available Kubernetes versions for LKE clusters.
      tags:
      - Linode Kubernetes Engine (LKE)
      responses:
        '200':
          description: Kubernetes versions retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/KubernetesVersion'
components:
  schemas:
    LKEClusterRequest:
      type: object
      required:
      - label
      - region
      - k8s_version
      - node_pools
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 32
          description: The label for the new cluster.
        region:
          type: string
          description: The region for the cluster.
        k8s_version:
          type: string
          description: The Kubernetes version for the cluster.
        tags:
          type: array
          items:
            type: string
          description: Tags for the cluster.
        node_pools:
          type: array
          items:
            $ref: '#/components/schemas/NodePoolRequest'
          description: Node pool configurations for the cluster.
        control_plane:
          type: object
          properties:
            high_availability:
              type: boolean
              description: Whether to enable high availability for the control plane.
    LKEClusterUpdateRequest:
      type: object
      properties:
        label:
          type: string
          minLength: 1
          maxLength: 32
          description: The label for the cluster.
        tags:
          type: array
          items:
            type: string
          description: Tags for the cluster.
        k8s_version:
          type: string
          description: The target Kubernetes version.
        control_plane:
          type: object
          properties:
            high_availability:
              type: boolean
              description: Whether to enable high availability.
    NodePool:
      type: object
      properties:
        id:
          type: integer
          description: The unique ID of this node pool.
        type:
          type: string
          description: The Linode type for nodes in this pool.
        count:
          type: integer
          description: The number of nodes in this pool.
        nodes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The unique ID of this node.
              instance_id:
                type: integer
                description: The Linode instance ID for this node.
              status:
                type: string
                enum:
                - ready
                - not_ready
                description: The status of this node.
          description: The nodes in this pool.
        autoscaler:
          type: object
          properties:
            enabled:
              type: boolean
              description: Whether the autoscaler is enabled.
            min:
              type: integer
              description: The minimum number of nodes.
            max:
              type: integer
              description: The maximum number of nodes.
          description: Autoscaler configuration for this pool.
    KubernetesVersion:
      type: object
      properties:
        id:
          type: string
          description: The Kubernetes version string.
    PaginatedLKEClusterList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/LKECluster'
    LKECluster:
      type: object
      properties:
        id:
          type: integer
          description: The unique ID of this LKE cluster.
        label:
          type: string
          description: The label for this cluster.
        region:
          type: string
          description: The region where this cluster is located.
        k8s_version:
          type: string
          description: The Kubernetes version for this cluster.
        status:
          type: string
          enum:
          - ready
          - not_ready
          description: The current status of the cluster.
        tags:
          type: array
          items:
            type: string
          description: Tags for this cluster.
        control_plane:
          type: object
          properties:
            high_availability:
              type: boolean
              description: Whether the control plane is highly available.
          description: Control plane configuration for this cluster.
        created:
          type: string
          format: date-time
          description: When this cluster was created.
        updated:
          type: string
          format: date-time
          description: When this cluster was last updated.
    PaginatedNodePoolList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/NodePool'
    Pagination:
      type: object
      properties:
        page:
          type: integer
          description: The current page number.
        pages:
          type: integer
          description: The total number of pages.
        results:
          type: integer
          description: The total number of results.
    NodePoolRequest:
      type: object
      required:
      - type
      - count
      properties:
        type:
          type: string
          description: The Linode type for nodes in this pool.
        count:
          type: integer
          minimum: 1
          description: The number of nodes in this pool.
        autoscaler:
          type: object
          properties:
            enabled:
              type: boolean
              description: Whether to enable the autoscaler.
            min:
              type: integer
              description: The minimum number of nodes.
            max:
              type: integer
              description: The maximum number of nodes.
  parameters:
    clusterIdParam:
      name: clusterId
      in: path
      required: true
      schema:
        type: integer
      description: The ID of the LKE cluster.
    pageParam:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: The page number to return.
    pageSizeParam:
      name: page_size
      in: query
      schema:
        type: integer
        minimum: 25
        maximum: 500
        default: 100
      description: The number of items per page.
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
      description: A personal access token generated from the Linode Cloud Manager that grants access to the API based on the token's scopes.
    oauth:
      type: oauth2
      description: OAuth 2.0 authentication for third-party applications.
      flows:
        authorizationCode:
          authorizationUrl: https://login.linode.com/oauth/authorize
          tokenUrl: https://login.linode.com/oauth/token
          scopes:
            account:read_only: Read access to account information
            account:read_write: Read and write access to account information
            domains:read_only: Read access to domains
            domains:read_write: Read and write access to domains
            events:read_only: Read access to events
            events:read_write: Read and write access to events
            firewall:read_only: Read access to firewalls
            firewall:read_write: Read and write access to firewalls
            images:read_only: Read access to images
            images:read_write: Read and write access to images
            ips:read_only: Read access to IP addresses
            ips:read_write: Read and write access to IP addresses
            linodes:read_only: Read access to Linodes
            linodes:read_write: Read and write access to Linodes
            lke:read_only: Read access to LKE
            lke:read_write: Read and write access to LKE
            longview:read_only: Read access to Longview
            longview:read_write: Read and write access to Longview
            nodebalancers:read_only: Read access to NodeBalancers
            nodebalancers:read_write: Read and write access to NodeBalancers
            object_storage:read_only: Read access to Object Storage
            object_storage:read_write: Read and write access to Object Storage
            stackscripts:read_only: Read access to StackScripts
            stackscripts:read_write: Read and write access to StackScripts
            volumes:read_only: Read access to Volumes
            volumes:read_write: Read and write access to Volumes
            vpc:read_only: Read access to VPCs
            vpc:read_write: Read and write access to VPCs
externalDocs:
  description: Linode API v4 Documentation
  url: https://techdocs.akamai.com/linode-api/reference/api