Merge pull request #113664 from laphets/kubectl-empty-ingress-backend-fix

Fix kubectl describe ingress when default backend is empty

Kubernetes-commit: e3d7cb5bc53bd5db8a8bfe90fe77d8d78a5ded14
This commit is contained in:
Kubernetes Publisher 2022-11-08 01:44:36 -08:00
commit eb11cdd1f9
4 changed files with 41 additions and 17 deletions

12
go.mod
View File

@ -30,10 +30,10 @@ require (
github.com/stretchr/testify v1.8.0
golang.org/x/sys v0.1.0
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.0.0-20221108053747-3f61c95cab71
k8s.io/apimachinery v0.0.0-20221108052757-4fe4321a9d5e
k8s.io/api v0.0.0-20221108053748-98c1aa6b3d0a
k8s.io/apimachinery v0.0.0-20221108055230-fd8a60496be5
k8s.io/cli-runtime v0.0.0-20221108072842-e556445586e6
k8s.io/client-go v0.0.0-20221108054910-ea9ec9169797
k8s.io/client-go v0.0.0-20221108054913-4b1a9fdfb58c
k8s.io/component-base v0.0.0-20221108061007-abdc0eb56a1d
k8s.io/component-helpers v0.0.0-20221108061658-aa222c251f8e
k8s.io/klog/v2 v2.80.1
@ -91,10 +91,10 @@ require (
)
replace (
k8s.io/api => k8s.io/api v0.0.0-20221108053747-3f61c95cab71
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20221108052757-4fe4321a9d5e
k8s.io/api => k8s.io/api v0.0.0-20221108053748-98c1aa6b3d0a
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20221108055230-fd8a60496be5
k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20221108072842-e556445586e6
k8s.io/client-go => k8s.io/client-go v0.0.0-20221108054910-ea9ec9169797
k8s.io/client-go => k8s.io/client-go v0.0.0-20221108054913-4b1a9fdfb58c
k8s.io/code-generator => k8s.io/code-generator v0.0.0-20221108000200-7429fbb99432
k8s.io/component-base => k8s.io/component-base v0.0.0-20221108061007-abdc0eb56a1d
k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20221108061658-aa222c251f8e

12
go.sum
View File

@ -540,14 +540,14 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
k8s.io/api v0.0.0-20221108053747-3f61c95cab71 h1:pyiHUA+hk/Uld88AATDzP+rOHuHoUvQVDosQmOGGT/w=
k8s.io/api v0.0.0-20221108053747-3f61c95cab71/go.mod h1:PSXY9/fSNyKgKHUU+O9scnZiW8m+V1znqk49oI6hAEY=
k8s.io/apimachinery v0.0.0-20221108052757-4fe4321a9d5e h1:zX/AC2CNrYwngyVHVHcsCL36uUtC/3tiZOE6/gfojvc=
k8s.io/apimachinery v0.0.0-20221108052757-4fe4321a9d5e/go.mod h1:VXMmlsE7YRJ5vyAyWpkKIfFkEbDNpVs0ObpkuQf1WfM=
k8s.io/api v0.0.0-20221108053748-98c1aa6b3d0a h1:GaCla9HtNyi63kysI/cyeA4bv6wRkIyuiUeXpaTF+dw=
k8s.io/api v0.0.0-20221108053748-98c1aa6b3d0a/go.mod h1:PSXY9/fSNyKgKHUU+O9scnZiW8m+V1znqk49oI6hAEY=
k8s.io/apimachinery v0.0.0-20221108055230-fd8a60496be5 h1:iFAMJ1evvrO6X7dS7EKujS6An+bp3u/dD6opu8rn0QA=
k8s.io/apimachinery v0.0.0-20221108055230-fd8a60496be5/go.mod h1:VXMmlsE7YRJ5vyAyWpkKIfFkEbDNpVs0ObpkuQf1WfM=
k8s.io/cli-runtime v0.0.0-20221108072842-e556445586e6 h1:O5RHkYLsqflfhvXClaKFHb4Gp8++bIIY+lYJG/Q5ZhU=
k8s.io/cli-runtime v0.0.0-20221108072842-e556445586e6/go.mod h1:+qJo1vrpfIpPsTFvZ5thfxazTEZCRmSPdhC0bxQ51/w=
k8s.io/client-go v0.0.0-20221108054910-ea9ec9169797 h1:T9QsUDmalrZVfj0rQztOzzRnrkm0XY0GZm176jmV2Fo=
k8s.io/client-go v0.0.0-20221108054910-ea9ec9169797/go.mod h1:nLJ8OQ/Q/icQcfjnVrKZyCgc/CPXX7o8Hlqh70Oo6Jk=
k8s.io/client-go v0.0.0-20221108054913-4b1a9fdfb58c h1:73hBKeNTruSueGRemXkcxxOJ2OV58wJvfdo0+ZMkucA=
k8s.io/client-go v0.0.0-20221108054913-4b1a9fdfb58c/go.mod h1:Hnc/VjMc6mMK4isnk+uuot3Ymjl7evdMdssMoHIDeSc=
k8s.io/component-base v0.0.0-20221108061007-abdc0eb56a1d h1:IF51IULm49B+VT4PJOBd4z/SxtU0WVfInKrnykCG/t0=
k8s.io/component-base v0.0.0-20221108061007-abdc0eb56a1d/go.mod h1:yN3pjWt18ANoCwZlZZaB+9OdFe2a6rgTUE51kThAe3Q=
k8s.io/component-helpers v0.0.0-20221108061658-aa222c251f8e h1:v2TulZDdzLZe3sB78qO1wn3l+7UTM6lpofZf4u8cmms=

View File

@ -2653,11 +2653,11 @@ func (i *IngressDescriber) describeIngressV1(ing *networkingv1.Ingress, events *
w.Write(LEVEL_0, "Ingress Class:\t%v\n", ingressClassName)
def := ing.Spec.DefaultBackend
ns := ing.Namespace
if def == nil {
w.Write(LEVEL_0, "Default backend:\t<default>\n")
} else {
w.Write(LEVEL_0, "Default backend:\t%s\n", i.describeBackendV1(ns, def))
defaultBackendDescribe := "<default>"
if def != nil {
defaultBackendDescribe = i.describeBackendV1(ns, def)
}
w.Write(LEVEL_0, "Default backend:\t%s\n", defaultBackendDescribe)
if len(ing.Spec.TLS) != 0 {
describeIngressTLSV1(w, ing.Spec.TLS)
}
@ -2680,7 +2680,7 @@ func (i *IngressDescriber) describeIngressV1(ing *networkingv1.Ingress, events *
}
}
if count == 0 {
w.Write(LEVEL_1, "%s\t%s\t%s\n", "*", "*", i.describeBackendV1(ns, def))
w.Write(LEVEL_1, "%s\t%s\t%s\n", "*", "*", defaultBackendDescribe)
}
printAnnotationsMultiline(w, "Annotations", ing.Annotations)

View File

@ -2800,6 +2800,30 @@ Rules:
* * default-backend:80 (<error: endpoints "default-backend" not found>)
Annotations: <none>
Events: <none>
`,
},
"EmptyBackend": {
input: fake.NewSimpleClientset(&networkingv1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Name: "bar",
Namespace: "foo",
},
Spec: networkingv1.IngressSpec{
IngressClassName: &ingresClassName,
},
}),
output: `Name: bar
Labels: <none>
Namespace: foo
Address:
Ingress Class: test
Default backend: <default>
Rules:
Host Path Backends
---- ---- --------
* * <default>
Annotations: <none>
Events: <none>
`,
},
"EmptyIngressClassName": {