I have a Kubernetes cluster that hosts a large set of microservices. The microservices are all defined in an umbrella helm chart that is made up of smaller charts. I also have a custom CI/CD pipeline with the following steps:
build microservice code -> deploy temporary chart on the K8 namespace -> run isolated tests of the changed microservice -> run integration tests and e2e tests -> update chart with the new version of the ms.The problem is that if two builds are running simultaneously and reach the integration and e2e tests step and the tests fail, I have no way of telling which microservice caused the failure and can't fallback properly. To avoid inconsistencies in the chart, I have introduced a locking step on the namespace after the code building step so only one build can deploy and run the integration tests at a time. This allows running the e2e tests in a predictable manner but now the other builds are queuing and waiting to obtain the lock on the namespace.
Is there a way to support multiple loads at the same time while running e2e tests in a consistent way?