Krótki przewodnik po Knative Serverless Framework dla początkujących

Struktury bezserwerowe są poszukiwane przez ostatnie kilka lat i są świadkami zwiększonej adopcji wśród programistów.

Niemniej jednak aplikacje oparte na kontenerach są już popularne, podobnie jak Kubernetes wśród firm.

Kubernetes to bez wątpienia świetne narzędzie o dużym potencjale. Jego ekosystem rozwija się również dzięki wielu nowym narzędziom i najnowszym technologiom, takim jak Knative, który może uczynić Kubernetes jeszcze lepszym.

Knative został wprowadzony w celu przezwyciężenia sytuacji prowadzących do awarii i ustanowienia podstawowego standardu dla platform chmurowych i orkiestracji natywnej dla chmury.

Innymi słowy, bezserwerowa platforma Knative może lepiej dopasować się do potrzeb firmy niż inne bezserwerowe wdrożenia oparte na chmurze.

W tym przewodniku opowiem o Knative, jego zaletach, przypadkach użycia, procedurze instalacji, procedurze pracy i nie tylko.

No to ruszamy!

Co to jest natywny?

Knative to bezserwerowa platforma oparta na Kubernetes, która została po raz pierwszy opracowana przez Google. Ładuje i uruchamia funkcje bezserwerowe w oparciu o wymagania firmy, minimalizując w ten sposób straty. Jest to projekt typu open source, który dodaje komponenty do wdrażania, uruchamiania i zarządzania aplikacjami bezserwerowymi na Kubernetes.

Głównym celem bezserwerowej struktury Knative jest zarządzanie standardami orkiestracji międzyplatformowej. Jest to realizowane poprzez integrację funkcji tworzenia kontenerów, automatycznego skalowania, modeli zdarzeń i zarządzania obciążeniem.

Wcześniej istniało wiele innych rozwiązań open-source innych niż Knative. Każde rozwiązanie ma swój sposób wdrożenia, co może powodować fragmentację rynku ze względu na brak ustandaryzowanych praktyk. Oznacza to, że wybór konkretnego dostawcy jest konieczny, jeśli chcesz korzystać z określonej funkcji systemu.

Jednak na front zaczęły wysuwać się problemy migracyjne. Aby uniknąć takich problemów, wprowadzono framework Knative serverless. Tak więc, jeśli masz trudności z włączeniem jakichkolwiek zadań, Knative może wydajnie to zrobić w ramach potoku opartego na Kubernetes.

Knative składa się z trzech kawałków:

  • Knative Build: Buduje obrazy kontenerów i udostępnia je z kodu źródłowego.
  • Udostępnianie natywne: używa Istio i Kubernetes do łączenia i wdrażania tych obrazów kontenerów za pośrednictwem przypisanych zasobów infrastruktury.
  • Knative Eventing: umożliwia użytkownikom definiowanie wyzwalaczy zdarzeń i umożliwia użytkownikom powiązanie wyzwalaczy zdarzeń z funkcjami kontenerowymi.

Ilekroć Knative zidentyfikuje zdarzenie, definiuje skojarzony proces, aby uruchomić je na żądanie. Dzięki Knative nie ma potrzeby przydzielania węzłów kontenerów, klastrów i podów do pracy, ponieważ Knative zatwierdza zasoby hostingu tylko wtedy, gdy dany proces jest uruchomiony. W ten sposób Knative równoważy korzyści bezserwerowe i kontenerowe.

Podstawowe pojęcia Knative

Omówmy główne koncepcje Knative Serverless Framework i ich związek z elementami podstawowymi Knative.

Budować

Budowanie natywne pomaga wykorzystać i rozszerzyć istniejące prymitywy Kubernetes, umożliwiając uruchamianie kompilacji kontenerów od źródła. Umożliwia kod źródłowy z zależności i repozytorium, budowanie obrazów kontenerów i ich rejestrację.

Wydarzenia

Wydarzenie pomaga w tworzeniu lepszej komunikacji między luźno powiązanymi konsumentami zdarzeń i producentami w celu budowania architektury sterowanej zdarzeniami. Knative umieszcza te zdarzenia w kolejce, która musiała być wykonywana automatycznie bez skryptu programistów.

Później wydarzenia te są dostarczane do kontenerów. Następnie wysyła kanały do ​​producentów zdarzeń w celu wykonania zadań. Zmniejszy to obciążenie programisty przy tworzeniu kodu do nawiązywania połączenia.

Funkcje

