Routing Your Microservices Architecture To Ease DevOps Enterprise - - PowerPoint PPT Presentation

routing your microservices architecture to ease devops
SMART_READER_LITE
LIVE PREVIEW

Routing Your Microservices Architecture To Ease DevOps Enterprise - - PowerPoint PPT Presentation

Routing Your Microservices Architecture To Ease DevOps Enterprise Transformation Devops Gathering 2020 1 Whoami Manuel Zapf Head of Product Open Source @ Containous Maintainer on Traek @mZapfDE SantoDE 2 Containous


slide-1
SLIDE 1

Routing Your Microservices Architecture To Ease DevOps Enterprise Transformation

Devops Gathering 2020

1
slide-2
SLIDE 2

Whoami

Manuel Zapf Head of Product Open Source @ Maintainer on Containous Traek  @mZapfDE  SantoDE

2
slide-3
SLIDE 3

Containous

We Believe in Open Source We Deliver Traek, Traek Enterprise Edition, Maesh Commercial Support 30 people distributed, 90% tech https://containo.us

3 . 1
slide-4
SLIDE 4 3 . 2
slide-5
SLIDE 5

The Premise Of Microservices…

3 . 3
slide-6
SLIDE 6

… And What Happens

3 . 4
slide-7
SLIDE 7

Where’s My Service?

3 . 5
slide-8
SLIDE 8

Tools Of The Trade

3 . 6
slide-9
SLIDE 9

Source: Twitter[]

3 . 7
slide-10
SLIDE 10

What If I Told You?

That You Don’t Have to Write This Conguration File… ?

3 . 8
slide-11
SLIDE 11

Here Comes Traefik!

4 . 1
slide-12
SLIDE 12

Traefik Project

4 . 2
slide-13
SLIDE 13

Traefik 2.0 Quick Overview

Revamped Documentation Claried Concepts Expressive Routing Rule Syntax Middlewares TCP Support Canary / Mirroring And so Much More…

Learn more on the blog post

4 . 3
slide-14
SLIDE 14

Traefik (V2.0) Core Concepts

5 . 1
slide-15
SLIDE 15

Traefik Is An Edge Router

5 . 2
slide-16
SLIDE 16

Dynamically Discovers Services

5 . 3
slide-17
SLIDE 17

Architecture (V2.0) At A Glance

5 . 4
slide-18
SLIDE 18

Entrypoints

5 . 5
slide-19
SLIDE 19

Routers

5 . 6
slide-20
SLIDE 20

Middlewares

5 . 7
slide-21
SLIDE 21

Services

5 . 8
slide-22
SLIDE 22

Architecture (Again) At A Glance

5 . 9
slide-23
SLIDE 23

Static & Dynamic Configuration

5 . 10
slide-24
SLIDE 24

Traefik And Let’s Encrypt

6 . 1
slide-25
SLIDE 25

HTTPS & Let’s Encrypt

6 . 2
slide-26
SLIDE 26

Traefik With ⎈

Diagram from https://medium.com/@geraldcroes

7 . 1
slide-27
SLIDE 27

Ingress Example With ⎈

apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: corporate-webapp annotations: kubernetes.io/ingress.class: 'traefik' spec: rules:

  • host: localhost

http: paths:

  • backend:

serviceName: corporate-webapp servicePort: 80

7 . 2
slide-28
SLIDE 28

⎈ CRD - Custom Resources Definition

# File "webapp.yaml" apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: simpleingressroute spec: entryPoints:

  • web

routes:

  • match: Host(`localhost`) && PathPrefix(`/whoami`)

kind: Rule services:

  • name: webapp

port: 80 $ kubectl apply -f webapp.yaml $ kubectl get ingressroute

7 . 3
slide-29
SLIDE 29

⎈ & TCP (With CRD)

apiVersion: traefik.containo.us/v1alpha1 kind: IngressRouteTCP metadata: name: ingressroutetcpmongo.crd spec: entryPoints:

  • mongotcp

routes:

  • match: HostSNI(`mongo-prod`)

services:

  • name: mongo-prod

port: 27017

7 . 4
slide-30
SLIDE 30

East / West Traefik

8 . 1
slide-31
SLIDE 31

Say Hello To Maesh

8 . 2
slide-32
SLIDE 32

What Is Maesh?

Maesh is a lightweight, easy to congure, and non-invasive service mesh that allows visibility and management of the trafc

  • ws inside any Kubernetes cluster.
8 . 3
slide-33
SLIDE 33

Maesh Architecture

8 . 4
slide-34
SLIDE 34

More On Maesh

Built on top of Traek, SMI (Service Mesh Interface specication) compliant, Opt-in by default. Maesh Website

8 . 5
slide-35
SLIDE 35

Show Me The Code!

Install Maesh (Helm Chart): Deploy Applications: Deploy SMI Objects to allow trafc in the mesh:

helm repo add maesh https://containous.github.io/maesh/charts helm repo update helm install --name=maesh --namespace=maesh maesh/maesh --values=./maesh/values.yaml kubectl apply -f apps/0-namespace.yaml kubectl apply -f apps/1-svc-accounts.yaml kubectl apply -f apps/2-apps-client.yaml kubectl apply -f apps/3-apps-servers.yaml kubectl apply -f apps/4-ingressroutes.yaml kubectl apply -f apps/5-smi-http-route-groups.yaml kubectl apply -f apps/6-smi-traffic-targets.yaml

8 . 6
slide-36
SLIDE 36

A Closer Look To SMI Objects

apiVersion: specs.smi-spec.io/v1alpha1 kind: HTTPRouteGroup metadata: name: app-routes namespace: apps matches:

  • name: all

pathRegex: "/" methods: ["*"]

  • apiVersion: access.smi-spec.io/v1alpha1

kind: TrafficTarget metadata: name: client-apps namespace: apps destination: kind: ServiceAccount name: apps-server namespace: apps specs:

  • kind: HTTPRouteGroup

name: app-routes matches:

  • all

sources:

  • kind: ServiceAccount

name: apps-client namespace: apps

8 . 7
slide-37
SLIDE 37

That’s All Folks!

9 . 1
slide-38
SLIDE 38

We Have Stickers!

9 . 2
slide-39
SLIDE 39

We Are Hiring!

docker run -it containous/jobs

9 . 3
slide-40
SLIDE 40

Thank You!

 @mZapfDE  SantoDE

Slides (HTML): https://containous.github.io/slides/devops-gathering-2020 Slides (PDF): https://containous.github.io/slides/devops-gathering-2020/slides.pdf Source on : https://github.com/containous/slides/tree/devops-gathering-2020

10