Context
- OpenShift supports Windows containers: https://docs.openshift.com/container-platform/4.10/windows_containers/index.html
- Core OpenShift has the concept of a `nodeselector` so that they can selectively avoid scheduling on windows machines while they don't support it: `“kubernetes.io/os: linux”`
- Now that folks are starting to run mixed clusters, we need to make sure that GitOps doesn’t try and schedule on a windows node
- We don't want to require customers to taint their Windows nodes, we'd like them to not have to consider where their GitOps is running
- If the user supplies their own custom node selector,
we won't try to merge the node selectors, the user would have to specify `“kubernetes.io/os: linux”` as well. - If the user supplies their own custom node Selector, a merge will be performed. And the values if changed by user will take precedence for the same keys.
- At some point it we'll need to add support for running on Windows, but until then we can use this workaround
Description
Add the ability to avoid the GitOps control plane/ArgoCD controllers being deployed on Windows nodes.
Acceptance Criteria
- In a mixed-OS cluster containing machines runnings Windows, OpenShift GitOps will choose to only run on non-Windows nodes