Funkcja jest niezależną jednostką wdrażania i usługą Knative, taką jak mikrousługa. Jego kod jest napisany w celu wykonania pojedynczego zadania, takiego jak:

  • Przetwarzanie pliku w bazie danych
  • Zapisywanie użytkownika w bazie danych
  • Wykonywanie zaplanowanej pracy

Knatywna bezserwerowa platforma została zaprojektowana tak, aby umożliwić efektywne opracowywanie i wdrażanie funkcji oraz zarządzanie nimi.

Wtyczki

Łatwo rozszerzaj lub nadpisuj funkcjonalność bezserwerowego frameworka Knative za pomocą wtyczek. Każdy plik serverless.yml zawiera właściwość wtyczki, która zawiera różne wtyczki.

Zasoby

Zasoby to bezserwerowe komponenty infrastruktury Knative, z których korzysta Twoja funkcja, w tym:

  • Źródło zdarzenia AWS SQS
  • Zaplanowane zadanie (uruchamiane co 5 minut, 10 minut itd.)
  • Źródło wydarzenia Kafki

I więcej.

Usługi

Usługi są jak projekt. W związku z tym usługa jest jednostką organizacyjną platformy Knative bezserwerowej. Chociaż możesz mieć wiele usług dla jednej aplikacji, możesz myśleć o usłudze jako o pliku projektu.

To tutaj będziesz mógł zdefiniować funkcje, zdarzenia i zasoby, wszystko w jednym pliku o nazwie serverless.yml, serverless.json lub serverless.js. Po wdrożeniu usług z platformą bezserwerową wszystko w pliku jest wdrażane jednocześnie.

Porcja

Obsługa natywna jest wbudowana w Istio i Kubernetes, która obsługuje wdrażanie aplikacji. Umożliwia szybkie tworzenie kontenerów bezserwerowych, programowanie sieciowe i automatyczne skalowanie komponentów Istio. Obsługa natywna traktuje kontenery jako skalowalną usługę, która może obejmować od jednej do wielu instancji kontenerów.

Cechy Knative

Omówmy niektóre cechy bezserwerowego frameworka Knative:

  • Knative to bezserwerowa platforma oparta na Kubernetes, która umożliwia wdrażanie usług na Kubernetes.
  • Łatwo integruje Knative z obsługiwanym środowiskiem
  • Deweloperzy mogą bezpośrednio korzystać z Kubernetes API za pomocą Knative do wdrażania usług bezserwerowych
  • Umożliwia użytkownikom uruchamianie usług bezserwerowych za pomocą systemu zdarzeń Knative

Jak działa Knative?

Knatywna platforma bezserwerowa działa jako segment sterowania zdarzeniami i łączy Istio i Kubernetes. Kubernetes pracuje jako koordynator dla mikrousług i kontenerów. Z drugiej strony Istio to technologia siatki typu open source, która łączy różne komponenty w celu interakcji z użytkownikiem i sobą.

Knative udostępnia użytkownikom wiele komponentów przeznaczonych do wykonywania podstawowej codziennej pracy. Komponenty te są używane wielokrotnie w różnych zastosowaniach. Deweloper może używać dowolnego języka programowania. W związku z tym nie jest wymagana szczególna znajomość języków, ponieważ Knative rozpoznaje tylko obrazy kontenerów.

Istnieją trzy komponenty bezserwerowego frameworka Knative, które są kluczem do jego funkcjonowania.

Budowanie nowych kontenerów

Komponent build odpowiada za budowanie nowych kontenerów. Może konwertować kody źródłowe do kontenera. Knative można skonfigurować tak, aby spełniał specyficzne potrzeby biznesowe.

Najpierw Knative pobiera kod źródłowy z biblioteki, takiej jak Github. Następnie dodawane są podstawowe zależności, aby kod działał efektywnie. Obrazy kontenerów są następnie konstruowane i umieszczane w plikach, do których platforma Kubernetes ma dostęp.

Kontener jest udostępniany programistom korzystającym z Kubernetes i Knative. W ten sposób kontenery są budowane tak długo, jak znane jest pochodzenie kodu.

Obsługa lub obsługa platformy

