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
The official installation process requires cert-manager, please make sure to install it first and wait for it to fully initialize.
On every source code change, a new IrSO image is built and published at
quay.io/metal3-io/ironic-standalone-operator. Starting with release 0.5.1,
we also publish a manifest for each release. You can install it this way:
IRSO_VERSION=0.11.0
kubectl apply -f \
https://github.com/metal3-io/ironic-standalone-operator/releases/download/v${IRSO_VERSION}/install.yaml
kubectl wait --for=condition=Available --timeout=120s \
-n ironic-standalone-operator-system deployment/ironic-standalone-operator-controller-manager
For older versions (or to use an unreleased checkout) 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
Feature gates
IrSO supports feature gates as a means for enabling (or disabling) experimental, less stable, or recently added features. The most up-to-date list of feature gates can be obtained from the built-in help of the controller manager. For example, if you have access to source code:
$ make build
$ ./bin/manager -h
...
-feature-gates value
A set of key=value pairs that describe feature gates:
AllAlpha=true|false (ALPHA - default=false)
AllBeta=true|false (BETA - default=false)
HighAvailability=true|false (BETA - default=false)
Overrides=true|false (BETA - default=false)
...
Feature gates can be enabled or disabled using the -feature-gates flag or the
FEATURE_GATES environment variable. For example, you can update the
controller deployment with
spec:
template:
spec:
containers:
- name: manager
env:
- name: FEATURE_GATES
value: HighAvailability=true,Overrides=true
to enable container overrides and the HA architecture.
WARNING: disabling a feature gate does not automatically disables the corresponding feature in existing Ironic resources. These resources will enter an error state and must be fixed manually. It is recommended to update all resources before disabling a previously enabled feature gate.
API resources
IrSO uses the Ironic custom resource to manage Ironic itself and all of its auxiliary services.
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 installed by a
deployment called <Ironic Name>-service:
ironicis the main API service, as well as the conductor process that handles actions on bare-metal machines.httpdis 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-logsis a script that unpacks any ramdisk logs and outputs them for consumption viakubectl logsor similar tools.
There is also a standard init container:
ramdisk-downloaderdownloads images of the deployment/inspection ramdisk and stores them locally for easy access.
When network boot (iPXE) is enabled, another component is deployed:
dnsmasqserves DHCP and functions as a PXE server for bootstrapping iPXE.
With Keepalived support enabled:
keepalivedmanages the IP address on the provisioning interface.
When networking service is enabled, it is started as a separate deployment
called <Ironic Name>-networking. Ironic service accesses it via JSON RPC.
Supported versions
See the supported release versions page for information on which versions of IrSO are currently supported.