Slide 1

Slide 1 text

@spiddy Kubernetes in Startups vs Enterprise Using Custom Resources to extend workflow By Dimitris Kapanidis

Slide 2

Slide 2 text

@spiddy About me Docker Captain | Google Developer Expert Docker BCN | Kubernetes BCN Meetup Organizer Consulting @ Harbur Cloud Solutions 2

Slide 3

Slide 3 text

@spiddy Startups vs Enterprise Where does Kubernetes fits? 3

Slide 4

Slide 4 text

@spiddy The Container revolution is here 4

Slide 5

Slide 5 text

@spiddy The Container revolution is here ● Decoupling of development / deployment environment ● Standard packaging format ● The Twelve-Factor App implementation ● Microservice design 5

Slide 6

Slide 6 text

@spiddy The evolution of IT industry 6

Slide 7

Slide 7 text

@spiddy Waterfall vs Agile 7

Slide 8

Slide 8 text

@spiddy The Waterfall Model 8 “The waterfall model is a linear sequential (non-iterative) design approach for software development, in which progress flows in one direction downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, deployment and maintenance”

Slide 9

Slide 9 text

@spiddy 9 Waterfall Origins on Construction

Slide 10

Slide 10 text

@spiddy 10 Waterfall Origins on Manufacturing

Slide 11

Slide 11 text

@spiddy 11 Requirements Design Implementation Verification Maintenance Waterfall on IT

Slide 12

Slide 12 text

@spiddy Waterfall on IT 12

Slide 13

Slide 13 text

@spiddy The Agile Model 13 “Agile software development describes a set of values and principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams“

Slide 14

Slide 14 text

@spiddy Agile Manifesto Values ● Individuals and Interactions over Processes and Tools ● Working Software over Comprehensive Documentation ● Customer Collaboration over Contract Negotiation ● Responding to Change over Following a Plan 14

Slide 15

Slide 15 text

@spiddy Agile Model vs Waterfall 15

Slide 16

Slide 16 text

@spiddy Agile Examples on IT 16

Slide 17

Slide 17 text

@spiddy Monolithic vs Microservices 17

Slide 18

Slide 18 text

@spiddy Monolithic Architecture 18 “A software system is called "MONOLITHIC" if it has a monolithic architecture, in which functionally distinguishable aspects are all interwoven, rather than containing architecturally separate components.“

Slide 19

Slide 19 text

@spiddy Traditional Architecture 19

Slide 20

Slide 20 text

@spiddy 20 Design up front

Slide 21

Slide 21 text

@spiddy Over Allocation of Infrastructure 21

Slide 22

Slide 22 text

@spiddy 22 Physical Separation

Slide 23

Slide 23 text

@spiddy 23 Monolithic Design

Slide 24

Slide 24 text

@spiddy Traditional Architecture Internal Network Load Balancers Legend Server Connection Database Client 24

Slide 25

Slide 25 text

@spiddy 25

Slide 26

Slide 26 text

@spiddy Monolithic Architecture Issues ● Cannot scale-out individually each function ● Cannot do easily rollback of version upgrade ● Adding a function forces complete rollout ● Cannot easily do A/B test of a function 26

Slide 27

Slide 27 text

@spiddy Microservices Architecture 27

Slide 28

Slide 28 text

@spiddy Modern Architecture - Design Minimal Viable Product - Design process embraces changes - Easily Scalable Infrastructure - No Physical boundaries (Zero Trust Network) - Infrastructure as Code - Microservice-Oriented Design 28

Slide 29

Slide 29 text

@spiddy Microservices Architecture 29

Slide 30

Slide 30 text

@spiddy 30

Slide 31

Slide 31 text

@spiddy Bare Metal vs Virtualization vs Containers 31

Slide 32

Slide 32 text

@spiddy 32 Bare-Metal

Slide 33

Slide 33 text

@spiddy 33 Virtual Machines

Slide 34

Slide 34 text

@spiddy 34 Containers

Slide 35

Slide 35 text

@spiddy 35 Bare Metal / Virtualization / Containers

Slide 36

Slide 36 text

@spiddy On Premise vs Cloud 36

Slide 37

Slide 37 text

@spiddy 37

Slide 38

Slide 38 text

@spiddy 38

Slide 39