Komponent obsługujący jest odpowiedzialny za działanie platformy. To wymaga:

  • Konfiguracja: Konfiguracja jest pewna w zarządzaniu wieloma wersjami usługi. Za każdym razem, gdy następuje wdrożenie nowej funkcji kontenera, Knative zapisuje istniejącą wersję i tworzy nową z najnowszymi zmianami i funkcjami. Ponadto Knative definiuje stan usługi.
  • Automatyczne skalowanie: aby lepiej działać kontenery bezserwerowe, musisz mieć możliwość autoskalowania kontenerów w górę lub w dół. Knative może w razie potrzeby automatycznie skalować usługi do wielu.
  • Inteligentne kierowanie usług: Jest to ważna część działającego mechanizmu Knative. Pozwala programistom kierować przepływ i ilość ruchu do różnych istniejących wersji mikrousług. Wprowadzając nowe funkcje i niebiesko-zielone strategie wdrażania, można korzystać z inteligentnego routingu usług.

Pozwala na wystawienie części użytkowników na ostatnie testy i wersję oraz stopniowe kierowanie ogromnego ruchu do nowej wersji.

WKKW w celu zdefiniowania funkcji

Komponent WKKW Knative odpowiada za opisanie funkcji Knative. Pozwala zdefiniować działanie kontenerów na podstawie zdarzeń. Różne zdarzenia uruchamiają określone funkcje kontenerów.

Deweloperzy mogą zdefiniować wyzwalacze zdarzeń i powiązane kontenery, aby umożliwić Knative wykonanie swojej pracy. Knative obsługuje listę zdarzeń i dostarczanie zdarzeń.

Korzyści z Knative

Knative zapewnia usługi, takie jak zarządzanie trasami, stopniowe zwalnianie i połączenie z usługą. Może pochwalić się ogromną społecznością. Porozmawiajmy o tym, jak Knative wpływa na firmy, aby przyjęły tę technologię.

  • W przeciwieństwie do innych rozwiązań, Knative ma standardowe zdarzenia i jest kompatybilny z rozwiązaniem FaaS. Oferuje standardowy framework CloudEvent, który pomaga w projektowaniu architektury bezserwerowej.
  • Chociaż Knative nie jest PaaS, umożliwia tworzenie bezserwerowego PaaS z bezserwerową platformą orkiestracji.
  • Knative ma pełnoprawną i dojrzałą konstrukcję bezserwerową.
  • Obsługuje wiele platform i zapewnia uniwersalny standard wśród dostawców chmury, aby wyeliminować możliwość powiązania dostawców z konkretnym rozwiązaniem.

  • Knative zapewnia elastyczne ramy.
  • Obsługuje proporcjonalne uwalnianie fazowe.
  • Możesz doświadczyć ekosystemu bezserwerowego w środowisku kontenerowym.
  • Knative usuwa niezawodność zarządzania i oprzyrządowania.
  • Możesz szybko przeprowadzić migrację do innych dostawców chmury zintegrowanych z Knative, wdrażając Kubernetes.
  • Oferuje model obliczeniowy oparty na żądaniach.
  • Pozwala zarządzać przepływami pracy jako usługą.
  • Dzięki Knative możesz przetwarzać dane IoT, przeprowadzać kontrole ułatwień dostępu i weryfikować konfiguracje grup zabezpieczeń.
  • Pozwala programistom skupić się na kodowaniu i szybko tworzyć kod iteracyjny.
  • Zapewnia programistom włączenie nowych wersji.
  • Model oparty na zdarzeniach firmy Knative pomaga wdrożyć projekty, w tym subskrypcję, połączenie z systemem zewnętrznym i rejestrację.

Wyzwania Knative (i niektóre rozwiązania)

Wyzwania dotyczące wydajności

Knative Framework, który obsługuje odpowiednie aplikacje, zapewnia lepszą wydajność przy minimalnych kosztach. Jednak niewłaściwe połączenie aplikacji może skutkować wyższymi kosztami i niewykorzystanymi zasobami kontenerów. Może to prowadzić do złej wydajności aplikacji, co jest największym wyzwaniem bezserwerowego wdrażania Knative.

W związku z tym słaba pula zasobów lub niewłaściwe aplikacje mogą zniszczyć wiele korzyści Knative.

Możesz sprostać temu wyzwaniu, wykonując testy w celu sprawdzenia ilości zasobów i kombinacji aplikacji w Knative. Zmierz obciążenia zdarzeń, określając średnie i maksymalne obciążenia dla każdego z nich, i oszacuj całkowite zużycie zasobów. Powtórz to dla kilku aplikacji, aby utworzyć i uruchomić konfigurację próbną w celu sprawdzenia oszacowań.

Wyzwania funkcjonalne

