CI Implementation with Kubernetes at LivePerson by Saar Demri

Preview:

Citation preview

CI Implementation with KubernetesLivePerson Case study

Saar Demri, LivePerson

WHO AM I?

https://il.linkedin.com/in/saardemri

https://www.facebook.com/saar.demri

@DemriSaar

Saar Demri CI-DevOps Team LeaderProduction – Cloud Group

saard@liveperson.com

WHO ARE WE - INTRO

WHO ARE WE - CUSTOMERS

More then 18,500 customers

WHO ARE WE - NUMBERS

24/7Dedicated Monitoring team

~1100Employees

2 Billions (3M peak)

Monthly Visits

27 MillionMonthly Engagements

>8000Servers

1.6 MillionsMetrics / Second

~160Micro Services

6Data Centers

JS

CI INFORMATION

1600Releases per year

160Micro Services

10KWeekly Builds

1400GitHub Repos

70CI Agents

3000TeamCity Configs

30Dev Teams

4WW Dev Areas

AGENDA

Current CI at Liveperson.

CI new flow integrating Docker and Kubernetes.

Benefits and what’s next.

1

2

3

LivePerson

CONTINUOUS INTEGRATION FLOW

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Moving to

Docker and Kebernetes

PREPERATION TO KUBERNETES

Install Docker client on all CI build agents (slaves)

Install Kubernetes CI cluster and dedicated Docker registry

Create base images (Tomcat, NodeJS, NGINX and more…)

1

2

3

Develop a dedicated inhouse kubernetes-maven-plugin4

Setup inhouse

LivePerson Docker base images

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

NODEJSTOMCATNGINX

CentOS

APPAPPAPP

io.fabric8:docker-maven-plugin

Develop inhouse

Maven Kubernetes Plugin

kubernetes-maven-plugin:replace

kubernetes-maven-plugin:uploadastag

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

CURRENT DEPLOYMENT PREPERATION NEW DEPLOYMENT PREPERATION

kubernetes-maven-plugin:deploy

kubernetes-maven-plugin:getservice

Get Node name and ports

Set env and trigger tests

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Developer

TeamCity CI Server Build Integrate

Scan

Unit TestGitHub Hosted Preparation for Deployment

DeploySystem Test

QA & Automation Regression setup

Self Service

Service Installation

Jenkins Active Choice Parameters plugin

Benefits?

Service isolation

Dev dependencies

Concurrent builds

Build/install once run multiple times

Server To service

What’s Next?

HUB

DEPLOYMENTS

AUTO-PROMOTION

AUTO-STAGING DELIVERY

THANK YOU

Recommended