Ironic Standalone Operator

Ironic Standalone Operator (IrSO) is a Kubernetes controller that installs and manages Ironic in a configuration suitable for Metal3. IrSO has the following features:

  • Flexible networking configuration, support for Keepalived.
  • Using SQLite or MariaDB as the database backend.
  • Optional support for a DHCP service (dnsmasq).
  • Optional support for automatically downloading an IPA image.

IrSO uses ironic-image under the hood.

Installing Ironic Standalone Operator

On every source code change, a new IrSO image is built and published at quay.io/metal3-io/ironic-standalone-operator. To install it in your cluster, you can use the Kustomize templates provided in the source repository:

git clone https://github.com/metal3-io/ironic-standalone-operator
cd ironic-standalone-operator
git checkout -b <DESIRED BRANCH OR main>

make install deploy
kubectl wait --for=condition=Available --timeout=60s \
  -n ironic-standalone-operator-system deployment/ironic-standalone-operator-controller-manager

API resources

IrSO uses two Custom Resources to manage an Ironic installation:

Ironic manages Ironic itself and all of its auxiliary services.

IronicDatabase manages a MariaDB instance for Ironic (if required).

See installing Ironic with IrSO for information on how to use these resources.

How is Ironic installed?

By default, IrSO installs Ironic as a single pod on a control plane node. This is because Ironic currently requires host networking, and thus it’s not advisable to let it co-exist with tenant workload.

Installed components

An Ironic installation always contains these three components:

  • ironic is the main API service, as well as the conductor process that handles actions on bare-metal machines.
  • httpd is the web server that serves images and configuration for iPXE and virtual media boot, as well as works as the HTTPS frontend for Ironic.
  • ramdisk-logs is a script that unpacks any ramdisk logs and outputs them for consumption via kubectl logs or similar tools.

There is also a standard init container:

  • ramdisk-downloader downloads images of the deployment/inspection ramdisk and stores them locally for easy access.

When network boot (iPXE) is enabled, another component is deployed:

  • dnsmasq serves DHCP and functions as a PXE server for bootstrapping iPXE.

With Keepalived support enabled:

  • keepalived manages the IP address on the provisioning interface.

Supported versions

A major and minor version can be supplied to the Ironic resource to request a specific branch of ironic-image (and thus Ironic). Here are supported version values for each branch and release of the operator:

Operator versionIronic version(s)Default version
latest (main)27.0latest

NOTE: the special version value latest always installs the latest available version of ironic-image and Ironic.