Crusoe Kubernetes Node Pools API

The Kubernetes Node Pools API from Crusoe — 4 operation(s) for kubernetes node pools.

OpenAPI Specification

crusoe-energy-kubernetes-node-pools-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: The API Gateway exposes all publicly available API endpoints for Crusoe Cloud products.
  title: Crusoe Cloud API Gateway Audit Logs Kubernetes Node Pools API
  version: v1alpha5
host: api.crusoecloud.com
basePath: /v1alpha5
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: Kubernetes Node Pools
paths:
  /projects/{project_id}/kubernetes/nodepools:
    get:
      tags:
      - Kubernetes Node Pools
      summary: Retrieve information about Kubernetes node pools belonging to a project or cluster.
      operationId: listNodePools
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ClusterID
        name: cluster_id
        in: query
      - type: string
        example: created_at, -created_at
        x-go-name: SortBy
        name: sort
        in: query
      responses:
        '200':
          $ref: '#/responses/listKubernetesNodePoolsResponse'
        '401':
          $ref: '#/responses/authError'
        '500':
          $ref: '#/responses/serverError'
    post:
      description: A successful response from this resource will contain the async operation.
      tags:
      - Kubernetes Node Pools
      summary: Create a new Kubernetes node pool owned by the logged in user.
      operationId: createNodePool
      parameters:
      - name: Body
        in: body
        required: true
        schema:
          $ref: '#/definitions/KubernetesNodePoolPostRequest'
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      responses:
        '200':
          $ref: '#/responses/asyncOperationResponse'
        '400':
          $ref: '#/responses/badReqError'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '500':
          $ref: '#/responses/serverError'
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}:
    get:
      tags:
      - Kubernetes Node Pools
      summary: Retrieve information about a particular Kubernetes node pool belonging to the project.
      operationId: getNodePool
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      responses:
        '200':
          $ref: '#/responses/getKubernetesNodePoolResponse'
        '401':
          $ref: '#/responses/authError'
        '500':
          $ref: '#/responses/serverError'
    delete:
      tags:
      - Kubernetes Node Pools
      summary: Delete a node pool that the logged in user owns.
      operationId: deleteNodePool
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      responses:
        '200':
          $ref: '#/responses/asyncOperationResponse'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '500':
          $ref: '#/responses/serverError'
    patch:
      tags:
      - Kubernetes Node Pools
      summary: Update a node pool that the logged in user owns.
      operationId: updateNodePool
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      - name: Body
        in: body
        required: true
        schema:
          $ref: '#/definitions/KubernetesNodePoolPatchRequest'
      responses:
        '200':
          $ref: '#/responses/asyncOperationResponse'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '500':
          $ref: '#/responses/serverError'
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/cancel-rotate:
    post:
      tags:
      - Kubernetes Node Pools
      summary: Cancel an in-progress rotation of the specified Kubernetes node pool.
      operationId: cancelNodePoolRotate
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      responses:
        '200':
          $ref: '#/responses/cancelNodePoolRotateResponse'
        '400':
          $ref: '#/responses/badReqError'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '404':
          $ref: '#/responses/notFoundError'
        '500':
          $ref: '#/responses/serverError'
  /projects/{project_id}/kubernetes/nodepools/{node_pool_id}/rotate:
    get:
      tags:
      - Kubernetes Node Pools
      summary: Get the rotate status of the specified Kubernetes ndoe pool.
      operationId: getNodePoolRotateStatus
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      responses:
        '200':
          $ref: '#/responses/getNodePoolRotateStatusResponse'
        '400':
          $ref: '#/responses/badReqError'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '500':
          $ref: '#/responses/serverError'
    post:
      description: A successful response returns an async operation you can poll.
      tags:
      - Kubernetes Node Pools
      summary: Start a rotation of the specified Kubernetes node pool.
      operationId: rotateNodePool
      parameters:
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: ProjectID
        name: project_id
        in: path
        required: true
      - type: string
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
        x-go-name: NodePoolID
        name: node_pool_id
        in: path
        required: true
      - name: Body
        in: body
        required: true
        schema:
          $ref: '#/definitions/KubernetesNodePoolRotateStartRequest'
      responses:
        '200':
          $ref: '#/responses/asyncOperationResponse'
        '400':
          $ref: '#/responses/badReqError'
        '401':
          $ref: '#/responses/authError'
        '403':
          $ref: '#/responses/permissionsError'
        '404':
          $ref: '#/responses/notFoundError'
        '500':
          $ref: '#/responses/serverError'
