15 Continuous delivery and GitOps

 

This chapter covers

  • Understanding continuous delivery and release management
  • Configuring Spring Boot for production with Kustomize
  • Deploying in production with GitOps and Kubernetes

Chapter after chapter, we have gone through patterns, principles, and best practices for working with cloud native applications, and we’ve built a bookshop system using Spring Boot and Kubernetes. It’s time to deploy Polar Bookshop to production.

I expect you have the projects of the Polar Bookshop system in separate Git repositories stored on GitHub. If you haven’t followed along in the previous chapters, you can refer to the Chapter15/15-begin folder in the source code accompanying the book, and use it as a foundation to define those repositories.

This chapter will guide you through some final aspects of preparing applications for production. First I’ll discuss versioning strategies for release candidates and how to design the acceptance stage of a deployment pipeline. Then you’ll see how to configure Spring Boot applications for production and deploy them on a Kubernetes cluster in a public cloud. Next, I’ll show you how to complete the deployment pipeline by implementing the production stage. Finally, you’ll use Argo CD to implement continuous deployment based on the GitOps principles.

15.1 Deployment pipeline: Acceptance stage

15.1.1 Versioning release candidates for continuous delivery

15.1.2 Understanding the acceptance stage of the deployment pipeline

15.1.3 Implementing the acceptance stage with GitHub Actions

15.2 Configuring Spring Boot for production

15.2.1 Defining a configuration overlay for production

15.2.2 Configuring CPU and memory for Spring Boot containers

15.2.3 Deploying Spring Boot in production

15.3 Deployment pipeline: Production stage

15.3.1 Understanding the production stage of the deployment pipeline

15.3.2 Implementing the production stage with GitHub Actions

15.4 Continuous deployment with GitOps

Summary