The Machine API Operator is a Kubernetes operator written in Go that manages the lifecycle of custom resource definitions, controllers, and RBAC objects for machine management in OpenShift clusters. It enables declarative specification of desired machine state through Kubernetes-native APIs, extending the platform's infrastructure automation capabilities.
The operator deploys and manages platform-specific machine controllers across multiple cloud providers and infrastructure platforms. Its architecture separates core machine lifecycle logic from provider-specific implementations. The core logic resides in the main repository and is imported by external provider repositories such as machine-api-provider-aws, machine-api-provider-gcp, machine-api-provider-azure, cluster-api-provider-openstack, cluster-api-provider-baremetal, and cluster-api-provider-ibmcloud. These external providers implement their own actuators and build container images that the Machine API Operator then deploys. The VSphere provider is an exception, with its actuator implemented directly within the main repository.
The operator manages three primary custom resource definitions: MachineSet, Machine, and MachineHealthCheck. The MachineSet controller ensures the presence of an expected number of machine replicas with specified provider configurations. The Machine controller creates provider instances corresponding to Machine objects. The Nodelink controller establishes machine-to-node associations based on IP addresses or provider IDs and annotates nodes with machine name labels. The MachineHealthCheck controller monitors machines against healthiness criteria and triggers remediation when necessary.
Activity tracking shows median issue and pull request response latency of approximately 1537 hours with a mean of 1646 hours. The most active issue labels include lifecycle/rotten and tide/merge-blocker, indicating ongoing maintenance concerns. Primary contributors tracked include gojeaqui with five events, sebrandon1 with three events, and elmiko with two events. The repository shares contributors with portainer/portainer, openshift/installer, and openshift/coredns, reflecting its integration within the broader OpenShift ecosystem.
The operator is designed to work with the Cluster Version Operator and functions within OpenShift clusters deployed by the Installer. It can also run on vanilla Kubernetes clusters with prerequisite assets including the openshift-machine-api namespace and appropriate CRD definitions. Development and testing support includes a Kubemark provider configuration for testing purposes over Kubernetes clusters.
Testing infrastructure relies on the Prow CI system with configurations stored in the openshift/release repository. Unit tests and end-to-end AWS operator tests are available, with the latter requiring a running cluster and KUBECONFIG environment variable. Bug tracking occurs through the OpenShift Bugzilla system under the Cloud Compute product category. The repository is classified across multiple domains including Kubernetes, OpenShift, Machine Management, Infrastructure Automation, Cloud Provisioning, Node Scaling, Cluster Operations, Compute Resources, Lifecycle Automation, and Platform Operator functionality.