Rest API documentation

Server
<account>.platform9.net
Server Variables

List all the nodes in a project identified by the project UUID

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the node belongs to

GET /v3/{project_uuid}/nodes
Copy
Responses application/json
200

OK

arrayarray
actualKubeRoleVersionstring

Kube version of the node

cloudInstanceIdstring

cloud instance id of the node

cloudProviderTypestring

Type of cloud provider, such as local or aws used to create the cluster

cloudProviderUuidstring

UUID of the cloud provider

clusterNamestring

Name of the cluster the node belongs to

clusterUuidstring

UUID of the cluster the node belongs to

clusterKubeRoleVersionstring

Kube role version of the cluster

namestring

Host name of the node

uuidstring

UUID of the node

api_respondinginteger

1 indicates the API server on this node is running. 0 otherwise. Applicable only if isMaster is 1

primaryIpstring

IP address of the node

startKubeinteger

Indicates whether Kube has started (1 to indicate active and 0 otherwise)

statusstring

Status of the node. States include “ok”, ”converging”, “failed”. These states indicate the current state of kubernetes setup on the host.

isMasterinteger

1 if this node is a master of a cluster. 0 otherwise

masterlessinteger
nodePoolNamestring

Name of the node pool, the node belongs to

nodePoolUuidstring

UUID of the node pool, the node belongs to

projectIdstring

UUID of the project the node belongs to

403

unauthorized to perform this operation

Response
Copy

Get details of a specific node in project, identified by the UUID

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the node

project_uuidstring

UUID of the project the node belongs to

GET /v3/{project_uuid}/nodes/{uuid}
Copy
Responses application/json
200

OK

actualKubeRoleVersionstring

Kube version of the node

cloudInstanceIdstring

cloud instance id of the node

cloudProviderTypestring

Type of cloud provider, such as local or aws used to create the cluster

cloudProviderUuidstring

UUID of the cloud provider

clusterNamestring

Name of the cluster the node belongs to

clusterUuidstring

UUID of the cluster the node belongs to

clusterKubeRoleVersionstring

Kube role version of the cluster

namestring

Host name of the node

uuidstring

UUID of the node

api_respondinginteger

1 indicates the API server on this node is running. 0 otherwise. Applicable only if isMaster is 1

primaryIpstring

IP address of the node

startKubeinteger

Indicates whether Kube has started (1 to indicate active and 0 otherwise)

statusstring

Status of the node. States include “ok”, ”converging”, “failed”. These states indicate the current state of kubernetes setup on the host.

isMasterinteger

1 if this node is a master of a cluster. 0 otherwise

masterlessinteger
nodePoolNamestring

Name of the node pool, the node belongs to

nodePoolUuidstring

UUID of the node pool, the node belongs to

projectIdstring

UUID of the project the node belongs to

403

unauthorized to perform this operation

Response
Copy

Updates the properties of the node specified by the node UUID

Currently, only the cluster property for a node can be modified and its primary usage is to detach a node from a cluster. The node, if needed, can be reattached to another cluster by using the cluster’s attach API

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the node

project_uuidstring

UUID of the project the nodes belongs to

Request Body
objectobject
clusterUuidstring

Value of this field must be set to null to detach the node

PUT /v3/{project_uuid}/nodes/{uuid}
Copy
Responses application/json
200

OK, if the node gets deattached from the cluster

No response body
403

Unauthorized to perform this operation

Response
Copy

Get the list of the cloud provider accounts currently setup in a project identified by project UUID

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cloud provider belongs to

GET /v3/{project_uuid}/cloudProviders
Copy
Responses application/json
200

OK

arrayarray
namestring

Name of the cloud provider account

uuidstring

UUID of the cloud provider account

typestring

Type of the cloud provider account

nodePoolUuidstring

UUID of the associated node pool

nodePoolNamestring

Name of the associated node pool

projectIDstring

UUID of the cloud provider

403

unauthorized to perform this operation

Response
Copy

Add a cloud provider account

Note that by default, there is one “local” cloud provider, which is used for building clusters manually. Currently, the supported cloudProviders are AWS,Azure,GCP other than the “local” provider.

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cloud provider account belongs to

Request Body
objectobject
namestring

Name of the cloud provider account

typestring

Type of the cloud provider account

keystring

Cloud access key

secretstring

Cloud secret key

POST /v3/{project_uuid}/cloudProviders
Copy
Responses application/json
200

OK, if the cloud provider gets created successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Get all available cloud provider types, in a project identified by project UUID

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cloud provider belongs to

GET /v3/{project_uuid}/cloudProvider/types
Copy
Responses application/json
200

OK

typestring

Cloud provider type.Examples are 'aws', 'local', 'azure'

403

unauthorized to perform this operation

Response
Copy

Get the details for cloud provider account identified by the account_uuid

This is applicable only for public cloud providers

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cloud provider

project_uuidstring

UUID of the project the cloud provider belongs to

GET /v3/{project_uuid}/cloudProviders/{uuid}
Copy
Responses application/json
200

OK

Regionsarray

Regions belonging to the provider

Endpointstring

endpoint of the region

RegionNamestring

name of the region

OptInStatusstring

