How to support multiple deployments in a microservice CI/CD pipeline

10/20/2021

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?

-- iah10
distributed-system
kubernetes
kubernetes-helm
microservices
pipeline

0 Answers