Leanpub Header

Skip to main content

Continuous Delivery for Java Apps: Kubernetes and Jenkins in Practice

Build a CD Pipeline Step by Step Using Kubernetes, Docker, Vagrant, Jenkins, Spring, Maven and Artifactory

Learn how to create a real-world Continuous Delivery pipeline for a Spring Boot app by setting up a Kubernetes cluster and running Jenkins Pipelines in a scalable fashion (dynamically allocating Jenkins slaves as Kubernetes pods) to test, build, release and deploy a new version to testing, staging and production environments using Canary Release

The author is letting you choose the price you pay for this book!

Pick Your Price...
PDF
EPUB
WEB
678
Readers
558
Pages
61,514Words
About

About

About the Book

Dear Reader,

Before getting this book, please click on Read Free Sample to download 110 pages for free; this should give you an idea whether you like the book's style, structure, and contents or not. Please let me know (https://www.jorgeacetozi.com/about) if you have any trouble throughout your Continuous Delivery journey! Thank you very much!

This book will guide you through the implementation of the real-world Continuous Delivery using top-notch technologies that are in high demand by the best companies around the world. Instead of finishing this book thinking "I know what Continuous Delivery is, but I have no idea how to implement it", you will end up with your machine set up with a Kubernetes cluster running Jenkins Pipelines in a distributed and scalable fashion (each Pipeline run on a new Jenkins slave dynamically allocated as a Kubernetes pod) to test (unit, integration, acceptance, performance and smoke tests), build (with Maven), release (to Artifactory), distribute (to Docker Hub) and deploy (on Kubernetes) a Spring Boot application to testing, staging and production environments implementing the Canary Release deployment pattern to mitigate risks.

This book is intended for Java Developers, SysAdmins or anyone interested in learning how to build a continuous delivery pipeline step by step using Kubernetes, Docker, Vagrant, Jenkins, Spring, Maven and Artifactory. 

If you are a Java Developer, it's not required that you have prior knowledge with Kubernetes, Docker, Vagrant, Jenkins, etc. If you are a SysAdmin, it's not required that you know about Java, Spring, Maven, and so on. Although this is a hands-on book, all the theory needed to build the CD pipeline is provided step by step throughout the book.

I have worked as a Java Developer for many years and now I'm particularly interested in subjects such as these:

- Agile

- DevOps / Continuous Delivery

- NoSQL Databases (Cassandra, Redis, etc)

- Cloud Computing

- Containers

- Distributed Systems

- Linux / Infrastructure / Security

This is the book I wish I had found when I was learning how to implement Continuous Delivery in practice; that's why I wrote it. It will bring to you years of experience implementing Continuous Delivery in many different Java projects.

It's also worth to mention that this book is a forever edition, which means that no matter how fast the technologies used here evolve, this book will be always kept up to date and of course you will get notified and will pay nothing to take advantage of the updates.

I hope you buy this book and have a very pleasant reading. Thank you very much!

Subscribe to my website for news and updates: https://www.jorgeacetozi.com

Share this book

Categories

Price

Pick Your Price...

Minimum price

$9.99

$19.99

You pay

$19.99

Author earns

$15.99
$

All prices are in US $. You can pay in US $ or in your local currency when you check out.

EU customers: prices exclude VAT, which is added during checkout.

...Or Buy With Credits!

Number of credits (Minimum 1)

1
The author will earn $12.00 from your purchase!
You can get credits monthly with a Reader Membership

Author

About the Author

Jorge Acetozi

Jorge Acetozi is a senior software engineer and technical writer who spends almost his whole day having fun with things such as AWS, Kubernetes, Docker, Terraform, Ansible, Cassandra, Redis, Elasticsearch, Graylog, Sensu, Fluentd, RabbitMQ, Kafka, Java, Python, Spring, and much more! He loves deploying applications in production while thousands of users are online, monitoring the infrastructure, and acting quickly when monitoring tools decide to challenge his heart's health! Check out my newest articles:

Contents

Table of Contents

Why You Should Read This Book

About the Author

  1. Introduction

Agile

Scrum

  1. Scrum and Continuous Integration
  2. Deployed vs Released
  3. Scrum and Continuous Delivery

Extreme Programming and Continuous Delivery

  1. Automated Tests
  2. Continuous Integration

Feature Branch

Continuous Delivery

Continuous Delivery Pipeline

Continuous Delivery vs Continuous Deployment

Canary Release

A/B Tests

Feature Flags

  1. Notepad App: Automated Tests, Maven and Flyway

Pre-Requisites

The Notepad Application

  1. The Note Model
  2. The Note Controller

Unit Tests

  1. NoteTest.java

Integration Tests

  1. NoteServiceTest.java
  2. NoteControllerTest.java

Acceptance Tests

  1. Page Object: NewNotePage.java
  2. CreateNoteTest.java
  3. AcceptanceTestsConfiguration.java
  4. Distributed Acceptance Tests with Selenium-Grid

Smoke Tests

Performance Tests

  1. Gatling
  2. HomeSimulation.scala

