Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2kG4Tm9.
Brendan Burns talks about the generic interface for service mesh technology. The goal of this abstraction layer is to provide an easy-to-consume API that can be implemented by many different service mesh implementations (e.g. Istio, Linkerd, etc). Users are free to adopt service mesh concepts without being bound to any particular implementation. He covers the SMI specification and implementations. Filmed at qconnewyork.com.
Brendan Burns is a Distinguished Engineer in Microsoft Azure and co-founder of the Kubernetes open source project. In Azure he leads teams that focus on containers, open source and DevOps, including the Azure Kubernetes Service, Azure Resource Manager, Service Fabric and Azure Linux teams.
2. InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
service-mesh-interface/
3. Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
12. This isn't a new pattern...
• Open Container Image
• Container Network Interface
• Container Storage Interface
• Storage Volumes
• Ingress
• NetworkPolicy
• ...
13. Good reasons
for this
approach
USERS NEED CONCEPTS
NOT IMPLEMENTATION
TOOL VENDORS NEED
ABSTRACTION,NOT
SPECIALIZATION
IMPLEMENTORSNEED
ISOLATION FROM USERS
17. Service Mesh Interface: TrafficTarget
kind: TrafficTarget
apiVersion: access.smi-spec.io/v1alpha1
metadata:
name: example-target
destination:
# destination spec here
specs:
# route spec here
sources:
# source spec(s) here
18. Service Mesh Interface: Destinations
…
destination:
# This selects a set of Pods
kind: ServiceAccount
name: my-api-impl
# This defines the traffic
port: 8080
…
19. Service Mesh Interface: TrafficTarget
kind: TrafficTarget
apiVersion: access.smi-spec.io/v1alpha1
metadata:
name: example-target
destination:
# destination spec here
specs:
# route spec here
sources:
# source spec(s) here
20. Service Mesh Interface: Routes
…
# This selects a set of paths
specs:
- kind: HTTPRouteGroup
name: api-route
matches:
- api
…
21. Service Mesh Interface: TrafficTarget
kind: TrafficTarget
apiVersion: access.smi-spec.io/v1alpha1
metadata:
name: example-target
destination:
# destination spec here
specs:
# route spec here
sources:
# source spec(s) here
22. Service Mesh Interface: Sources
…
# This identifies the allowed sources
sources:
# This selects a set of Pods
- kind: ServiceAccount
name: my-api-callers
…
23. Putting it all together…
SMI
TrafficTarget
ServiceAccount:
my-api-impl
Destination
ServiceAccount:
my-api-callers
Sources
SMI
HTTPRouteGroup
https://service:8080/api
25. Service Mesh Interface – Traffic Split
SMI
TrafficSplit
my-experiment
experiment
Service
canary
Service
production
Service
Kubernetes Services
my-experiment
Service
27. Service Mesh Interface - TrafficMetrics
# all in-bound traffic
edge:
direction: to
resource: {}
# all out-bound traffic to Pod foobar
edge:
direction: from
resource:
name: foobar
kind: Pod
28. Service Mesh Interface - TrafficMetrics
# all in-bound traffic from a Service
edge:
direction: to
resource:
name: my-service
kind: Service
30. Service Mesh Interface – TrafficMetrics Overview
Kubernetes
API
Servertraffic.metrics.k8s.io
Traffic Metrics
Server
Prometheus,
etc.
metrics scrape/push