SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
z użyciem OpenShift Serverless
Aplikacje natywne dla Kubernetes
Chris Suszyński
@ksuszynski /in/krzysztof-suszynski
WarsawJS #75
10 listopada 2020 r.
O mnie
2
Chris Suszyński
● Senior Software Quality Engineer
w Red Hat
● Pracuje nad OpenShift Serverless
● Entuzjasta Java i Go
● 15+ lat doświadczenia
● Oddycham Open Source:
≥ 70 oryginalnych otwartych repo
● Występuję na meetup’ach i
konferencjach
● Szczęśliwy ojciec i mąż
Agenda
1. Wprowadzenie
2. Czym jest Serverless?
3. OpenShift Serverless i Knative
4. Knative Serving
5. Knative Eventing
6. Aplikacje Kubernetes-native
7. Q&A
Trudna prawda
4
“Większość aplikacji
enterprise ciągle jest
monolityczna“
Monolit
5
MyBank
Wewnątrz monolitu
6
Dzielimy monolit
7
Wprowadzamy mikro usługi
8
Wprowadzamy mikro usługi
9
Wprowadzamy mikro usługi
10
Sieć wywołań w mikro usługach
11
Mikro usługi i trwały stan danych
12
Wiele usług brzegowych
13
Zespoły i procesy wdrożeniowe
14
Mindblown
15
Przerażająca zmiana
16
Słodkie Małe Duże Mono
Co 3 miesiące Każdego
tygodnia/dnia/godziny
Potrzebujemy nowych pomysłów
17
“Nie możemy rozwiązywać
naszych problemów tym
samym sposobem myślenia,
który stosowaliśmy przy ich
tworzeniu.”
⸺ Albert Einstein
(Fizyk teoretyczny)
18
Droga do wspaniałości
Self-Service,
On-Demand,
Elastic
Infrastructure
Automatyzacja
Pipeline
wdrożeniowy
CI/CD
Zaawansowane
techniki
wdrożeniowe
Mikro Usługi
Re-Org do
DevOps
19
Serverless computing
“Przetwarzanie bezserwerowe odnosi się do koncepcji budowania i
uruchamiania aplikacji, które nie wymagają zarządzania serwerem.
Opisuje model wdrożenia, w którym wdrażamy pakiet jednej lub więcej
funkcjonalności, na platformę, a następnie uruchamiamy, skalujemy i
rozliczamy w odpowiedzi na dokładne zapotrzebowanie w danym
momencie”
— CNCF Definition,
https://www.cncf.io/blog/2018/02/14/cncf-takes-first-step-towards-serverless-computing
Wzorzec “Serverless”
Zdarzenie Twoja aplikacja Wyniki
Żądania HTTP
Widomości Kafka
Upload zdjęcia
Nowe zamówienie
Logowanie się użytkownika
wzbudza produkuje
21
Wzorzec "Serverless"
Aplikacja webowa serverless
Kontener
Żądanie HTTP
Kontenery
Żądanie HTTP
Baza danych
Przeglądarka
Przeglądarka
myapp.example.com
22
Wzorzec "Serverless"
Przetwarzanie wiadomości z Kafka
Kontener
Kontener
Magazyn
Wiadomość Kafka
Wiadomość Kafka
System zewnętrzny
System zewnętrzny
23
Serverless - korzyści operacyjne
23
With Serverless
Za dużo zasobów
Koszty IT niewykorzystanych
zasobów
Za mało zasobów
Utrata dochodów
Niska jakość usług
Dostosowanie użycia
Bezpośrednia korelacja
pomiędzy kosztami IT a
przychodami z działalności
BEZ Serverless z Serverless
Przetwarzanie bezserwerowe
OpenShift Serverless
to rozszerzenie Kubernetes
pozwalające wdrażać i
zarządzać nowoczesnymi
aplikacjami serverless.
Knative
Eventing
Narzędzia do konsumpcji i
produkcji zdarzeń, które
będą stymulować aplikacje.
Serving
Model oparty na żądaniach,
który serwuje kontener z
aplikacją i może “skalować
się do zera”.
26
Elementy Knative
27
Knative w OpenShift
● Knative to projekt Open Source (ufundowany w 2018 przez Google)
● Wspólnota napędzana przez wiele podmiotów
○ https://github.com/knative
○ https://knative.dev
○ Wspierany przez Google, Red Hat, IBM, VMware, TriggerMesh, SAP i więcej
● OpenShift Serverless: https://www.openshift.com/learn/topics/serverless
● W pełni wspierane wydanie 1.10.0 (Knative 0.16)
28
Kontenery i funkcje bezserwerowe sterowane zdarzeniami
➤ Wdrażanie i uruchamianie kontenerów serverless
➤ Używanie dowolnego języka programowania
➤ Modernizacja istniejących aplikacji do modelu Serverless
➤ Bogaty ekosystem źródeł zdarzeń
➤ Zarządzanie aplikacjami serverless natywnie w Kubernetes
➤ W oparciu o projekt open source Knative
➤ Działa na każdej platformie wspieranej przez OpenShift
Generally Available
OPENSHIFT
OpenShift Serverless
SERVING EVENTING*
Red Hat Enterprise Linux CoreOS
Fizyczny Wirtualny Prywatna chmura Chmura publiczna
Aplikacje Zdarzenia
F
* Eventing na poziomie wsparcia Technology Preview
** Functions to obecnie inicjatywa w rozwoju
FUNCTIONS**
OpenShift Serverless
Demo!
Installation & Hello World
Serverless Serving
Łatwe trasowanie, skalowanie
do zera i automatyczne
śledzenie rewizji
31
● Autoskalowanie oparte na potrzebach, w tym
skalowanie do zera
● Oddzielenie kodu od konfiguracji
● Opiniotwórczy model wdrożenia dostosowany do
aplikacji bezstanowych
● Bogate możliwości podziału ruchu, umożliwiające
bezpieczne wprowadzanie nowych wersji
Koncepcje w Serving
32
Service
Route Configuration
Revision
Revision
Revision
zarządza
kieruje
ruch do
zapisuje
historię
zmian
10%
90%
● Configuration reprezentuje “pływający
HEAD” historii Rewizji
● Revision reprezentuje niezmienną
migawkę kodu i konfiguracji
● Route konfiguruje ingress przy użyciu
zestawu rewizji
● Service (to nie service K8s!) to publiczna
encja, którą będziemy zarządzać, fasada dla
użytkownika
Zasoby w Serving
33
apiVersion: apps/v1
kind: Deployment
metadata:
name: random
spec:
replicas: 1
selector:
matchLabels:
app: random
template:
metadata:
labels:
app: random
spec:
containers:
- image: rhsummit2020/random:1.0
name: random
ports:
- containerPort: 8080
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: random
spec:
replicas: 1
selector:
matchLabels:
app: random
template:
metadata:
labels:
app: random
spec:
containers:
- image: rhsummit2020/random:1.0
name: random
ports:
- containerPort: 8080
Routing i autoscaling
out-of-the-box
… oraz K8s Service,
Route, Autoscaler
Migracja deployment do Knative
Serving
kn service
kn service create
kn service delete
kn service describe
kn service list
kn service update
Configuration
Revision 1
Revision 2
Revision 3
Application
(Knative Service)
Routes
Directs
traffic
Traffic splitting
kn revision
kn revision delete
kn revision describe
kn revision list
kn route
kn route describe
kn route list
● Od adresu do kontenera w kilka sekund
● Prostsze doświadczenie deweloperskie dla K8s
● Wbudowane wersjonowanie, podział ruchu i więcej
● Uproszczona lekka instalacji z użyciem Kourier
● Automatyczny TLS/SSL
34
Demo!
Autoscaling
Serverless Eventing
Uniwersalna subskrypcja, kanały
transportu i punkty wejściowe dla
Cloud Events
Serverless Eventing
● Bazuje na CloudEvents (zwykłe HTTP, standard CNCF)
● Wymienialny transport zdarzeń: Channels
○ In-Memory (dev only)
○ Apache Kafka
○ Google Pub-Sub, …
● Elastyczne przesyłanie zdarzeń z Sources do Sinks
○ Source: Adapter integrujący systemy zewnętrzne i emitujący
CloudEvents
○ Sink: Adresowalny (HTTP) punkt końcowy odbierający
CloudEvents (może być Kn Service lub K8s Service)
37
38
Źródła
Wbudowane źródła
PingSource Okresowo emituje statyczny CloudEvent
ApiServerSource Zgłasza zdarzenia K8s API Server jako CloudEvent
SinkBinding Łączy dowolny pod do Sink
Inne źródła
GitHubSource Zamienia webhooki GitHub na CloudEvents
KafkaSource Widomości Kafka jako CloudEvents
CamelKSource Komponenty Apache Camel jako źródła CE
and many more: https://knative.dev/docs/eventing/sources/
Source → Sink : Bezpośrednio
● Najprostszy sposób wysłania CloudEvent do usługi
● Wady:
○ Brak wsparcia kolejkowania, jeżeli usługa jest niedostępna
○ Brak mechanizmu back-pressure
○ Tylko jedna usługa może konsumować zdarzenia
○ Brak filtrowania, Sink zawsze dostanie wszystkie zdarzenia
sink:
39
Source → Sink : Broker i Trigger
Broker
● Eventing Mesh dla dostarczania zdarzeń
● Źródła adresują go jako Sink
Trigger
● Filtruje zdarzenia po ich atrybutach z
CloudEvents (np. type)
● Łączy Sink z Brokerem40
Demo!
Eventing system
Aplikacje używające Knative wraz z
Tekton są naturalne dla Kubernetes.
Wykorzystują K8s jako szkielet
rozwiązania.
Aplikacje Kubernetes-native
43
Knative+JS Resources
● bit.ly/knative-tutorial
● developers.redhat.com/coderland/serverless
● github.com/cardil/knative-serving-showcase-js
● bit.ly/kubernetes-tutorial
● developers.redhat.com
● access.redhat.com/products/nodejs
http://linkedin.com/company/Red-Hat
http://youtube.com/user/RedHatVideos
http://facebook.com/RedHatinc
https://twitter.com/RedHat
Chris Suszyński
@ksuszynski /in/krzysztof-suszynski

Más contenido relacionado

Similar a Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - WarsawJS #75

Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Michał Kurzeja
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wojciech Barczyński
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITamarekmisztal
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OSLukasz Kaluzny
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i OpsaAplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i OpsaMichal Balinski
 
PLNOG 7: Michał Jura - Linux Contextualization
PLNOG 7: Michał Jura - Linux ContextualizationPLNOG 7: Michał Jura - Linux Contextualization
PLNOG 7: Michał Jura - Linux ContextualizationPROIDEA
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackThe Software House
 
Kontenery w Azure
Kontenery w AzureKontenery w Azure
Kontenery w AzureChmurowisko
 
Wprowadzenie Do Asp
Wprowadzenie Do AspWprowadzenie Do Asp
Wprowadzenie Do AspKelut
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azurepbubacz
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPROIDEA
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowych
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowychJan Lekszycki, Wirtualizacja dla dostawców usług internetowych
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowychWebhosting.pl
 
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...Biznes 2.0
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 

Similar a Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - WarsawJS #75 (20)

Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019Kubernetes - 0 do 1 - 4Developers Warszawa 2019
Kubernetes - 0 do 1 - 4Developers Warszawa 2019
 
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
Wprowadzenie do Kubernetesa. K8S jako nowy Linux.
 
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITaWersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OS
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i OpsaAplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
Aplikacje w chmurze (prywatnej) z perspektywy Deva i Opsa
 