Apache Maven

  1. Maven Snapshot vs Release
  2. The Default Lifecycle and its Phases
  3. Maven Repositories
  4. Repository Manager
  5. Maven Plugins: Surefire and Failsafe
  6. Maven Profile
  7. Running Unit Tests
  8. Running Integration Tests
  9. Running Acceptance Tests
  10. Running Smoke Tests
  11. Running Performance Tests
  12. Publish Artifacts to Artifactory with Maven
  13. Publish a Snapshot to Artifactory
  14. Publish a Release to Artifactory
  15. The release:prepare Goal
  16. The release:perform Goal

Flyway

  1. Docker

Introduction to Docker

Difference Between Container and Image

Docker Hub

  1. Create your Account
  2. Official Docker Repositories
  3. Image Tags
  4. Pulling Images From a Different Docker Registry
  5. Non-Official Docker Images
  6. Create a Repository, an Image and Push it to Docker Hub

Running Containers on Docker

  1. Running Containers as Daemons
  2. Container Clean Up
  3. Naming Containers
  4. Exposing Ports
  5. Persistent Data with Volumes
  6. Environment Variables

Docker Networking

  1. Create a Bridge Network
  2. Container Static IP Address
  3. Linking Containers

Most Used Docker Commands

  1. Images
  2. Containers
  3. Misc

Building Docker Images

  1. Dockerfile
  2. FROM
  3. ENV
  4. RUN
  5. WORKDIR
  6. COPY
  7. ADD
  8. EXPOSE
  9. ENTRYPOINT
  10. VOLUME
  11. USER
  12. Jenkins: Pipeline as Code and ChatOps

Jenkins Overview

Jenkins Concepts

  1. Job (or Project)
  2. Build
  3. Artifact
  4. Workspace
  5. Executor
  6. Plugin
  7. Node, Master, and Agent (or Slave)

ChatOps

  1. Create a Slack Workspace
  2. Integrate Slack with Jenkins
  3. Slack Notification Plugin
  4. Use Hubot to Interact with Jenkins

Jenkins Pipeline

  1. Declarative Pipeline vs Scripted Pipeline
  2. Scripted Pipeline
  3. Using Docker with Jenkins Pipelines
  4. Running Docker from Within the Jenkins Container

Scaling Jenkins with Slaves

  1. Kubernetes

Why Kubernetes?

Set up a Kubernetes Cluster using Vagrant

Hands-on Introduction to Kubernetes

Kubernetes Concepts

  1. Namespaces
  2. Pods
  3. Labels
  4. Replica Sets
  5. Services
  6. Service Discovery using DNS
  7. Service Discovery using Namespaces
  8. Volumes
  9. Handling External Configurations
  10. Config Maps
  11. Changing Logback Log Level at Runtime
  12. Secrets
  13. Using Secrets as Environment Variables
  14. Using Secrets as Files from a Pod
  15. Deployments
  16. Readiness Probes
  17. Liveness Probes
  18. Canary Release

Kubernetes Architecture

  1. Kubernetes Master Components
  2. Etcd
  3. API Server
  4. Controller Manager
  5. Scheduler

Kubernetes Node Components

  1. Service Proxy
  2. Kubelet
  3. cAdvisor

Kubernetes Add-ons

  1. Web UI (Dashboard)
  2. Monitoring Kubernetes with Heapster, InfluxDB and Grafana
  3. Web UI Overview
  4. DNS
  5. Hands-on Project: Continuous Delivery Pipeline

Configuration

  1. Kubernetes Cluster
  2. GitHub Repositories
  3. Docker Hub
  4. Artifactory
  5. MySQL
  6. Logback
  7. Jenkins
  8. Kubernetes Plugin
  9. Pipeline Project: notepad-testing
  10. Pipeline Project: notepad-acceptance-test
  11. Pipeline Project: notepad-continuous-integration
  12. Pipeline Project: notepad-release
  13. Pipeline Project: notepad-staging
  14. Pipeline Project: notepad-performance-test
  15. Pipeline Project: notepad-production
  16. Pipeline Project: notepad-canary
  17. Pipeline Project: notepad-canary-scale-replicas

Usage

  1. New User Story Development Flow
  2. Preparation: Deploying Version 1.0.0
  3. Creating the Pull Request
  4. Testing Branch add-note-subtitle
  5. Generating Release Version 1.1.0
  6. Deploying Release Version 1.1.0 to Staging
  7. Deploying Release Version 1.1.0 to Production using Canary Release

Code

  1. Testing Branch add-note-subtitle
  2. notepad-testing
  3. notepad-acceptance-test
  4. Generating Release Version 1.1.0
  5. notepad-continuous-integration
  6. notepad-release
  7. Deploying Release Version 1.1.0 to Staging
  8. notepad-staging
  9. notepad-performance-test
  10. Deploying Release Version 1.1.0 to Production using Canary Release
  11. notepad-canary
  12. notepad-canary-scale-replicas
  13. notepad-production
  14. Appendices

Notepad application.yml

Notepad pom.xml

Get the free sample chapters

Click the buttons to get the free sample in PDF or EPUB, or read the sample online here

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub