Is your feature request related to a problem or existing issue? Please describe.
Right now, the readiness condition reporter runs continuously as a sidecar container, constantly checking if components are healthy and updating node conditions. While this works great for components that need ongoing monitoring, it's wasteful for components that only need a one-time bootstrap check.
For example, when a node first starts up, we might want to verify that the CNI plugin is installed and ready before allowing pods to schedule. Once the CNI is ready, there's no real need to keep checking it every 30 seconds forever - the reporter just keeps running and consuming resources even though its job is done. This becomes especially noticeable in large clusters where you might have hundreds or thousands of these reporter containers running unnecessarily.
The Node Readiness Controller itself already understands the concept of "bootstrap-only" versus "continuous" enforcement modes, but the reporter doesn't have a way to exit after completing its bootstrap check. This creates an inconsistency where the controller can be configured for one-time checks, but the reporter always runs continuously regardless.
Describe the solution you'd like
I'd like to add a simple configuration option to the reporter that lets it run in either "bootstrap-only" or "continuous" mode. In bootstrap-only mode, the reporter would check the component's health at regular intervals, and as soon as the component becomes healthy, it would update the node condition one final time and then exit successfully. This would be perfect for init containers that just need to verify initial setup is complete.
In continuous mode (which would be the default to maintain backward compatibility), the reporter would work exactly as it does today - running forever and continuously monitoring the component's health. This is still important for critical dependencies that could fail after initial startup.
The beauty of this approach is that it gives users the flexibility to choose the right monitoring strategy for each component. Some components like CNI plugins might only need bootstrap verification, while others like security agents might need continuous health monitoring. Users could even use both modes together - an init container for bootstrap checks and a sidecar for ongoing health monitoring.
Describe alternatives you've considered
Another option would be to add a simple timeout - the reporter could exit after running for a certain amount of time. But this feels arbitrary and doesn't actually align with the component's real state. The reporter might exit too early before the component is ready, or waste resources running longer than necessary.
The proposed solution of adding a mode flag feels like the right balance - it's a minimal change that gives users the flexibility they need while keeping the codebase simple and maintainable. It also aligns perfectly with how the Node Readiness Controller already thinks about enforcement modes, making the whole system more consistent and easier to understand.
Is your feature request related to a problem or existing issue? Please describe.
Right now, the readiness condition reporter runs continuously as a sidecar container, constantly checking if components are healthy and updating node conditions. While this works great for components that need ongoing monitoring, it's wasteful for components that only need a one-time bootstrap check.
For example, when a node first starts up, we might want to verify that the CNI plugin is installed and ready before allowing pods to schedule. Once the CNI is ready, there's no real need to keep checking it every 30 seconds forever - the reporter just keeps running and consuming resources even though its job is done. This becomes especially noticeable in large clusters where you might have hundreds or thousands of these reporter containers running unnecessarily.
The Node Readiness Controller itself already understands the concept of "bootstrap-only" versus "continuous" enforcement modes, but the reporter doesn't have a way to exit after completing its bootstrap check. This creates an inconsistency where the controller can be configured for one-time checks, but the reporter always runs continuously regardless.
Describe the solution you'd like
I'd like to add a simple configuration option to the reporter that lets it run in either "bootstrap-only" or "continuous" mode. In bootstrap-only mode, the reporter would check the component's health at regular intervals, and as soon as the component becomes healthy, it would update the node condition one final time and then exit successfully. This would be perfect for init containers that just need to verify initial setup is complete.
In continuous mode (which would be the default to maintain backward compatibility), the reporter would work exactly as it does today - running forever and continuously monitoring the component's health. This is still important for critical dependencies that could fail after initial startup.
The beauty of this approach is that it gives users the flexibility to choose the right monitoring strategy for each component. Some components like CNI plugins might only need bootstrap verification, while others like security agents might need continuous health monitoring. Users could even use both modes together - an init container for bootstrap checks and a sidecar for ongoing health monitoring.
Describe alternatives you've considered
Another option would be to add a simple timeout - the reporter could exit after running for a certain amount of time. But this feels arbitrary and doesn't actually align with the component's real state. The reporter might exit too early before the component is ready, or waste resources running longer than necessary.
The proposed solution of adding a mode flag feels like the right balance - it's a minimal change that gives users the flexibility they need while keeping the codebase simple and maintainable. It also aligns perfectly with how the Node Readiness Controller already thinks about enforcement modes, making the whole system more consistent and easier to understand.