mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-14 22:33:34 +00:00
add pod containers[*].port duplicate warning
This commit is contained in:
parent
bdf34b3f56
commit
64c9070f8d
@ -252,6 +252,17 @@ func warningsForPodSpecAndMeta(fieldPath *field.Path, podSpec *api.PodSpec, meta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// duplicate containers[*].ports
|
||||||
|
if len(c.Ports) > 1 {
|
||||||
|
ports := sets.NewInt64()
|
||||||
|
for i, port := range c.Ports {
|
||||||
|
if ports.Has(int64(port.ContainerPort)) {
|
||||||
|
warnings = append(warnings, fmt.Sprintf("%s: duplicate container port %d", p.Child("ports").Index(i).Child("containerPort"), port.ContainerPort))
|
||||||
|
} else {
|
||||||
|
ports.Insert(int64(port.ContainerPort))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
utilpointer "k8s.io/utils/pointer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkNoWarnings(b *testing.B) {
|
func BenchmarkNoWarnings(b *testing.B) {
|
||||||
@ -599,6 +598,59 @@ func TestWarnings(t *testing.T) {
|
|||||||
`spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[1].podAffinityTerm.labelSelector: a null labelSelector results in matching no pod`,
|
`spec.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[1].podAffinityTerm.labelSelector: a null labelSelector results in matching no pod`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "no duplicate container ports",
|
||||||
|
template: &api.PodTemplateSpec{Spec: api.PodSpec{
|
||||||
|
Containers: []api.Container{{
|
||||||
|
Name: "foo",
|
||||||
|
Ports: []api.ContainerPort{
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
expected: []string{},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "duplicate container ports",
|
||||||
|
template: &api.PodTemplateSpec{Spec: api.PodSpec{
|
||||||
|
Containers: []api.Container{{
|
||||||
|
Name: "foo",
|
||||||
|
Ports: []api.ContainerPort{
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
expected: []string{
|
||||||
|
`spec.containers[0].ports[1].containerPort: duplicate container port 80`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "duplicate container ports in two containers",
|
||||||
|
template: &api.PodTemplateSpec{Spec: api.PodSpec{
|
||||||
|
Containers: []api.Container{
|
||||||
|
{
|
||||||
|
Name: "foo1",
|
||||||
|
Ports: []api.ContainerPort{
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
{ContainerPort: 180, HostPort: 80},
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "foo",
|
||||||
|
Ports: []api.ContainerPort{
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
{ContainerPort: 80, HostPort: 80},
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
expected: []string{
|
||||||
|
`spec.containers[0].ports[2].containerPort: duplicate container port 80`,
|
||||||
|
`spec.containers[1].ports[1].containerPort: duplicate container port 80`,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testcases {
|
for _, tc := range testcases {
|
||||||
|
Loading…
Reference in New Issue
Block a user