/managed-node-metadata-operator

Directional metadata sync operator from MachineSets to existing Nodes

Primary LanguageShellApache License 2.0Apache-2.0

Node Metadata Operator for OpenShift Dedicated

codecov Go Report Card GoDoc License

Directional metadata sync operator from MachineSets to existing Nodes

General Overview

Adding node labels and taints to non-default MachinePools is allowed through OCM; however, due to intentional limitations in OpenShift’s machine-api-operator, labels and taints are not reconciled to existing machines within a machine set. Today you must scale down the MachinePool to 0 and back up again to update nodes. This is obviously undesirable and doesn’t present a good user experience for customers.

Managed OpenShift does not allow customers to label nodes directly.

This managed-node-metadata-operator will attempt to watch MachineSet objects and reconcile any labels or taints that are added to the corresponding Nodes within the pool.

flowchart TD
    A[User updates MachineSet in OCM] --> B[Hive applies changes to MachineSet on cluster]
    B --> C;
    subgraph Managed Node Metadata Operator
      C[MNMO Picks up change to MachineSet and begins reconcile] --> D[Loop through all Machines in Machineset and Sync Label/Taint changes];
        D --> E[Remove Taints/Labels not present in MachineSet and present on Machine];
      subgraph Per Machine
        E --> F[Apply Taints/Labels present in MachineSet and not present on Machine];
        F --> G[Get referenced Node]
        G --> H[Remove Taints/Labels not present in Machine and present on Node];
        H --> I[Apply Taints/Labels present in Machine and not present on Node];
      end
    end

Development and Testing

Refer to the development and testing guide to understand how to run and test the operator.

Boilerplate

This repository subscribes to the openshift/golang-osd-operator convention of boilerplate. See the README for details about the functionality that brings in.