Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Aplikacje natywne dla Kubernetes z wykorzystani...

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

Czy Serverless to uruchamianie prostych funkcji w chmurze? FaaS? To znacznie więcej! Serverless odnosi się do koncepcji budowania i uruchamiania aplikacji, które nie wymagają zarządzania serwerami.

Opisuje model wdrażania, w którym aplikacje, spakowane jako jedna lub więcej funkcji, są przesyłane na platformę, a następnie uruchamiane, skalowane i rozliczane w odpowiedzi na dokładnie potrzebne zapotrzebowanie w danym momencie.

Jak korzystać z Knative zarówno w Kubernetes, jak i na platformie OpenShift. Mam nadzieję, że zrozumiemy, dlaczego Twoja organizacja powinna rozważyć użycie Knative jako jednego z podstawowych modeli wdrażania w czasach chmury hybrydowej. Wszystko to w duchu otwartego oprogramowania!

Chris Suszynski

November 10, 2020
Tweet

More Decks by Chris Suszynski

Other Decks in Technology

Transcript

  1. z użyciem OpenShift Serverless Aplikacje natywne dla Kubernetes Chris Suszyński

    @ksuszynski /in/krzysztof-suszynski WarsawJS #75 10 listopada 2020 r.
  2. 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ąż
  3. 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
  4. 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)
  5. 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
  6. 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
  7. Wzorzec “Serverless” Zdarzenie Twoja aplikacja Wyniki Żądania HTTP Widomości Kafka

    Upload zdjęcia Nowe zamówienie Logowanie się użytkownika wzbudza produkuje
  8. 21 Wzorzec "Serverless" Aplikacja webowa serverless Kontener Żądanie HTTP Kontenery

    Żądanie HTTP Baza danych Przeglądarka Przeglądarka myapp.example.com
  9. 22 Wzorzec "Serverless" Przetwarzanie wiadomości z Kafka Kontener Kontener Magazyn

    Wiadomość Kafka Wiadomość Kafka System zewnętrzny System zewnętrzny
  10. 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
  11. 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
  12. 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)
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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/
  20. 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
  21. 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 Brokerem 40
  22. Aplikacje używające Knative wraz z Tekton są naturalne dla Kubernetes.

    Wykorzystują K8s jako szkielet rozwiązania. Aplikacje Kubernetes-native