Indicates whether opt-in is required or not

403

unauthorized to perform this operation

Response
Copy

Delete a cloud provider account specified by account uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cloud provider

project_uuidstring

UUID of the project the cloud provider account belongs to

DELETE /v3/{project_uuid}/cloudProviders/{uuid}
Copy
Responses application/json
200

OK, if the cloud provider gets deleted successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Get the details for a region in a particular cloud provider account identified by the account_uuid

This is applicable only for public cloud providers

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cloud provider

regionidstring

Name of the region

project_uuidstring

UUID of the project the cloud provider belongs to

GET /v3/{project_uuid}/cloudProviders/{uuid}/region/{regionid}
Copy
Responses application/json
200

OK

azsarray[object]

The list of availability zones in the region

domainsarray[object]

The list of hosting domains

flavorsarray[object]

The list of instance flavors supported in the region

keyPairsarray[object]

The list of ssh key pairs in the region

operatingSystemsarray[object]

The list of operating systems available in the region

vpcsarray[object]

The list of virtual private networks available in the region

403

unauthorized to perform this operation

Response
Copy

Add ssh key to a cloud provider region

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cloud provider

regionidstring

Name of the region

project_uuidstring

UUID of the project the cloud provider belongs to

Request Body application/json
objectobject
namestring

Name of the key

keystring

Contents of the key

POST /v3/{project_uuid}/cloudProviders/{uuid}/region/{regionid}/sshKey
Copy
Responses application/json
200

OK

No response body
400

Key is not in valid OpenSSH public key format

403

unauthorized to perform this operation

Response
Copy

Validate a cloud provider account

Validate a cloud provider credentials before adding it

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cloud provider account belongs to

Request Body
objectobject
namestring

Name of the cloud provider account

typestring

Type of the cloud provider account

keystring

Cloud access key

secretstring

Cloud secret key

POST /v3/{project_uuid}/cloudProviders/validate
Copy
Responses application/json
200

OK, if the cloud provider gets created successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Update a cloud provider account specified by account uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cloud provider

Request Body
objectobject
namestring

Name of the cloud provider account

keystring

Cloud access key

secretstring

Cloud secret key

PUT /v1/cloudProviders/{uuid}
Copy
Responses application/json
200

OK, if the cloud provider gets upddated successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Get the list of clusters currently setup in PMK

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cluster belongs to

GET /v3/{project_uuid}/clusters
Copy
Responses application/json
200

OK

arrayarray
namestring

Name of the cluster

uuidstring

UUID of the cluster

containersCidrstring

CIDR used for container IP addresses

servicesCidrstring

CIDR used for service IP addresses

isKubernetesinteger

Field is set to 1 if the cluster is a Kubernetes cluster, 0 otherwise

isMesosinteger

Field is set to 1 if the cluster is a Mesos cluster, 0 otherwise

isSwarminteger

Field is set to 1 if the cluster is a Swarm cluster, 0 otherwise

externalDnsNamestring

Optional DNS name for API endpoint. This field is autogenerated when pf9 domain is used.

debugboolean

If field is set to true,debug logs will be enabled

masterIpstring

Ip of the master node, applicable only for cloud provider type 'openstack'

statusstring

Status of the cluster

masterStatusstring

Status of the master nodes. 'healthy' means all masters are healthy. 'partially healthy' means quorum number of masters are healthy, but some are not. 'unhealthy' means quorum number of master are unhealthy

workerStatusstring

Status of the worker nodes. 'healthy' means all workers are healthy. 'partially healthy' means more than 50% of the workers are healthy, rest are unhealthy. 'unhealthy' means more than 50% of the workers are unhealthy

ipv6boolean

Set to true if ipv6 is enabled

kubeRoleVersionstring

Pf9-kube role version to be used when bringing up the cluster.

canMinorUpgradeinteger

Set to 1 if minor upgrade is possible, 0 otheriwse.

minorUpgradeRoleVersionstring

Role version of minor upgrade.

canPatchUpgradeinteger

Set to 1 if patch upgrade is possible, 0 otherwise.

patchUpgradeRoleVersionstring

Role version of patch upgrade.

upgradingTostring

Set to the version the cluster is upgrading to, otherwise null.

flannelIfaceLabelstring

The interface used by flannel for interhost communication

flannelPublicIfaceLabelstring

The IP address used as the flannel public IP for the nodes in the cluster

dockerRootstring

Root directory for docker

etcdDataDirstring

Data directory for etcd. The field is applicable to master nodes only

lastOpstring

The last operation such as node attach or node detach that was performed on the cluster

lastOkstring

The timestamp when the cluster last reported an OK status

keystoneEnabledinteger

Field is set to 1 if keystone is enabled, 0 otherwise

authzEnabledinteger

Field is set to 1 if authz is enabled, 0 otherwise

taskStatusstring

Status of the last task that run on the cluster.

taskErrorstring

Error details if the last task on cluster did not succeed

kubeProxyModestring

The mode which kube-proxy is running in

numMastersinteger

Number of master nodes in the cluster

numWorkersinteger

Number of worker nodes in the cluster

enableCASboolean

