This section describes the Machine resource used in Mirantis Container Cloud API for the OpenStack-based clusters. The Machine resource describes the machine-level parameters.

For demonstration purposes, the Container Cloud Machine custom resource (CR) can be split into the following major sections:


The Container Cloud Machine custom resource (CR) contains the following fields:

  • apiVersion

  • kind

    Object type that is Machine

The metadata object field of the Machine resource contains the following fields:

  • name

    Name of the Machine object.

  • namespace

    Container Cloud project in which the Machine object has been created.

  • annotations
    • openstack-floating-ip-address

      Automatically generated floating IP which will be associated with an OpenStack instance.

  • labels


      Provider type that matches the provider type in the Cluster object and should be openstack for OpenStack machines.


      Region name that matches the region name in the Cluster object.


      Cluster name that this machine is linked to.


      • For the control plane role of a machine, this label contains any value, for example, "true".

      • For the worker role, this label is absent or does not contain any value.

Configuration example:

kind: Machine
  name: example-control-plane
  namespace: example-ns
  labels: openstack eu example-cluster "true" # remove for worker

spec:providerSpec for instance configuration

The spec object field of the Machine object represents the OpenstackMachineProviderSpec subresource with all required details to create an OpenStack instance. It contains the following fields:

  • apiVersion

  • kind


  • availabilityZone

    Availability zone to launch the OpenStack instance from.

  • flavor

    Flavor reference to the OpenStack instance flavor.

  • image

    Name of the image to use for the OpenStack instance.

  • securityGroups

    List of the security groups IDs assigned to the OpenStack instance.

  • nodeLabels

    List of node labels to be attached to a node for the user to run certain components on separate cluster nodes. The list of allowed node labels is located in the cluster status providerStatus.releaseRef.current.allowedNodeLabels field. Adding of a node label that is not available in the list of allowed node labels is restricted.

Configuration example:

    kind: OpenstackMachineProviderSpec
    availabilityZone: nova
    flavor: kaas.small
    image: bionic-server-cloudimg-amd64-20200724
      - kaas-sg-ctrl-abcdefgh-0123-4567-890a-0a1b2c3d4e5f
      - kaas-sg-glob-abcdefgh-0123-4567-890a-0a1b2c3d4e5f
    - key: openstack-control-plane
      value: enabled


The status object field of the Machine object represents the OpenstackMachineProviderStatus subresource that describes current state of an OpenStack instance and contains the following fields:

  • apiVersion

  • kind


  • conditions

    List of the Machine status condition:

    • type

      Object type

    • ready

      Readiness flag

    • message

      Status details

  • providerInstanceState

    Current state of an OpenStack instance:

    • id

      ID of an OpenStack instance

    • ready

      Readiness flag

    • state

      State of an OpenStack instance

  • hardware

    Machine hardware information:

    • cpu

      CPUs number

    • ram

      RAM capacity (in GB)

  • privateIp

    Private IPv4 address assigned to the instance

  • status

    Current state of a machine:

    • Provision

      A machine is yet to obtain a status

    • Uninitialized

      A machine is yet to obtain the node IP address and host name

    • Pending

      A machine is yet to receive the deployment instructions and it is either not booted yet or waits for the LCM controller to be deployed

    • Prepare

      A machine is running the Prepare phase during which Docker images and packages are being predownloaded

    • Deploy

      A machine is processing the LCM controller instructions

    • Reconfigure

      Some configurations are being updated on a machine

    • Ready

      A machine is deployed and the MKE version is set

Configuration example:

    kind: OpenstackMachineProviderStatus
     - message: Kubelet's NodeReady condition is True
       ready: true
       type: Kubelet
     - message: Swarm state of the machine is ready
       ready: true
       type: Swarm
     - message: LCM Status of the machine is Ready
       ready: true
       type: LCM
      ready: true
      state: ACTIVE
      cpu: 8
      ram: 24
    status: Ready