definitions:
  ReservationSpecification:
    type: object
    properties:
      id:
        description: 'Reservation ID to use for the VM. Incompatible with

          SelectionStrategy specification.'
        type: string
        x-go-name: ID
        example: 804bf3a2-81f2-4d78-9a9e-dc6a55ed33d8
      selection_strategy:
        description: 'Strategy for automatically selecting a reservation. Defaults to lowest cost selection.

          On-demand may be specified opt out of reservation usages. Incompatible with ID specification.'
        type: string
        default: lowest_cost
        enum:
        - lowest_cost
        - on_demand
        x-go-name: SelectionStrategy
        example: lowest_cost
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  ListKubernetesNodePoolsResponse:
    type: object
    required:
    - items
    properties:
      items:
        type: array
        items:
          $ref: '#/definitions/KubernetesNodePool'
        x-go-name: Items
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  KubernetesCancelNodePoolRotateResponse:
    type: object
    required:
    - no_rotate_in_progress
    properties:
      no_rotate_in_progress:
        description: True if there is no rotate operation to cancel.
        type: boolean
        x-go-name: NoRotateInProgress
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  KubernetesGetNodePoolRotateStatusResponse:
    type: object
    required:
    - state
    - out_of_sync_instances
    properties:
      out_of_sync_instances:
        description: List of out of sync instance ids.
        type: array
        items:
          type: string
        x-go-name: OutOfSyncInstances
      state:
        description: Current state of the node pool.
        type: string
        x-go-name: State
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  KubernetesNodePoolPatchRequest:
    type: object
    properties:
      action:
        description: 'The action to perform on the NodePool. RESERVE and UNRESERVE operations are done synchronously,

          and so will have succeeded with a 200 response. Defaults to UPDATE if no action specified.'
        type: string
        default: UPDATE
        enum:
        - RESERVE
        - UNRESERVE
        - UPDATE
        x-go-name: Action
        x-redocly-optional: true
        example: UPDATE
      count:
        description: The desired number of nodes in the node pool.
        type: integer
        format: int64
        x-go-name: Count
        x-redocly-optional: true
        example: 4
      ephemeral_storage_for_containerd:
        description: Indicates whether local ephemeral NVMe disks should be used for containerd storage.
        type: boolean
        x-go-name: EphemeralStorageForContainerd
        x-redocly-optional: true
        example: true
      node_labels:
        description: 'Labels assigned to the node pool. Labels provided in the PATCH request will not modify existing nodes,

          but will apply to any newly created nodes.'
        type: object
        additionalProperties:
          type: string
        x-go-name: NodeLabels
        x-redocly-optional: true
        example:
          label: my_node
      node_pool_version:
        description: Version of the Kubernetes node pool for newly created vms.
        type: string
        x-go-name: NodePoolVersion
        x-redocly-optional: true
        example: '1.30'
      reservation_id:
        description: The reservation ID of the node pool.
        type: string
        x-go-name: ReservationID
        x-redocly-optional: true
        example: ca39e669-47ee-456b-968d-303234fbf99f
      ssh_public_key:
        description: SSH public key to use for all VMs created from this node pool.
        type: string
        x-go-name: SSHPublicKey
        x-redocly-optional: true
        example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCspdG97nTS/h4PEPq2QD2RYVK1jxFXLFZuSDMI8Rtxpucl6LDZLOghEYoj13lxKQnGtcsM3Iu68lh+4YgZe7CbI6cc/TxPbeAX2HJTqDh0J7+GAlLBHK9tsepC0QlhIDiazJptOPDZ3cesCBXdxSnzEbhDaqgYOfl393cp1fCeOKRIDWEP3H9CM25dCbWF66sTDziLsojJ9dMnxhgKm9/JkZc5gYncLT/2Ey+VWfV9Fs65mGUrBbQOn3c8S/nEk6WRcYn4PFOnIp0Mz+Chb50iCJrW677pllLnkTGSU+4c0H9J5z4HDG0I+91RoiQ0QsayFTYO1JtSn+THLuq98V+D
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  KubernetesNodePoolPostRequest:
    type: object
    required:
    - name
    - product_name
    - count
    - cluster_id
    properties:
      cluster_id:
        description: Cluster ID of the cluster this node pool belongs to.
        type: string
        x-go-name: ClusterID
        example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
      count:
        description: The number of nodes to be created.
        type: integer
        format: int64
        x-go-name: Count
        example: 4
      ephemeral_storage_for_containerd:
        description: Indicates whether local ephemeral NVMe disks should be used for containerd storage.
        type: boolean
        x-go-name: EphemeralStorageForContainerd
        example: true
      ib_partition_id:
        description: 'Deprecated: Use transport_partition_id instead.'
        type: string
        x-go-name: IBPartitionID
      name:
        description: Name of the Kubernetes node pool.
        type: string
        x-go-name: Name
        example: my-kubernetes-node-pool
      node_labels:
        description: Labels assigned to the node pool
        type: object
        additionalProperties:
          type: string
        x-go-name: NodeLabels
        example:
          label: my_node
      node_pool_version:
        description: Version of the Kubernetes node pool.
        type: string
        x-go-name: NodePoolVersion
        example: '1.30'
      nvlink_domain_id:
        description: Optional NVLink domain ID to assign to nodes in this node pool
        type: string
        x-go-name: NvlinkDomainID
        example: 550e8400-e29b-41d4-a716-446655440000
      product_name:
        description: Product name of the VM type to be created within this node pool.
        type: string
        x-go-name: ProductName
        example: a100.2x
      public_ip_type:
        description: 'Public IP type for nodepool nodes. Possible values: dynamic, static, none'
        type: string
        default: dynamic
        x-go-name: PublicIPType
        example: dynamic
      reservation_specification:
        $ref: '#/definitions/ReservationSpecification'
      ssh_public_key:
        description: SSH public key to use for all VMs created from this node pool.
        type: string
        x-go-name: SSHPublicKey
        example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCspdG97nTS/h4PEPq2QD2RYVK1jxFXLFZuSDMI8Rtxpucl6LDZLOghEYoj13lxKQnGtcsM3Iu68lh+4YgZe7CbI6cc/TxPbeAX2HJTqDh0J7+GAlLBHK9tsepC0QlhIDiazJptOPDZ3cesCBXdxSnzEbhDaqgYOfl393cp1fCeOKRIDWEP3H9CM25dCbWF66sTDziLsojJ9dMnxhgKm9/JkZc5gYncLT/2Ey+VWfV9Fs65mGUrBbQOn3c8S/nEk6WRcYn4PFOnIp0Mz+Chb50iCJrW677pllLnkTGSU+4c0H9J5z4HDG0I+91RoiQ0QsayFTYO1JtSn+THLuq98V+D
      subnet_id:
        description: 'The ID of the subnet to create the node pool in. Must be in the location

          of the cluster if specified. If not provided, the default subnet for the

          location will be used, if there is one.'
        type: string
        x-go-name: SubnetID
        example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
      transport_partition_id:
        description: 'The ID of the Infiniband or RoCE partition to create node pool in. Must be in the location

          of the cluster if specified.'
        type: string
        x-go-name: TransportPartitionID
        example: b1f86d1b-42d2-490d-adb0-cc1029abf653
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  AsyncOperationResponse:
    type: object
    title: AsyncOperationResponse is the response type for endpoints which return async operations.
    required:
    - operation
    properties:
      operation:
        $ref: '#/definitions/Operation'
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  KubernetesNodePool:
    type: object
    required:
    - id
    - name
    - count
    - project_id
    - cluster_id
    - image_id
    - node_labels
    - subnet_id
    - instance_ids
    - state
    - type
    - created_at
    - updated_at
    - reservation_id
    - ephemeral_storage_for_containerd
    properties:
      cluster_id:
        description: The ID of the Kubernetes cluster this node pool belongs to.
        type: string
        x-go-name: ClusterID
        example: 9c8b7d6e-5f4a-3b2c-1e0f-2a3b4c5d6e7f
      count:
        description: Number of nodes within the node pool.
        type: integer
        format: int64
        x-go-name: Count
        example: 4
      created_at:
        description: The time when the cluster was created
        type: string
        x-go-name: CreatedAt
        example: '2021-12-03T19:58:34Z'
      ephemeral_storage_for_containerd:
        description: Indicates whether local ephemeral NVMe disks should be used for containerd storage.
        type: boolean
        x-go-name: EphemeralStorageForContainerd
        example: true
      id:
        description: ID of the node pool.
        type: string
        x-go-name: ID
        example: 0a1b3c2d-5e6f-8b9c-4d7e-1a2b3c4d5e6f
      image_id:
        description: Image Unique identifier for the Kubernetes node pool.
        type: string
        x-go-name: ImageID
        example: ab4a6b00-aa5f-408e-a9fb-ac6de5eb45ab
      instance_details:
        description: Details about instances within the Kubernetes node pool.
        type: array
        items:
          $ref: '#/definitions/InstanceDetails'
        x-go-name: InstanceDetails
      instance_ids:
        description: List of IDs of instances within the node pool.
        type: array
        items:
          type: string
        x-go-name: InstanceIDs
        example:
        - ca39e669-47ee-456b-968d-303234fbf99f
      name:
        description: Name of the node pool.
        type: string
        x-go-name: Name
        example: crusoe-node-pool
      node_labels:
        description: Labels associated with the node pool.
        type: object
        additionalProperties:
          type: string
        x-go-name: NodeLabels
        example: '"nvidia.a100"'
      nvlink_domain_id:
        description: NVLink domain ID assigned to this node pool
        type: string
        x-go-name: NvlinkDomainID
        example: 550e8400-e29b-41d4-a716-446655440000
      project_id:
        description: The ID of the project this Kubernetes node pool belongs to.
        type: string
        x-go-name: ProjectID
        example: 9c8b7d6e-5f4a-3b2c-1e0f-2a3b4c5d6e7f
      public_ip_type:
        description: 'Public IP type for nodepool nodes. Possible values: dynamic, static, none'
        type: string
        default: dynamic
        x-go-name: PublicIPType
        example: dynamic
      reservation_id:
        description: The ID of the billing reservation associated with the node pool
        type: string
        x-go-name: ReservationID
        example: ca39e669-47ee-456b-968d-303234fbf99f
      state:
        description: State of the node pool
        type: string
        x-go-name: State
        example: STATE_RUNNING
      subnet_id:
        description: The ID of the subnet this node pool belongs to.
        type: string
        x-go-name: SubnetID
        example: 09ae8411-0fbb-411c-898c-2b8f19622ae1
      type:
        description: VM type of the node pool
        type: string
        x-go-name: Type
        example: a100.2x
      updated_at:
        description: The time when the cluster was last updated
        type: string
        x-go-name: UpdatedAt
        example: '2021-12-03T19:58:34Z'
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  Operation:
    description: 'Individual resources that use Operations should populate the `metadata` field

      with resource-specific information.'
    type: object
    title: Operation contains the common fields for all Operation API objects.
    required:
    - operation_id
    - state
    - metadata
    - started_at
    - completed_at
    properties:
      completed_at:
        type: string
        x-go-name: CompletedAt
        example: '2021-12-03T19:59:34Z'
      metadata:
        x-go-name: Metadata
        example: '{}'
      operation_id:
        type: string
        x-go-name: ID
        example: F6EF489C-086E-458D-B812-7962964A28C9
      result:
        x-go-name: Result
        example: '{}'
      started_at:
        type: string
        x-go-name: StartedAt
        example: '2021-12-03T19:58:34Z'
      state:
        type: string
        enum:
        - IN_PROGRESS
        - SUCCEEDED
        - FAILED
        x-go-name: State
        example: IN_PROGRESS
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/handlers
  InstanceDetails:
    type: object
    required:
    - id
    - using_latest_config
    properties:
      id:
        description: Unique identifier (UUID) of the instance.
        type: string
        x-go-name: ID
      using_latest_config:
        description: Whether or not the instance was created with the current node pool configuration.
        type: boolean
        x-go-name: UsingLatestConfig
        example: true
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
  KubernetesNodePoolRotateStartRequest:
    type: object
    required:
    - strategy
    - count
    - percentage
    properties:
      count:
        description: Number of nodes to replace at a time if the strategy is 'count'.
        type: integer
        format: int64
        x-go-name: Count
        example: 2
      percentage:
        description: Percentage of nodes to replace at a time if the strategy is 'percentage'.
        type: integer
        format: int64
        x-go-name: Percentage
        example: 20
      strategy:
        description: Strategy of the rotation to perform.
        type: string
        enum:
        - count
        - percentage
        x-go-name: Strategy
        example: '''count'''
    x-go-package: gitlab.com/crusoeenergy/island/rest-gateway/internal/models