PLNOG 7: Michał Jura - Linux Contextualization
PLNOG 7: Michał Jura - Linux ContextualizationPLNOG 7: Michał Jura - Linux Contextualization
PLNOG 7: Michał Jura - Linux Contextualization
 
Testowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStackTestowanie rozwiązań serverless z LocalStack
Testowanie rozwiązań serverless z LocalStack
 
Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?Swoole w PHP. Czy to ma sens?
Swoole w PHP. Czy to ma sens?
 
Kontenery w Azure
Kontenery w AzureKontenery w Azure
Kontenery w Azure
 
Wprowadzenie Do Asp
Wprowadzenie Do AspWprowadzenie Do Asp
Wprowadzenie Do Asp
 
Rundeck & Ansible
Rundeck & AnsibleRundeck & Ansible
Rundeck & Ansible
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
Nowości Windows Azure
Nowości Windows AzureNowości Windows Azure
Nowości Windows Azure
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowych
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowychJan Lekszycki, Wirtualizacja dla dostawców usług internetowych
Jan Lekszycki, Wirtualizacja dla dostawców usług internetowych
 
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...
Wirtualizacja dla dostawców usług internetowych. Wyzwania i możliwości, Jan L...
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 

Aplikacje natywne dla Kubernetes z wykorzystaniem OpenShift Serverless - WarsawJS #75