Summary

In this chapter, we discussed the importance of a CI/CD pipeline for a microservices-based distributed system. We reviewed some CI/CD options for Kubernetes and settled on a combination of CircleCI for the CI part (code change | Docker image) and Argo CD for the CD part (k8s manifest change | deployed application).

We also covered the best practices for building Docker images using multi-stage builds, the k8s YAML manifests for Postgres DB, and the deployment and service k8s resources. Then, we installed Argo CD in the cluster, configured it to build all our microservices, and explored the UI and the CLI. At this point, you should have a clear understanding of the concept of CI/CD and how important it is, the pros and cons of various solutions, and how to choose the best option for your system.

However, there is much more to come. In later chapters, we will improve our CI/CD pipeline with additional tests, security checks, and advanced multi-environment deployment options.

In the next chapter, we will turn out attention to configuring our services. Configuration is a huge part of developing complex systems that need to be developed, tested, and deployed by large teams. We will explore various conventional configuration options, such as command-line arguments, environment variables, and configuration files, as well as more dynamic configuration options and the special configuration features of Kubernetes.