BigFix Inventory (BFI) Discovery & NFD Deployment via GitOps
Overview
This guide details the architecture, design decisions, and configuration required to deploy the HCL BigFix Inventory (BFI) discovery and sub-capacity licensing integration on Red Hat OpenShift Container Platform (OCP).
This implementation rigorously adheres to and matches the standardized Helm component structures, sync-waves, and folder layouts defined in the helm-component-pattern artifact collection.
The BFI discovery integration is a headless, API-level integration. It does not install a resident server. Instead, it deploys a ServiceAccount and a long-lived API token that allows the external BigFix Inventory server to query OpenShift APIs. It also deploys the Red Hat Node Feature Discovery (NFD) Operator to map and label host CPU sockets and cores, which BFI queries to calculate Processor Value Unit (PVU) licensing.
Architecture & Integration Flow
The integration bridges the external BFI server and the OpenShift Control Plane:
- API Discovery: The external BFI server connects via the
big-fix-serviceaccounttoken to readnodes,namespaces, andvirtualmachineinstances(to track OpenShift Virtualization VM cores). - CPU Topology Labeling: The NFD Operator discovers core and socket details on each bare-metal or virtual node, and matches them against an ILMT-specific
NodeFeatureRuleto apply standard capacity labels (e.g.,ibm.ilmt.cores,ibm.ilmt.sockets). BFI queries these labels to generate compliant sub-capacity reports.
GitOps Sync-Wave Strategy
Applying operators and their dependent Custom Resources (CRs) simultaneously inside GitOps can cause synchronization deadlocks because the Custom Resource Definitions (CRDs) do not exist when the CR templates are parsed.
To ensure a seamless, zero-race-condition bootstrap, we separate the operator from its CR instances and structure the workloads across Argo CD Sync-Waves:
| Wave | Component | Action |
|---|---|---|
2 | components/openshift-nfd/operator | Installs the NFD namespace, OLM OperatorGroup, and Subscription to register the CRDs. |
3 | components/openshift-nfd/instance | Installs the NodeFeatureDiscovery controller instance custom resource. |
4 | components/hcl-bigfix-discovery | Deploys the discovery namespace, API Token Secret, RBAC rules, and the NFD NodeFeatureRule CR. |
Configuration Details
RBAC Permissions for BFI Server
The external BFI Server relies on the ServiceAccount token to authenticate and call APIs. The ClusterRoles must be isolated to read-only resource lists:
Escaping Go Templates in Helm for NFD
The NFD NodeFeatureRule injects values into labels using Go template notation ({{ }}). Because Helm also parses Go templates, you must escape these braces in Helm source templates:
This forces Helm to output the braces literally, allowing the NFD operator to interpret them at runtime.
Common Pitfalls
- ServiceAccount Tokens in OpenShift 4.11+:
Kubernetes 1.24+ and OpenShift 4.11+ no longer generate static long-lived token Secrets automatically when a ServiceAccount is created. You must manually define a Secret of type
kubernetes.io/service-account-tokenwith the ServiceAccount annotation: - CRD Lifecycle Race Conditions:
Do not combine NFD Operators and
NodeFeatureRuleinto a single Helm component. Always run them in separate waves or as distinct applications to ensure the operator is running and ready to handle theNodeFeatureRuleCustom Resource.
References
- HCL BigFix Inventory OpenShift Integration - Step-by-step configurations for sub-capacity reporting.