Our team is developing an application based on microservices architecture. And will be deployed on Kubernetes using helm chart.
We will be using Azure DevOps to manage the project as well as Pipelines.
And took reference from the below URL for managing CI/CD: https://learn.microsoft.com/en-us/azure/architecture/microservices/ci-cd-kubernetes
We have 2 scenarios as follows for managing Helm chart:
- Should we have a centralized repository for the helm chart, where we will have the sub-charts per microservice?
- In this case, we can have only one release pipeline which will use this centralized Helm chart repository to upgrade changes in Kubernetes.
- Here we have an issue in the CI pipeline's
Helm packagejob which only allows us to select the chart within the microservice repository for which the pipeline is created.
I think we can solve this by creating a separate pipeline for theHelm package and Pushjobs so we can select the chart from the centralized Helm repository. And this pipeline will be common for all the microservices and will trigger after the CI pipeline.
OR
- Should we have a charts within the corresponding microservice repositories?
- In this case, we need to have a separate Release pipeline for each microservice.
- Also manage helm charts individually.
- How to manage deployment for integration testing on a QA environment if there are changes in 2 or more microservices. As each service will be deployed individually how this is going to be in sync?
Please suggest us the best/recommended way so we move ahead.
Thanks in advance.
