Our current kind based testing infra pulls a bunch of images each time the e2e tests are run. In some cases the images are very large (500mb+). To speed up the time to pull/load into the cluster, we could pre-load these images into a custom kind image that allows to be the base image. Additionally we could pick smaller test images that aren't so large to help reduce build/test time.
It could also be worth considering maintaining our own test "echo server" binary that has the functionality we need for testing purposes. Right now we depend on ingress-conformance-echo (a custom build of it from tsaarni) and httpbin for the combo of functionality we need.
I agree that we should either pick one upstream thing to use for all our tests, or make our own instead and do that. But it should be the one thing across everything regardless.
I think the "official" build of ingress-conformance-echo is at https://gcr.io/k8s-staging-ingressconformance/echoserver, latest still being gcr.io/k8s-staging-ingressconformance/echoserver:v20201006-42d00bd. This one includes the TLS stuff, which was the reason for my custom build back then.
It can be rebuilt using https://github.com/kubernetes-sigs/ingress-controller-conformance/tree/master/images/echoserver.
In my own personal dev tests I've completely gotten rid of httpbin and use ingress-conformance-echo exclusively. It is much lighter and still contains everything I need.
In my own personal dev tests I've completely gotten rid of
httpbinand useingress-conformance-echoexclusively. It is much lighter and still contains everything I need.
Yep, we use httpbin only in one test -- the health checks test -- and only because it has functionality where if you request a path like /status/418 it will return a 418 response code. It would be really nice to not have to use it anymore since it's so big.
Yep, we use
httpbinonly in one test -- the health checks test -- and only because it has functionality where if you request a path like/status/418it will return a418response code. It would be really nice to not have to use it anymore since it's so big.
I guess the conformance test suite does not go into status codes of upstream services currently but I wonder if it could be justified that ingress-conformance-echo would have a /status/ endpoint for testing controllers, something simple like this.
Would definitely be useful, if they'd take the PR we would use it and drop httpbin for sure.
Most helpful comment
I think the "official" build of
ingress-conformance-echois at https://gcr.io/k8s-staging-ingressconformance/echoserver, latest still beinggcr.io/k8s-staging-ingressconformance/echoserver:v20201006-42d00bd. This one includes the TLS stuff, which was the reason for my custom build back then.It can be rebuilt using https://github.com/kubernetes-sigs/ingress-controller-conformance/tree/master/images/echoserver.
In my own personal dev tests I've completely gotten rid of
httpbinand useingress-conformance-echoexclusively. It is much lighter and still contains everything I need.