responses:
  badReqError:
    description: Error Bad Request
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '400'
        message:
          type: string
          x-go-name: Message
          example: bad_request
  asyncOperationResponse:
    description: ''
    schema:
      $ref: '#/definitions/AsyncOperationResponse'
  cancelNodePoolRotateResponse:
    description: ''
    schema:
      $ref: '#/definitions/KubernetesCancelNodePoolRotateResponse'
  getNodePoolRotateStatusResponse:
    description: ''
    schema:
      $ref: '#/definitions/KubernetesGetNodePoolRotateStatusResponse'
  notFoundError:
    description: Error Not Found
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '404'
        message:
          type: string
          x-go-name: Message
          example: not_found
  getKubernetesNodePoolResponse:
    description: ''
    schema:
      $ref: '#/definitions/KubernetesNodePool'
  serverError:
    description: Error Internal Server
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '500'
        message:
          type: string
          x-go-name: Message
          example: internal_error
  listKubernetesNodePoolsResponse:
    description: ''
    schema:
      $ref: '#/definitions/ListKubernetesNodePoolsResponse'
  permissionsError:
    description: Error Permissions
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '403'
        message:
          type: string
          x-go-name: Message
          example: unauthorized
  authError:
    description: Error Authentication Failed
    schema:
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          x-go-name: Code
          example: '401'
        message:
          type: string
          x-go-name: Message
          example: bad_credential
x-tagGroups:
- name: Compute
  tags:
  - VMs
  - VM Operations
  - Images
  - Instance Templates
  - Custom Images
  - Custom Image Operations
- name: Organizations
  tags:
  - Projects
  - Entities
  - Prospects
  - Billing
  - Usage
  - Quotas
  - Audit Logs
  - Reservations
- name: Users
  tags:
  - Identities
  - Roles
  - SSH Keys
  - Tokens
- name: Storage
  tags:
  - Disks
  - Disk Operations
  - Snapshots
  - Snapshot Operations
- name: Networking
  tags:
  - VPC Firewall Rules
  - VPC Firewall Rule Operations
  - VPC Networks
  - VPC Subnets
  - IB Partitions
  - Load Balancers
- name: Orchestration
  tags:
  - Kubernetes Clusters
  - Kubernetes Cluster Operations
  - Kubernetes Node Pools
  - Kubernetes Node Pool Operations
  - Kubernetes Versions
  - AutoClusters
  - AutoCluster Operations
- name: Locations
  tags:
  - Locations
- name: Capacities
  tags:
  - Capacities