If value is 1,cluster autoscaling is enabled (only for AWS clusters).

numMinWorkersinteger

This parameter is required if enableCAS is set to true. This is the minimum number of worker nodes in ASG

numMaxWorkersinteger

This parameter is required if enableCAS is set to true. This is the maximum number of worker nodes in ASG

etcdHeartbeatIntervalMsinteger

Frequency with which master node will notify workers

etcdElectionTimeoutMsinteger

This timeout is how long a worker node will go without hearing a heartbeat,before attempting to become master

privilegedinteger

Field is set to 1 if cluster runs privileged containers, 0 otherwise

apiserverStorageBackendstring

The kube-apiserver storage backend for persistance, etcd3(default)

appCatalogEnabledinteger

DEPRECATED. Always disabled now. Field is set to 1 if app catalog is enabled, 0 otherwise

projectIdstring

UUID of the Keystone project that this cluster is part of

runtimeConfigstring
isEtcdBackupEnabledboolean

Set to true if etcd backup should be enabled, false otherwise

intervalInMinsinteger

etcd backup interval, specified in minutes

intervalInHoursinteger

etcd backup interval, specified in Hours

dailyBackupTimestring

etcd backup Timestamp for daily backup, specified in format 'HH:MM'

maxIntervalBackupCountinteger

max number of Backups retention for interval type backups

maxTimestampBackupCountinteger

max number of Backups retention for Timestamp type backups

storageTypestring

Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk

localPathstring

Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only.

taskStatusstring

Status indicating whether the backup cron job on the Kubernetes cluster was successfully setup. Can be 'success' or 'error'

taskErrorDetailstring

Details of the error occurred of the taskStatus returned is 'error'

nodePoolUuidstring

UUID of the node pool used for the cluster

nodePoolNamestring

Name of the node pool used for the cluster

cloudProviderUuidstring

UUID of the cloud provider used to create this cluster

cloudProviderNamestring

Name of the cloud provider used to create this cluster

cloudProviderTypestring

Type of the cloud provider used to create this cluster

regionstring

Cloud provider region in which the cluster was created

masterFlavorstring

Node flavor used for master node

monitoringstring

Check whether monitoring is enabled on the cluster

workerFlavorstring

Node flavor used for worker node

sshKeystring

Public SSH key associated with the cluster nodes

serviceFqdnstring

FQDN used to reference cluster services

amistring

AMI ID used to provision cluster nodes

domainIdstring

Domain used for cluster FQDNs

numSpotWorkersstring

Number of spot workers

spotWorkerFlavorstring

Node falvor used for spot workers

spotPricestring

Pricing of the spot instances

numMaxSpotWorkersstring

Maximum number of spot workers

isPrivateboolean

Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true.

usePf9Domainstring

Set to true if platform9.net domain is used, false otherwise

internalElbboolean

Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work

azsarray[string]

Availability zone(s) the cluster is deployed in

httpProxystring

The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN

privateSubnetsarray[string]

The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set

subnetsarray[string]
vpcstring

If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true

customAmistring

The custom ami name which can be specified by a user

deployLuigiOperatorinteger

Set to 1 if Luigi is deployed otherwise 0

deployKubevirtinteger

Set to 1 if Kubevirt is deployed otherwise 0

canUpgradeboolean

Field is set to true if the cluster can be upgraded, false otherwise

networkPluginstring

Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave

allowWorkloadsOnMasterinteger

Field is set to 1 if the master nodes can run non-critical workloads

tagsobject

User defined key-value pairs represented as a JSON object

k8sApiPortstring

Port on which K8S API Server will listen, 443 by default

masterlessboolean

Set to true if creating a masterless cluster

masterVipIpv4string

API server Virtual IP that provides failover if specified for the cluster. Defaults to empty string

masterVipIfacestring

The interface that VIP attaches to if specified. Defaults to empty string

enableMetallbboolean

1 if metallb enabled. Defaults to 0

metallbCidrstring

Comma separated pools of IPs like A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P that metallb will manage if specified

masterVipVrouterIdstring

Virtual router id choosen for the cluster. Range: 0-254. Emptry string if masterVipIpv4 not specified

calicoV4BlockSizestring

Subnet size per node for the Calico network, in CIDR notation (e.g. 26)

calicoIpIpModestring

IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet

calicoNatOutgoinginteger

Field is set to 1 if Calico nodes need to NAT north-south egress traffic.

calicoIPv4string

ipv4 address detection for host e.g. autodetect ipv4 interface

calicoIPv4DetectionMethodstring

ipv4 detection method for network interface. e.g. first-found finds first found network interface

calicoIPv6string

ipv6 address detection for host e.g. autodetect ipv6 interface

calicoIPv6DetectionMethodstring

ipv6 detection method for network interface. e.g. first-found finds first found network interface

calicoIPv6PoolCidrstring

CIDR for ipv6 pool

calicoIPv6PoolBlockSizestring

The CIDR size of allocation blocks used by this pool.(e.g. 116)

calicoIPv6PoolNatOutgoinginteger

Field is set to 1 if Calico nodes need to NAT north-south egress traffic.

felixIPv6Supportboolean

ipv6 support for Felix