Funkcjonalne wyzwania Knative mogą być następujące:

  • Knative zależy od funkcji, które pasują do modelu bezstanowego. Oznacza to, że w samym komponencie nie są przechowywane żadne dane. Rozwój funkcji nie jest trudną fazą, ale wymaga niewielkiej zmiany podejścia, co oznacza, że ​​pojedynczy błąd może zrujnować działanie oprogramowania.
  • Dane biznesowe składają się z transakcji wieloetapowych, a funkcje bezstanowe utrzymują kontekst we wszystkich krokach. Knative nie ma takich możliwości, jak narzędzia bezserwerowe chmury publicznej.

Regularne monitorowanie i rozwiązywanie problemów może pomóc w utrzymaniu przyzwoitych wyników.

Wyzwania operacyjne

W porównaniu z ofertami bezserwerowymi w chmurze publicznej, Knative stanowi wyzwanie operacyjne. Administratorzy nie kontrolują bazowych serwerów z chmurą publiczną. Ale będą musieli zarządzać serwerami wraz z Kubernetes, kontenerami, Knative i samym Istio.

Knative minimalnie zwiększa złożoność operacji i rozwoju dla firm, które już zaangażowały się w Kubernetes i kontenery. Osoby zaangażowane w obsługę siatki i mikroserwisów uznają Knative za naturalne rozszerzenie.

Przypadki użycia Knative

W przypadku aplikacji, które powodują zmienną liczbę zdarzeń, które pozostają w ustalonych granicach lub przekraczają ustalone limity, Knative jest dla nich najlepszy. Konkretne przypadki użycia bezserwerowego frameworka Knative obejmują:

Niezbędna jest orientacja na wydarzenia. Jeśli zespoły IT nie wyobrażają sobie aplikacji jako serii zdarzeń zamiast transakcji, Knative może nie być dobrym wyborem ze względów funkcjonalnych i wydajnościowych.

Wymagania wstępne i instalacja Knative

Jak widać w powyższych sekcjach, Knative to zestaw komponentów, takich jak obsługa zdarzeń i obsługa, który działa na siatce usług i klastrze aranżacji obciążeń. Istnieją narzędzia wiersza poleceń, które musimy zainstalować, aby zapewnić prostą obsługę. Dlatego potrzebujemy kilku zależności, aby upewnić się, że możemy kontynuować instalację.

Warunki wstępne

Istnieje kilka opcji instalacji Kubernetes. Docker Desktop ma na celu umożliwienie łatwego klastra Kubernetes, który służy do różnych celów. Prostym podejściem jest użycie Kubernetes w platformie Docker do uruchomienia klastra Kubernetes wraz z węzłami kontenera platformy Docker. Wygodnym sposobem pracy z klastrem jest użycie narzędzia wiersza polecenia Knative.

Knative CLI oferuje łatwy i szybki interfejs do tworzenia swoich zasobów. Pomaga w złożonych zadaniach, takich jak podział ruchu i autoskalowanie. Wygodnym sposobem jest pobranie kompatybilnego pliku binarnego ze strony GitHub.

Instalacja

Po spełnieniu wszystkich wymagań wstępnych możemy przystąpić do instalacji komponentów. Dla środowiska programistycznego dostępna jest wtyczka szybkiego startu. Wtyczka pomaga w instalacji lokalnego klastra Knative za pomocą klienta Knative. Możesz pobrać wtyczkę szybkiego startu z oficjalnej strony wydania.

Wniosek: przyszłość Knative

Knative zastąpił przetwarzanie bezserwerowe, zapewniając automatyczne skalowanie aplikacji. Ma to znaczący wpływ na interoperacyjny i modułowy system.

Oczekuje się, że w przyszłości Knative pokryje obecne niedociągnięcia i stanie się jedną z najbardziej wydajnych technologii do obsługi architektury bezserwerowej.

Technologia natywna ma większy wpływ na programistów, patrząc na jej zalety w porównaniu z alternatywami bezserwerowymi. Knative pomoże Ci zaoszczędzić czas, zastępując potrzebę budowania i utrzymywania rozszerzeń Kubernetes. Deweloperzy są bardzo zadowoleni z technologii Knative, ponieważ jest ona łatwa w użyciu i stanowi świetną alternatywę dla rozwiązań bezserwerowych.

Jeśli więc chcesz zmaksymalizować moc środowiska Kubernetes w swoich przepływach pracy w chmurze, zastosuj technologię Knative i sam przekonaj się o korzyściach.