Bilgin Ibryam Product Manager @RedHat @bibryam
The Evolution of Distributed Systems on Kubernetes
1
The Evolution of Distributed Systems on Kubernetes Bilgin Ibryam - - PowerPoint PPT Presentation
The Evolution of Distributed Systems on Kubernetes Bilgin Ibryam Product Manager @RedHat @bibryam 1 Bilgin Ibryam Product Manager at Red Hat Former Architect/Consultant Committer at Apache Camel Author of Camel Design
Bilgin Ibryam Product Manager @RedHat @bibryam
1
@bibryam
2
“Kubernetes Patterns” books
@bibryam
3
@bibryam
4
@bibryam
5
6
@bibryam
7
@bibryam
8
serverless, etc)
@bibryam
9
@bibryam
10
@bibryam
11
12
@bibryam
13
@bibryam
14
○ Single, shared language runtime ○ Manual deployment/rollback ○ Manual placement ○ Manual scaling ○ No resource/failure isolation
15
@bibryam
16
@bibryam
17
@bibryam
18
@bibryam
19
@bibryam
20
@bibryam
21
Predictable resource demand Automated placement
@bibryam
22
○ environment variables ○ volumes
○ Minimal Node spread ○ Only stored in memory in a tmpfs ○ Encrypted in the backend store (etcd) ○ Access can be restricted with RBAC
@bibryam
23
(For more Kubernetes Patterns, check out the link at the end of the slides)
@bibryam
Batch/Periodic Job
24
Global Singleton Stateful Service Stateless Service
@bibryam
25
batch jobs, serverless
26
@bibryam
27
Deployment guarantees Lifecycle guarantees
@bibryam
28
@bibryam
29
Default schema
Default controllers
Managed resources state
@bibryam
30
kind: ConfigWatcher apiVersion: k8spatterns.io/v1 metadata: name: webapp-config-watcher spec: configMap: webapp-config podSelector: app: webapp
Custom operator
Custom application
31
@bibryam
32
@bibryam
33
@bibryam
34
@bibryam
35
@bibryam
36
Abstract away details and decouple consumers from implementations
Enhances the reliability and the visibility of the networking interactions
@bibryam
37
Serving Common infrastructure for request-driven interactions that can "scale to zero". Eventing Common infrastructure for consuming and producing events declaratively.
@bibryam
38
○ Single Port ○ No PersistentVolumes ○ Single Container
apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata: name: lotto spec: replicas: 1 selector: matchLabels: app: lotto template: metadata: labels: app: lotto spec: containers:
@bibryam
39
containers
@bibryam
40
○ Simplified deployment for stateless workloads ○ Traffic based autoscaling including Scale-to-Zero ○ Traffic splitting for custom rollout / rollback scenarios
○ External triggers for feeding Knative Services ○ Based on CloudEvents ○ Backed by proven messaging systems ○ Declarative messaging infrastructure
@bibryam
41
Sidecar architecture Developer first, standard APIs used from any programming language or framework. Building blocks Make it easy for developers to create microservice without being an expert in distributed systems.
@bibryam
42
Distributed Tracing See and measure the message calls across components and networked services Service Invocation Act as a reverse proxy with built-in service discovery, tracing and error handling Publish & Subscribe Secure, scalable messaging between services Resource Bindings Trigger code through events from input and output bindings to external resources. Actors Encapsulate code and data in reusable actor objects as a common microservices State Management Provides a key/value-based state API with pluggable state stores for persistence
@bibryam
43
Source: https://github.com/dapr/docs
@bibryam
44
Source: https://github.com/dapr/docs
@bibryam
45
Service discovery Dynamic routing Resiliency Observability Deployment Placement Config mgmt Scaling Bindings State abstraction Pub/Sub Observability Connectors Eventing Filtering Serverless
46
@bibryam
47
Source: https://operatorhub.io
@bibryam
○ KIP-559 can enable bridging, validation, encryption, filtering, transformation
48
@bibryam
49
Dev Environment Cloud kamel CLI Camel K Operator Custom Resource Running Pod Fast redeploy! Less than 1 second!
uri: "direct:route" steps:
tokenize: ","
Camel-K Operator: 1. Choose a runtime 2. Scaffold a project 3. Add boilerplate 4. Add dependencies 5. Create container image 6. Create Kubernetes resources for deployment
Source: https://github.com/apache/camel-k Live updates!
@bibryam
50
Source: https://github.com/cloudstateio/cloudstate
51
@bibryam
52
@bibryam
53
@bibryam
54
55