calicoNodeCpuLimitstring

Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico.

calicoNodeMemoryLimitstring

Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico.

calicoTyphaCpuLimitstring

Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico.

calicoTyphaMemoryLimitstring

Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico.

calicoControllerCpuLimitstring

Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico.

calicoControllerMemoryLimitstring

Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico.

etcdVersionstring

etcd version

mtuSizestring

MTU for container network interfaces. Optional and used for the Calico network backend

cpuManagerPolicystring

options: none, static; default: none

topologyManagerPolicystring

options: none, best-effort, restricted, single-numa-node; default: none

reservedCPUsstring

list of CPUs to be reserved for the system. Ex: 1-3,5

dockerPrivateRegistrystring

(optional) URL of private Docker registry to fetch Platform9 images from

quayPrivateRegistrystring

(optional) URL of private Quay registry to fetch Platform9 images from

gcrPrivateRegistrystring

(optional) URL of private GCR registry to fetch Platform9 images from

k8sPrivateRegistrystring

(optional) URL of private K8S registry to fetch Platform9 images from

useHostnameboolean

(optioanl) If set to true nodes will be registered in the cluster using hostname instead of IP address. This option is only applicable to IPv4 hosts. This option is ignored when deploying clusters on IPv6 enabled hosts and public clouds - AWS, Azure, etc.

enableProfileAgentboolean

(optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles.

enableCatapultMonitoringboolean

(optional) If set to true (default value) platform9 Catapult monitoring will be deployed on the cluster

dockerCentosPackageRepoUrlstring

(optional) URL of the centos repo to be used for docker installation, this URL is added as a first mirror optiopn

dockerUbuntuPackageRepoUrlstring

(optional) URL of the ubuntu repo to be used for docker installation, this URL is added as a first mirror option

containerRuntimestring

(optional) Container runtime for this cluster. Valid values: [docker, containerd]

certExpiryHrsinteger

(optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs.

addonOperatorImageTagstring

(optional) addon operator image tag for this cluster.

403

unauthorized to perform this operation

Response
Copy

Creates a cluster using auto deploy or manual mode

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cluster belongs to

Request Body
objectobject
allowWorkloadsOnMasterinteger

Field is set to 1 if the master nodes can run non-critical workloads

amistring

AMI ID used to provision cluster nodes

appCatalogEnabledinteger

DEPRECATED. Field doesn't lead to any action on the cluster now. Field is set to 1 if app catalog is enabled, 0 otherwise, applicable also for manual deploy

azsarray[string]

Availability zone(s) the cluster is deployed in

calicoV4BlockSizestring

Subnet size per node for the Calico network, in CIDR notation (e.g. 26)

calicoIpIpModestring

IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet

calicoNatOutgoingboolean

Field is set to true if Calico nodes need to NAT north-south egress traffic.

calicoNodeCpuLimitstring

Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico.

calicoNodeMemoryLimitstring

Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico.

calicoTyphaCpuLimitstring

Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico.

calicoTyphaMemoryLimitstring

Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico.

calicoControllerCpuLimitstring

Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico.

calicoControllerMemoryLimitstring

Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico.

certExpiryHrsinteger

(optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs.

containersCidrstring

CIDR used for container IP addresses, applicable also for manual deploy

deployLuigiOperatorinteger

Set to 1 if Luigi is deployed otherwise 0

deployKubevirtinteger

Set to 1 if Kubevirt is deployed otherwise 0

dockerLiveRestoreEnabledboolean

Enables the use of Docker live restore as described here: https://docs.docker.com/config/containers/live-restore/

domainIdstring

Domain used for cluster FQDNs

enableMetallbboolean

If true, install MetalLB to support the loadbalancer service-type

enableCASboolean

If true, cluster autoscaling is enabled (only for AWS clusters).

isEtcdBackupEnabledboolean

Set to true if etcd backup should be enabled, false otherwise

intervalInMinsinteger

etcd backup interval, specified in minutes

intervalInHoursinteger

etcd backup interval, specified in Hours

dailyBackupTimestring

etcd backup Timestamp for daily backup, specified in format 'HH:MM'

maxIntervalBackupCountinteger

max number of Backups retention for interval type backups

maxTimestampBackupCountinteger

max number of Backups retention for Timestamp type backups

storageTypestring

Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk

localPathstring

Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only.

etcdHeartbeatIntervalMsinteger

Frequency with which master node will notify workers

etcdElectionTimeoutMsinteger

This timeout is how long a worker node will go without hearing a heartbeat,before attempting to become master

externalDnsNamestring

Optional DNS name for API endpoint. This field is autogenerated when usePf9Domain is set, also applicable for manual deploy

httpProxystring

The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN

internalElbboolean

Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html. Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work

isPrivateboolean

Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true.

k8sApiPortstring

Port on which K8S API Server will listen, 443 by default

masterlessboolean

Set to true if creating a masterless cluster

masterFlavorstring

Node flavor used for master node

masterVipIpv4string

API server Virtual IP that provides failover. When specified, deploy keepalived setup to cluster master nodes together

masterVipIfacestring

If masterVipIpv4 is specified, this field is required. Specify the interface that the VIP attaches to

metallbCidrstring

If enableMetallb is true, specify the comma-separated pools of IPs that MetalLB will manage (for example: A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P)

mtuSizestring

MTU for container network interfaces. Optional and used for the Calico network backend

namestring

Name of the cluster, applicable also for manual deploy

networkPluginstring

Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave

nodePoolUuidstring

UUID of the node pool used for the cluster, applicable also for manual deploy

numMastersinteger

Number of master nodes in the cluster

numWorkersinteger

Number of worker nodes in the cluster

numMinWorkersinteger

This parameter is required if enableCAS is set to true. This is the minimum number of worker nodes in ASG

numMaxWorkersinteger

This parameter is required if enableCAS is set to true. This is the maximum number of worker nodes in ASG

privateSubnetsarray[string]

The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set

privilegedboolean

Field is set to 1 if cluster runs privileged containers, 0 otherwise

regionstring

Cloud provider region in which the cluster was created

runtimeConfigstring

Applicable also for manual deploy

serviceFqdnstring

FQDN used to reference cluster services

servicesCidrstring

CIDR used for service IP addresses, applicable also for manual deploy

sshKeystring

Public SSH key associated with the cluster nodes

subnetsarray[string]
tagsobject

User defined key-value pairs represented as a JSON object

usePf9Domainboolean

Set to true if platform9.net domain is used, false otherwise

vpcstring

If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true

workerFlavorstring

Node flavor used for worker node

additionalAWSDiskSizeinteger

Size for block device added for EMP clusters

kubeRoleVersionstring

Pf9-kube role version to be used when bringing up the cluster.

containerRuntimestring

(optional) Container runtime for this cluster. Valid values: [docker, containerd]

addonOperatorImageTagstring

(optional) addon operator image tag for this cluster.

addonVersionsobject
corednsstring

coredns version

dashboardstring

dashboard version

dns-autoscalerstring

dns-autoscaler version

kubevirtstring

kubevirt version

luigistring

luigi version

metal3string

metal3 version

metallbstring

metallb version

metricsserverstring

metricsserver version

monitoringstring

monitoring version

profileagentstring

profileagent version

cluster-autoscaler-awsstring

cluster-autoscaler-aws version

cluster-autoscaler-azurestring

cluster-autoscaler-azure version

POST /v3/{project_uuid}/clusters
Copy
Responses application/json
200

OK, if cluster create request was submitted successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Get details of a cluster

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

GET /v3/{project_uuid}/clusters/{uuid}
Copy
Responses application/json
200

OK

namestring

Name of the cluster

uuidstring

UUID of the cluster

containersCidrstring

CIDR used for container IP addresses

servicesCidrstring

CIDR used for service IP addresses

isKubernetesinteger

Field is set to 1 if the cluster is a Kubernetes cluster, 0 otherwise

isMesosinteger

Field is set to 1 if the cluster is a Mesos cluster, 0 otherwise

isSwarminteger

Field is set to 1 if the cluster is a Swarm cluster, 0 otherwise

externalDnsNamestring

Optional DNS name for API endpoint. This field is autogenerated when pf9 domain is used.

debugboolean

If field is set to true,debug logs will be enabled

masterIpstring

Ip of the master node, applicable only for cloud provider type 'openstack'

statusstring

Status of the cluster

masterStatusstring

Status of the master nodes. 'healthy' means all masters are healthy. 'partially healthy' means quorum number of masters are healthy, but some are not. 'unhealthy' means quorum number of master are unhealthy

workerStatusstring

Status of the worker nodes. 'healthy' means all workers are healthy. 'partially healthy' means more than 50% of the workers are healthy, rest are unhealthy. 'unhealthy' means more than 50% of the workers are unhealthy

ipv6boolean

Set to true if ipv6 is enabled

kubeRoleVersionstring

Pf9-kube role version to be used when bringing up the cluster.

canMinorUpgradeinteger

Set to 1 if minor upgrade is possible, 0 otheriwse.

minorUpgradeRoleVersionstring

Role version of minor upgrade.

canPatchUpgradeinteger

Set to 1 if patch upgrade is possible, 0 otherwise.

patchUpgradeRoleVersionstring

Role version of patch upgrade.

upgradingTostring

Set to the version the cluster is upgrading to, otherwise null.

flannelIfaceLabelstring

The interface used by flannel for interhost communication

flannelPublicIfaceLabelstring

The IP address used as the flannel public IP for the nodes in the cluster

dockerRootstring

Root directory for docker

etcdDataDirstring

Data directory for etcd. The field is applicable to master nodes only

lastOpstring

The last operation such as node attach or node detach that was performed on the cluster

lastOkstring

The timestamp when the cluster last reported an OK status

keystoneEnabledinteger

Field is set to 1 if keystone is enabled, 0 otherwise

authzEnabledinteger

Field is set to 1 if authz is enabled, 0 otherwise

taskStatusstring

Status of the last task that run on the cluster.

taskErrorstring

Error details if the last task on cluster did not succeed

kubeProxyModestring

The mode which kube-proxy is running in

numMastersinteger

Number of master nodes in the cluster

numWorkersinteger

Number of worker nodes in the cluster

enableCASboolean

If value is 1,cluster autoscaling is enabled (only for AWS clusters).

numMinWorkersinteger

This parameter is required if enableCAS is set to true. This is the minimum number of worker nodes in ASG

numMaxWorkersinteger

This parameter is required if enableCAS is set to true. This is the maximum number of worker nodes in ASG

etcdHeartbeatIntervalMsinteger

Frequency with which master node will notify workers

etcdElectionTimeoutMsinteger

This timeout is how long a worker node will go without hearing a heartbeat,before attempting to become master

privilegedinteger

Field is set to 1 if cluster runs privileged containers, 0 otherwise

apiserverStorageBackendstring

The kube-apiserver storage backend for persistance, etcd3(default)

appCatalogEnabledinteger

DEPRECATED. Always disabled now. Field is set to 1 if app catalog is enabled, 0 otherwise

projectIdstring

UUID of the Keystone project that this cluster is part of

runtimeConfigstring
isEtcdBackupEnabledboolean

Set to true if etcd backup should be enabled, false otherwise

intervalInMinsinteger

etcd backup interval, specified in minutes

intervalInHoursinteger

etcd backup interval, specified in Hours

dailyBackupTimestring

etcd backup Timestamp for daily backup, specified in format 'HH:MM'

maxIntervalBackupCountinteger

max number of Backups retention for interval type backups

maxTimestampBackupCountinteger

max number of Backups retention for Timestamp type backups

storageTypestring

Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk

localPathstring

Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only.

taskStatusstring

Status indicating whether the backup cron job on the Kubernetes cluster was successfully setup. Can be 'success' or 'error'

taskErrorDetailstring

Details of the error occurred of the taskStatus returned is 'error'

nodePoolUuidstring

UUID of the node pool used for the cluster

nodePoolNamestring

Name of the node pool used for the cluster

cloudProviderUuidstring

UUID of the cloud provider used to create this cluster

cloudProviderNamestring

Name of the cloud provider used to create this cluster

cloudProviderTypestring

Type of the cloud provider used to create this cluster

regionstring

Cloud provider region in which the cluster was created

masterFlavorstring

Node flavor used for master node

monitoringstring

Check whether monitoring is enabled on the cluster

workerFlavorstring

Node flavor used for worker node

sshKeystring

Public SSH key associated with the cluster nodes

serviceFqdnstring

FQDN used to reference cluster services

amistring

AMI ID used to provision cluster nodes

domainIdstring

Domain used for cluster FQDNs

numSpotWorkersstring

Number of spot workers

spotWorkerFlavorstring

Node falvor used for spot workers

spotPricestring

Pricing of the spot instances

numMaxSpotWorkersstring

Maximum number of spot workers

isPrivateboolean

Set to true if nodes are deployed using public subnet, false otherwise, applicable also for manual deploy. This parameter is required if internalElb is set to true.

usePf9Domainstring

Set to true if platform9.net domain is used, false otherwise

internalElbboolean

Set to true if load balancer is an internal load balancer or false for an Internet-facing load balancer. More information here: https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-internal-load-balancers.html Setting this parameter to true requires that isPrivate is set to true. If the private subnet selected is not configured to route IP packets through a VPN, then an httpProxy is required for node communications to work

azsarray[string]

Availability zone(s) the cluster is deployed in

httpProxystring

The http proxy used for node communications. This parameter is required when internalElb is set to true and the private subnet selected does not route IP packets to the internet through a VPN

privateSubnetsarray[string]

The private subnet ID to which the cluster is deployed. This parameter is optional if vpc (VPC ID) is set. This parameter is required if vpc (VPC ID) is set and isPrivate is set to true. This parameter is ignored if vpc (VPC ID) is not set

subnetsarray[string]
vpcstring

If set, creates cluster using this VPC ID. Otherwise, the cluster is deployed on a new VPC. This parameter is required if internalElb is set to true

customAmistring

The custom ami name which can be specified by a user

deployLuigiOperatorinteger

Set to 1 if Luigi is deployed otherwise 0

deployKubevirtinteger

Set to 1 if Kubevirt is deployed otherwise 0

canUpgradeboolean

Field is set to true if the cluster can be upgraded, false otherwise

networkPluginstring

Network backend to use for container networking. Defaults to flannel. Supported choices are flannel, calico, noop, weave

allowWorkloadsOnMasterinteger

Field is set to 1 if the master nodes can run non-critical workloads

tagsobject

User defined key-value pairs represented as a JSON object

k8sApiPortstring

Port on which K8S API Server will listen, 443 by default

masterlessboolean

Set to true if creating a masterless cluster

masterVipIpv4string

API server Virtual IP that provides failover if specified for the cluster. Defaults to empty string

masterVipIfacestring

The interface that VIP attaches to if specified. Defaults to empty string

enableMetallbboolean

1 if metallb enabled. Defaults to 0

metallbCidrstring

Comma separated pools of IPs like A.B.C.D-E.F.G.H, I.J.K.L-M.N.O.P that metallb will manage if specified

masterVipVrouterIdstring

Virtual router id choosen for the cluster. Range: 0-254. Emptry string if masterVipIpv4 not specified

calicoV4BlockSizestring

Subnet size per node for the Calico network, in CIDR notation (e.g. 26)

calicoIpIpModestring

IP-IP encapsulation mode for Calico network. Choose: Always, Never, CrossSubnet

calicoNatOutgoinginteger

Field is set to 1 if Calico nodes need to NAT north-south egress traffic.

calicoIPv4string

ipv4 address detection for host e.g. autodetect ipv4 interface

calicoIPv4DetectionMethodstring

ipv4 detection method for network interface. e.g. first-found finds first found network interface

calicoIPv6string

ipv6 address detection for host e.g. autodetect ipv6 interface

calicoIPv6DetectionMethodstring

ipv6 detection method for network interface. e.g. first-found finds first found network interface

calicoIPv6PoolCidrstring

CIDR for ipv6 pool

calicoIPv6PoolBlockSizestring

The CIDR size of allocation blocks used by this pool.(e.g. 116)

calicoIPv6PoolNatOutgoinginteger

Field is set to 1 if Calico nodes need to NAT north-south egress traffic.

felixIPv6Supportboolean

ipv6 support for Felix

calicoNodeCpuLimitstring

Corresponds to the CALICO_NODE_CPU_LIMIT environment variable in Calico.

calicoNodeMemoryLimitstring

Corresponds to the CALICO_NODE_MEMORY_LIMIT environment variable in Calico.

calicoTyphaCpuLimitstring

Corresponds to the CALICO_TYPHA_CPU_LIMIT environment variable in Calico.

calicoTyphaMemoryLimitstring

Corresponds to the CALICO_TYPHA_MEMORY_LIMIT environment variable in Calico.

calicoControllerCpuLimitstring

Corresponds to the CALICO_CONTROLLER_CPU_LIMIT environment variable in Calico.

calicoControllerMemoryLimitstring

Corresponds to the CALICO_CONTROLLER_MEMORY_LIMIT environment variable in Calico.

etcdVersionstring

etcd version

mtuSizestring

MTU for container network interfaces. Optional and used for the Calico network backend

cpuManagerPolicystring

options: none, static; default: none

topologyManagerPolicystring

options: none, best-effort, restricted, single-numa-node; default: none

reservedCPUsstring

list of CPUs to be reserved for the system. Ex: 1-3,5

dockerPrivateRegistrystring

(optional) URL of private Docker registry to fetch Platform9 images from

quayPrivateRegistrystring

(optional) URL of private Quay registry to fetch Platform9 images from

gcrPrivateRegistrystring

(optional) URL of private GCR registry to fetch Platform9 images from

k8sPrivateRegistrystring

(optional) URL of private K8S registry to fetch Platform9 images from

useHostnameboolean

(optioanl) If set to true nodes will be registered in the cluster using hostname instead of IP address. This option is only applicable to IPv4 hosts. This option is ignored when deploying clusters on IPv6 enabled hosts and public clouds - AWS, Azure, etc.

enableProfileAgentboolean

(optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles.

enableCatapultMonitoringboolean

(optional) If set to true (default value) platform9 Catapult monitoring will be deployed on the cluster

dockerCentosPackageRepoUrlstring

(optional) URL of the centos repo to be used for docker installation, this URL is added as a first mirror optiopn

dockerUbuntuPackageRepoUrlstring

(optional) URL of the ubuntu repo to be used for docker installation, this URL is added as a first mirror option

containerRuntimestring

(optional) Container runtime for this cluster. Valid values: [docker, containerd]

certExpiryHrsinteger

(optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs.

addonOperatorImageTagstring

(optional) addon operator image tag for this cluster.

403

unauthorized to perform this operation

Response
Copy

Update the properties of a cluster specified by the cluster_uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

Request Body
objectobject
numWorkersinteger

Number of worker nodes in the cluster. For AWS cluster, this parameter is relevant only if cluster autoscaling is disabled

numMinWorkersinteger

Minimum number of worker nodes in ASG for AWS cluster. This parameter is relevant only if cluster autoscaling is enabled

numMaxWorkersinteger

Maximum number of worker nodes in ASG for AWS cluster. This parameter is relevant only if cluster autoscaling is enabled

isEtcdBackupEnabledboolean

Set to true if etcd backup should be enabled, false otherwise

intervalInMinsinteger

etcd backup interval, specified in minutes

intervalInHoursinteger

etcd backup interval, specified in Hours

dailyBackupTimestring

etcd backup Timestamp for daily backup, specified in format 'HH:MM'

maxIntervalBackupCountinteger

max number of Backups retention for interval type backups

maxTimestampBackupCountinteger

max number of Backups retention for Timestamp type backups

storageTypestring

Storage type for the etcd backup. Only 'local' is current supported type. 'local' saves backup to the node's local disk

localPathstring

Path on the local filesystem where the etcd backup should be stored. For 'local' storage type only.

tagsobject

User defined key-value pairs represented as a JSON object

customAmistring

The custom ami name which can be specified by a user

enableProfileAgentboolean

(optional) If set to true platform9 profile engine agent will be deployed on the cluster. This agent is required to be able to use profiles.

certExpiryHrsinteger

(optional) Number of hours before user certificates in kubeconfig expires, should be greater than 0 if set. Default is 24hrs.

PUT /v3/{project_uuid}/clusters/{uuid}
Copy
Responses application/json
200

OK, if cluster upgrade request was submitted successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Delete a cluster from PMK as specified by the cluster UUID

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

DELETE /v3/{project_uuid}/clusters/{uuid}
Copy
Responses application/json
200

OK, if cluster delete request was submitted successfully

No response body
403

Unauthorized to perform this operation

Response
Copy

Get the kubeconfig blob for the specific cluster

Auth
Headers
X-Auth-Tokenstring
Path Params
cluster_uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

Query String
force_cert_authboolean

If true, generates certificate based kubeconfig. Default is false.

GET /v3/{project_uuid}/kubeconfig/{cluster_uuid}
Copy
Responses application/octet-stream
200

The response is a blob sent with the Content-Type ‘application/octet-stream’

No response body
403

Unauthorized to perform this operation

Response
Copy

Generate token to be used by web cli

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

POST /v3/{project_uuid}/webcli/{uuid}
Copy
Responses application/json
200

OK

tokenstring

Web cli token

403

Unauthorized to perform this operation

Response
Copy

Attach nodes to a cluster. In a manual deployed cluster, nodes can be added to a cluster using this API. If the cluster has no masters, multiple masters can be attached simultaneously.

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

Request Body
arrayarray[object]
uuidstring

UUID of the node

isMasterboolean

true if the node should be attached as master, false otherwise.

POST /v3/{project_uuid}/clusters/{uuid}/attach
Copy
Responses application/json
200

OK, if the node get attached to the cluster

No response body
403

Unauthorized to perform this operation

Response
Copy

Detach nodes from a cluster. In a manual deployed cluster, nodes can be removed from a cluster using this API.

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cluster belongs to

Request Body
arrayarray[object]
uuidstring

UUID of the node

isMasterboolean

true if the node should be attached as master, false otherwise.

POST /v3/{project_uuid}/clusters/{uuid}/detach
Copy
Responses application/json
200

OK, if the node get attached to the cluster

No response body
403

Unauthorized to perform this operation

Response
Copy

Upgrade a cluster, identified by the uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cloud provider account belongs to

Request Body
objectobject
batchUpgradePercentnumber

Number between 1-100 which represents the percent of worker nodes to upgrade in parallel at once during an upgrade

containerRuntimestring

(optional) Container runtime for this cluster. Valid values: [docker, containerd]

addonOperatorImageTagstring

(optional) addon operator image tag for this cluster.

addonVersionsobject
corednsstring

coredns version

dashboardstring

dashboard version

dns-autoscalerstring

dns-autoscaler version

kubevirtstring

kubevirt version

luigistring

luigi version

metal3string

metal3 version

metallbstring

metallb version

metricsserverstring

metricsserver version

monitoringstring

monitoring version

profileagentstring

profileagent version

cluster-autoscaler-awsstring

cluster-autoscaler-aws version

cluster-autoscaler-azurestring

cluster-autoscaler-azure version

POST /v3/{project_uuid}/clusters/{uuid}/upgrade
Copy
Responses application/json
200

OK, if upgrade request is successfully issued

No response body
403

Unauthorized to perform this operation

Response
Copy

Restart PMK service on all nodes in a cluster, identified by the uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cloud provider account belongs to

POST /v3/{project_uuid}/clusters/{uuid}/restart
Copy
Responses application/json
200

OK, if restart request is successfully issued

No response body
403

Unauthorized to perform this operation

Response
Copy

Restart PMK service on all worker nodes in a cluster, identified by the uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cloud provider account belongs to

POST /v3/{project_uuid}/clusters/{uuid}/restartWorkers
Copy
Responses application/json
200

OK, if restart request is successfully issued

No response body
403

Unauthorized to perform this operation

Response
Copy

Restart PMK service on all master nodes in a cluster, identified by the uuid

Auth
Headers
X-Auth-Tokenstring
Path Params
uuidstring

UUID of the cluster

project_uuidstring

UUID of the project the cloud provider account belongs to

POST /v3/{project_uuid}/clusters/{uuid}/restartMasters
Copy
Responses application/json
200

OK, if restart request is successfully issued

No response body
403

Unauthorized to perform this operation

Response
Copy

Get list of nodes on which PMK service is getting restarted

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the cloud provider account belongs to

GET /v3/{project_uuid}/currentRollingRestarts
Copy
Responses application/json
200

OK

arrayarray
namestring

UUID of the node

runStateboolean

True if the node is up

403

Unauthorized to perform this operation

Response
Copy

Get details of all node pools

Auth
Headers
X-Auth-Tokenstring
Path Params
project_uuidstring

UUID of the project the node pool belongs to

GET /v3/{project_uuid}/nodePools
Copy
Responses application/json
200

OK

arrayarray
namestring

Name of the node pool

uuidstring

UUID of the node pool

cloudProviderUuidstring

UUID of the associated cloud provider

cloudProviderNamestring

Name of the associated cloud provider

403

unauthorized to perform this operation

Response
Copy