mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 09:52:49 +00:00
Merge pull request #109263 from FeLvi-zzz/add-kubelet-nodeLabels-validation
validate nodeLabels in kubelet
This commit is contained in:
commit
451c00cc70
@ -26,6 +26,7 @@ import (
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
"k8s.io/apimachinery/pkg/util/validation"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
logsapi "k8s.io/component-base/logs/api/v1"
|
||||
@ -160,14 +161,29 @@ func NewKubeletFlags() *KubeletFlags {
|
||||
// ValidateKubeletFlags validates Kubelet's configuration flags and returns an error if they are invalid.
|
||||
func ValidateKubeletFlags(f *KubeletFlags) error {
|
||||
unknownLabels := sets.NewString()
|
||||
for k := range f.NodeLabels {
|
||||
invalidLabelErrs := make(map[string][]string)
|
||||
for k, v := range f.NodeLabels {
|
||||
if isKubernetesLabel(k) && !kubeletapis.IsKubeletLabel(k) {
|
||||
unknownLabels.Insert(k)
|
||||
}
|
||||
|
||||
if errs := validation.IsQualifiedName(k); len(errs) > 0 {
|
||||
invalidLabelErrs[k] = append(invalidLabelErrs[k], errs...)
|
||||
}
|
||||
if errs := validation.IsValidLabelValue(v); len(errs) > 0 {
|
||||
invalidLabelErrs[v] = append(invalidLabelErrs[v], errs...)
|
||||
}
|
||||
}
|
||||
if len(unknownLabels) > 0 {
|
||||
return fmt.Errorf("unknown 'kubernetes.io' or 'k8s.io' labels specified with --node-labels: %v\n--node-labels in the 'kubernetes.io' namespace must begin with an allowed prefix (%s) or be in the specifically allowed set (%s)", unknownLabels.List(), strings.Join(kubeletapis.KubeletLabelNamespaces(), ", "), strings.Join(kubeletapis.KubeletLabels(), ", "))
|
||||
}
|
||||
if len(invalidLabelErrs) > 0 {
|
||||
labelErrs := []string{}
|
||||
for k, v := range invalidLabelErrs {
|
||||
labelErrs = append(labelErrs, fmt.Sprintf("'%s' - %s", k, strings.Join(v, ", ")))
|
||||
}
|
||||
return fmt.Errorf("invalid node labels: %s", strings.Join(labelErrs, "; "))
|
||||
}
|
||||
|
||||
if f.SeccompDefault && !utilfeature.DefaultFeatureGate.Enabled(features.SeccompDefault) {
|
||||
return fmt.Errorf("the SeccompDefault feature gate must be enabled in order to use the --seccomp-default flag")
|
||||
|
@ -168,6 +168,13 @@ func TestValidateKubeletFlags(t *testing.T) {
|
||||
error: false,
|
||||
labels: map[string]string{},
|
||||
},
|
||||
{
|
||||
name: "Invalid label",
|
||||
error: true,
|
||||
labels: map[string]string{
|
||||
"cloud.google.com/repository": "kubernetes/kubernetes",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
Loading…
Reference in New Issue
Block a user