Slide 39 text

@spiddy Why is Kubernetes so damn difficult? 39

Slide 40

Slide 40 text

@spiddy 40 Kubernetes orchestrates Containers

Slide 41

Slide 41 text

@spiddy 41 Containers are ephemeral by design Kubernetes orchestrates Containers

Slide 42

Slide 42 text

@spiddy 42 Containers can scale +/- on demand Containers are ephemeral by design Kubernetes orchestrates Containers

Slide 43

Slide 43 text

@spiddy 43 Kubernetes implements Microservices Containers can scale +/- on demand Containers are ephemeral by design Kubernetes orchestrates Containers

Slide 44

Slide 44 text

@spiddy 44 Microservices imply a distributed system Kubernetes implements Microservices Containers can scale +/- on demand Containers are ephemeral by design Kubernetes orchestrates Containers

Slide 45

Slide 45 text

@spiddy 45 Distributed systems are intrinsically difficult Microservices imply a distributed system Kubernetes implements Microservices Containers can scale +/- on demand Containers are ephemeral by design

Slide 46

Slide 46 text

@spiddy But there are good news 46

Slide 47

Slide 47 text

@spiddy 47 Kubernetes... architecture is simple

Slide 48

Slide 48 text

@spiddy Kubernetes... follows the single responsibility principle 48

Slide 49

Slide 49 text

@spiddy Kubernetes... facilitates separation of concerns 49

Slide 50

Slide 50 text

@spiddy Kubernetes... abstracts away cloud vendor details 50

Slide 51

Slide 51 text

@spiddy Kubernetes... is the defacto standard for container ops 51

Slide 52

Slide 52 text

@spiddy Kubernetes... learn once deploy anywhere 52

Slide 53

Slide 53 text

@spiddy Kubernetes... is extendable 53

Slide 54

Slide 54 text

@spiddy Startups vs Enterprise Where does Kubernetes fits? 54

Slide 55

Slide 55 text

@spiddy Startup environment ● Start from scratch, no legacy code, no migration process ● Small organization ● Flat organization chart ● Agile oriented ● Microservice oriented 55

Slide 56

Slide 56 text

@spiddy Startup too small for Kubernetes? ● Kubernetes has steep learning curve ● Kubernetes is focused on automation of CI/CD ● Kubernetes is compatible with DevOps ● Kubernetes is designed to provide resilience, redundancy and high availability ● Kubernetes is designed to run on multiple nodes 56

Slide 57

Slide 57 text

@spiddy When not to use Kubernetes... 57 When your production should run on just one node

Slide 58

Slide 58 text

@spiddy When not to use Kubernetes... 58 When your org is less than 8 people

Slide 59

Slide 59 text

@spiddy When not to use Kubernetes... 59 When maintenance downtime is not an issue (yet)

Slide 60

Slide 60 text

@spiddy When not to use Kubernetes... 60 When automation is not a priority (yet)

Slide 61

Slide 61 text

@spiddy Enterprise environment ● Legacy code, migration process is needed ● Big organization ● Hierarchical organization chart ● Waterfall oriented ● Monolithic oriented 61

Slide 62

Slide 62 text

@spiddy Kubernetes on Enterprise ● Multiple clusters are needed to support HA on multiple datacenters ● Container Images promotion process ○ Vulnerability scanning from security team ● Networking is hardened ○ Connection to Internet is restricted/limited ○ Network isolation per Namespace ● Assets are provisioned ○ Using LimitRanges & ResourceQuotas ● Pods are hardened ○ Using PodSecurityPolicies ● Multiple teams need access to clusters ○ Each team can manage their own resources 62

Slide 63

Slide 63 text

@spiddy Using Custom Resources to extend workflow 63

Slide 64

Slide 64 text

@spiddy Multiple teams need access to clusters ● Teams can create projects with their own namespaces (dev, pre, pro) ● They can assign project members ● They can grant rolebindings to project members 64

Slide 65

Slide 65 text

@spiddy Project Initializer - The Cloud Native way 65

Slide 66

Slide 66 text

@spiddy 66 https://github.com/harbur/kubernetes-project-initializer-tutorial/

Slide 67

Slide 67 text

Thank You! Innovating Container Delivery

Slide 68

Slide 68 text

@spiddy Thank you 68