Harness your routing super-hero power in Kubernetes with Traefik, Maesh and Konvoy


Damien DUPORTAL:
Træfik's Developer 🥑 Advocate @ Containous

We Believe in Open Source
We Deliver Traefik, Traefik Enterprise Edition and Maesh
Commercial Support
30 people distributed, 90% tech
We are hiring!
docker run -it containous/jobsFormerly known as Mesosphere
"Day-Two-I-Q"
A smarter approach to "Day 2 Operations"
"Day 2" refers to the phase of the development lifecycle that follows initial deployment where the real application demands exist.
Embrace Kubernetes when:
Beginning your journey 🐣
Preparing for Day 2 🦅
Technical Solutions:
Konvoy
MKE (Mesosphere Kubernetes Engine)
Services:
Professionnal Services
Training
Support
A packaged 📦 Kubernetes ⎈ with integrated operational services 🛠.
Gain Flexibility Across Any Infrastructure
Manage Operations With Ease
Ensure Rapid Technology Adoption and Scale
Harness Premiere Domain Expertise
Standalone Native Distribution of Kubernetes
"One button push" User Experience
Packaged with a set of services for Operations

Install a Konvoy Cluster in AWS EC2:
Prepare installation:
$ konvoy init --provisioner=awsRun installation:
$ konvoy upUse it:
$ konvoy apply kubeconfig && kubectl cluster-info
Kubernetes master is running at (...)
KubeDNS is running at (...)
kubernetes-dashboard is running at (...)Operations Portal
Network: CoreDNS, Calico, MetalLB, Traefik
Security: Identity Management, SSO, TLS
Logging: Fluentbit, Elasticsearch, Kibana
Monitoring and Metrics: Prometheus, Grafana
Back up and restore: Velero




Why, Mr Anderson?



















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

MIT License
Written in Go
25,000+ ⭐ 1B+ ⬇️ 400+ 👷
Created in 2015, 4Y 🎂
Current stable branch: v2.0



Konvoy and Traefik v1






# 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 ingressrouteapiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
name: ingressroutetcpmongo.crd
spec:
entryPoints:
- mongotcp
routes:
- match: HostSNI(`mongo-prod`)
services:
- name: mongo-prod
port: 27017Traefik v2 in Konvoy
What about routing traffic from service to services?

Maesh is a lightweight, easy to configure, and non-invasive service mesh that allows visibility and management of the traffic flows inside any Kubernetes cluster.


Install Maesh (Helm Chart):
helm repo add maesh https://containous.github.io/maesh/charts
helm repo update
helm install --name=maesh --namespace=maesh maesh/maesh --values=./maesh/values.yamlDeploy Applications:
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.yamlDeploy SMI Objects to allow traffic in the mesh:
kubectl apply -f apps/5-smi-http-route-groups.yaml
kubectl apply -f apps/6-smi-traffic-targets.yamlapiVersion: 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: appsMaesh in Konvoy
