in pkg/webhook/injection.go [66:99]
func (si *SidecarInjector) supportsNativeSidecar() (bool, error) {
if si.ServerVersion != nil && !si.ServerVersion.AtLeast(minimumSupportedVersion) {
return false, nil
}
clusterNodes, err := si.NodeLister.List(labels.Everything())
if err != nil {
return false, fmt.Errorf("failed to get cluster nodes: %w", err)
}
supportsNativeSidecar := true
for _, node := range clusterNodes {
nodeVersion, err := version.ParseGeneric(node.Status.NodeInfo.KubeletVersion)
if !nodeVersion.AtLeast(minimumSupportedVersion) || err != nil {
if err != nil {
klog.Errorf(`invalid node gke version: could not get node "%s" k8s release from version "%s": "%v"`, node.Name, nodeVersion, err)
}
supportsNativeSidecar = false
break
}
}
if len(clusterNodes) == 0 {
// Rely on cluster version in the event there's no nodes to reference.
if si.ServerVersion != nil {
supportsNativeSidecar = si.ServerVersion.AtLeast(minimumSupportedVersion)
} else {
supportsNativeSidecar = false
}
}
return supportsNativeSidecar, nil
}