Part and parcel of many microservices-based deployments is an agile approach to development, testing, and delivery. Continuous integration and continuous delivery are specific implementations of these agile processes. By their very nature microservices are small, decoupled, and focused on accomplishing single tasks – and the most successful implementations rely on continuous testing and deployment to minimize the feedback loop and reduce the burden on operations.
Containers and Kubernetes are a natural extension of microservices deployments; the former allows applications to be encapsulated in their own operating environment and the latter makes it easy to orchestrate containers inside of a distributed cluster. The goals of Kubernetes are to accelerate development and simplify operations by treating clusters of containers as a single system – but how do you map those concepts back to microservices and continuous delivery?
In this talk, we will cover the basics of Kubernetes and show how to set up continuous delivery pipelines using Jenkins and Jenkins Workflow to go from code to deployment, without developers having to interact with the production deployment infrastructure. The goal is an end-to-end set of steps to automate deployment and delivery of an application composed of several microservices.
http://sched.co/4WdS
1. Continuous Delivery in Kubernetes
Sandeep Parikh
@crcsmnky
Solutions Architect
Google Cloud Platform
2. Why Is This Important
Bulletproof process to go from code to production
Centralized, repeatable building/tagging/pushing
Iterate quickly and reliably
Hands off my kubectl
4. Continuous Integration
TestCode Commit Push TestBuild
The ideal development flow
Test
D’oh!
Code Commit Push
Test
Crap!
Build
Whoops!
The real development flow
19. Microservices & Namespaces
Virtual clusters backed by the same physical cluster
Divide cluster resources by different use cases
Supports quotas for managing resources
Test, Staging, Production, etc.
20. Pods
Time
Microservices & Rolling Update
Replace Replication Controller A with Replication Controller B by updating one Pod
at a time.
A
B
A
B
A
B A
B
A
B
A
B
23. Mapping To Jenkins
Workflow plugin, Freestyle doesn’t fit
Define a flexible, extensible, script-based CD pipeline
Groovy for scripting actions
Supports human input/approval