Skip to main content
POST
Create a HPE Morpheus cluster

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Create a self-managed Kubernetes cluster on HPE Morpheus VMs. Every placement member references an existing Morpheus object.

name
string
required
Minimum string length: 1
credential_id
string<uuid>
required
ssh_key_credential_id
string<uuid>
required

The SSH key credential authorised on the cluster's VMs.

group_id
integer
required

The Morpheus group (site) to provision into. See the groups catalog.

Required range: x >= 1
cloud_id
integer
required

The Morpheus cloud (zone) to provision into. See the clouds catalog.

Required range: x >= 1
network_id
integer
required

The network the VMs attach to. See the networks catalog.

Required range: x >= 1
layout_id
integer
required

The instance-type layout the VMs are provisioned with. See the layouts catalog.

Required range: x >= 1
bastion_plan_id
integer
required

Service plan of the bastion. See the plans catalog.

Required range: x >= 1
control_plane_plan_id
integer
required

Service plan of the control planes.

Required range: x >= 1
worker_plan_id
integer
required

Service plan of the workers.

Required range: x >= 1
description
string | null
virtual_image_id
integer | null

Optional virtual image to provision the VMs from.

Required range: x >= 1
control_plane_count
integer
default:1
Required range: 1 <= x <= 5
worker_count
integer
default:1
Required range: 0 <= x <= 50
distribution
string
default:kubeadm
kubernetes_version
string | null

Version for the chosen distribution (kubeadm unless distribution says k3s). kubeadm takes a plain upstream tag such as v1.36.4; k3s takes a k3s build such as v1.35.7+k3s1, and a bare patch resolves to its newest +k3sN build. A +k3sN build with distribution kubeadm is refused. Omit to install the version catalogue's stable version for the distribution.

etcd_topology
string
default:stacked
etcd_node_count
integer
default:3
etcd_plan_id
integer | null

Service plan of the external etcd nodes; used with etcd_topology external.

Required range: x >= 1
cni
enum<string>

Container network. Omitted resolves to cilium on kubeadm (the default distribution) and flannel on k3s.

Available options:
flannel,
calico,
cilium
node_groups
object[] | null

Worker node groups. Replaces worker_count and worker_plan_id when given.

k3s_disabled_components
enum<string>[] | null

k3s packaged components to keep disabled (k3s --disable), for example ["traefik"] on a cluster that brings its own ingress. k3s distribution only: the list is rendered into the server config at install and re-asserted by the maintenance pass, so the entries stay off across restarts.

Available options:
coredns,
servicelb,
traefik,
local-storage,
metrics-server,
runtimes
external_cloud_provider
boolean
default:false

Accepted only to be refused: the provider has no cloud controller manager, so true answers 400.

include_networking
boolean
default:true
include_dns
boolean
default:true

Opt the cluster into its delegated DNS subzone, which wires external-dns into the networking stack.

gateway_api
boolean
default:false

Install the Kubernetes Gateway API beside Traefik's Ingress: the Gateway API standard CRDs, Traefik's Gateway provider with the traefik GatewayClass and a shared traefik-gateway Gateway in the traefik namespace (a plain HTTP listener that accepts routes from every namespace), cert-manager's Gateway support, and external-dns publishing of HTTPRoute hostnames. Ingress keeps working; one Traefik serves both. Requires include_networking.

environment
string | null
Required string length: 1 - 50
criticality
enum<string> | null
Available options:
production,
staging,
development,
disposable

Response

Cluster created; provisioning runs in the background

cluster_id
string<uuid>
required
name
string
required