Kubernetes doesn't accept any other value but string in nodeSelector,
but if we specified ambiguous value like true, it's treated as a
non-string like bool and then failed to create resource because of type
mis-match, that's why we should make value of nodeSelector enclosed by
double quotations to ensure value is always string
**Problem:**
Schedule default-http-backend and metrics-server to Windows node will be failed.
**Solution:**
Add nodeAffinity to default-http-backend and metrics-server workload
spec
**Issue:**
https://github.com/rancher/rancher/issues/19929
**Problem:**
The nginx ingress daemonSet securityContext can not be applied to
version before 0.16.0
**Solution:**
When the nginx controller version is older than 0.16.0, we use the old
way to set it up.
1. Support to configure Flannel as "host-gw" backend
2. Define the network component yaml and ingress
controller yaml only schedule to non-Windows node
3. Support to configure Docker container's port publishing