Validate StatefulSet names as DNS Label

Any StatefuleSet which took advantage of this (by having dots in the
name) can't have worked because we set `pod.spec.hostname` from it,
which is validated as a DNS label.

So while this is strictly a breaking change, it doesn't break anything
that was not already broken.
This commit is contained in:
Tim Hockin
2022-11-28 16:39:49 -08:00
parent 7061704297
commit f4c1682fb1
2 changed files with 33 additions and 3 deletions

View File

@@ -213,7 +213,7 @@ func TestValidateStatefulSet(t *testing.T) {
errorCases := []testCase{
{
name: "zero-length ID",
name: "zero-length name",
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
@@ -227,6 +227,36 @@ func TestValidateStatefulSet(t *testing.T) {
field.Required(field.NewPath("metadata", "name"), ""),
},
},
{
name: "name-with-dots",
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc.123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{
field.Invalid(field.NewPath("metadata", "name"), "abc.123", ""),
},
},
{
name: "long name",
set: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: strings.Repeat("a", 64), Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{
field.Invalid(field.NewPath("metadata", "name"), strings.Repeat("a", 64), ""),
},
},
{
name: "missing-namespace",
set: apps.StatefulSet{