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/jobs
Formerly 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=aws
Run installation:
$ konvoy up
Use 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 ingressroute
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
Traefik 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.yaml
Deploy 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.yaml
Deploy 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.yaml
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
Maesh in Konvoy