Wdrożenia oparte na narzędziach Helm dla usługi Apache NiFi

Azure Kubernetes Service (AKS)

To rozwiązanie pokazuje, jak używać wykresów Helm podczas wdrażania interfejsu NiFi w usłudze Azure Kubernetes Service (AKS). Program Helm usprawnia proces instalowania aplikacji Kubernetes i zarządzania nimi.

Apache®, Apache NiFi i NiFi®® są zastrzeżonymi znakami towarowymi lub znakami towarowymi fundacji Apache Software Foundation w Stany Zjednoczone i/lub innych krajach. Użycie tych znaków nie jest dorozumiane przez fundację Apache Software Foundation.

Architektura

Diagram przedstawiający sposób konfigurowania przez użytkownika wykresu Helm w celu wdrożenia aplikacji na platformie Kubernetes. Składniki obejmują zasobniki i woluminy tworzone przez platformę Kubernetes.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

  • Pakiet Helm zawiera values.yaml plik. Ten plik zawiera listę wartości wejściowych, które użytkownicy mogą edytować.

  • Użytkownik dostosowuje ustawienia na wykresie, w tym wartości dla:

    • Rozmiary woluminów.
    • Liczba zasobników.
    • Mechanizmy uwierzytelniania i autoryzacji użytkownika.
  • Użytkownik uruchamia polecenie helm install , aby wdrożyć wykres.

  • Program Helm sprawdza, czy dane wejściowe użytkownika zawierają wartości dla wszystkich wymaganych zmiennych.

  • Program Helm tworzy manifest opisujący obiekty do wdrożenia na platformie Kubernetes.

  • Program Helm wysyła manifest do klastra Kubernetes. Usługa Apache ZooKeeper zapewnia koordynację klastra.

  • Platforma Kubernetes tworzy określone obiekty. Wdrożenie niFi wymaga następujących obiektów:

    • Obiekty konfiguracji.
    • Woluminy danych. Magazyn zasobnika jest tymczasowy.
    • Wolumin dziennika.
    • Zasobniki używające obrazu do uruchamiania interfejsu NiFi w kontenerze. Platforma Kubernetes używa zasobu obciążenia StatefulSet do zarządzania zasobnikami.
    • Usługa Kubernetes, która udostępnia interfejs użytkownika NiFi użytkownikom.
    • Trasy ruchu przychodzącego, jeśli klaster używa ruchu przychodzącego do udostępniania interfejsu użytkownika zewnętrznie.

Składniki

Pakiet Helm to kolekcja plików w folderze ze strukturą drzewa. Te pliki opisują zasoby platformy Kubernetes. Następujące składniki można skonfigurować na wykresie programu Helm:

ZooKeeper

Usługa ZooKeeper używa oddzielnego wykresu. Możesz użyć standardowego wykresu ZooKeeper, który platforma Kubernetes dostarcza w repozytorium wykresów inkubatora. Jednak gdy zależności obejmują zawartość rejestru publicznego, należy wprowadzić ryzyko w przepływach pracy tworzenia i wdrażania obrazów. Aby ograniczyć to ryzyko, zachowaj lokalne kopie zawartości publicznej, gdy będzie to możliwe. Aby uzyskać szczegółowe informacje, zobacz Zarządzanie zawartością publiczną za pomocą usługi Azure Container Registry.

Alternatywnie możesz wdrożyć usługę ZooKeeper samodzielnie. Jeśli wybierzesz tę opcję, podaj serwer ZooKeeper i numer portu, aby zasobniki z uruchomioną usługą NiFi mogły uzyskiwać dostęp do usługi ZooKeeper.

Kubernetes StatefulSet

Aby uruchomić aplikację na platformie Kubernetes, uruchom zasobnik. Ta podstawowa lekcja uruchamia różne kontenery, które implementują różne działania aplikacji.

Platforma Kubernetes oferuje dwa rozwiązania do zarządzania zasobnikami, które uruchamiają aplikację, na przykład NiFi:

  • Zestaw replik, który utrzymuje stabilny zestaw zasobników replik, które są uruchamiane w danym momencie. Często używasz zestawu replicaSet, aby zagwarantować dostępność określonej liczby identycznych zasobników.
  • StatefulSet, który jest obiektem interfejsu API obciążenia używanym do zarządzania aplikacjami stanowymi. Zestaw StatefulSet zarządza zasobnikami opartymi na identycznej specyfikacji kontenera. Platforma Kubernetes tworzy te zasobniki na podstawie tej samej specyfikacji. Ale te zasobniki nie są wymienne. Każdy zasobnik ma trwały identyfikator, który utrzymuje w ramach ponownej zmiany.

Ponieważ do zarządzania danymi używasz interfejsu NiFi, zestaw StatefulSet zapewnia najlepsze rozwiązanie dla wdrożeń NiFi.

ConfigMaps

Platforma Kubernetes oferuje ConfigMaps do przechowywania danych niepoufnych. Platforma Kubernetes używa tych obiektów do zarządzania różnymi plikami konfiguracji, takimi jak nifi.properties. Kontener, który uruchamia aplikację, uzyskuje dostęp do informacji o konfiguracji za pośrednictwem zainstalowanych woluminów i plików. ConfigMaps ułatwiają zarządzanie zmianami konfiguracji po wdrożeniu.

ServiceAccount

W zabezpieczonych wystąpieniach usługa NiFi używa uwierzytelniania i autoryzacji. NiFi zarządza tymi informacjami w plikach systemu plików. W szczególności każdy węzeł klastra musi obsługiwać authorizations.xml plik i users.xml plik. Wszyscy członkowie muszą mieć możliwość zapisu w tych plikach. Każdy węzeł w klastrze musi mieć identyczną kopię tych informacji. W przeciwnym razie klaster nie jest zsynchronizowany i ulegnie awarii.

Aby spełnić te warunki, możesz skopiować te pliki z pierwszego elementu członkowskiego klastra do każdego elementu członkowskiego, który istnieje. Każdy nowy element członkowski zachowuje własne kopie. Zasobniki zazwyczaj nie mają autoryzacji do kopiowania zawartości z innego zasobnika. Jednak usługa Kubernetes ServiceAccount umożliwia uzyskanie autoryzacji.

Usługi

Usługi Kubernetes udostępniają usługę aplikacji użytkownikom klastra Kubernetes. Obiekty usługi umożliwiają również węzłom członkowskim klastrów NiFi komunikowanie się ze sobą. W przypadku wdrożeń pakietu Helm użyj dwóch typów usług: usług bezgłowych i usług opartych na adresach IP.

Ruch przychodzący

Ruch przychodzący zarządza dostępem zewnętrznym do usług klastra. W szczególności wstępnie skonfigurowany kontroler ruchu przychodzącego uwidacznia trasy HTTP i HTTPS spoza klastra do usług w klastrze. Można zdefiniować reguły ruchu przychodzącego, które określają sposób kierowania ruchu przez kontroler. Wykres Helm zawiera trasę ruchu przychodzącego w konfiguracji.

Wpisy tajne

Aby skonfigurować zabezpieczone klastry NiFi, należy przechowywać poświadczenia. Wpisy tajne platformy Kubernetes zapewniają bezpieczny sposób przechowywania i pobierania tych poświadczeń.

Szczegóły scenariusza

Użytkownicy usługi Apache NiFi często muszą wdrażać interfejs NiFi na platformie Kubernetes. Wdrożenie platformy Kubernetes obejmuje wiele obiektów, takich jak zasobniki, woluminy i usługi. Trudno jest zarządzać manifestami lub plikami specyfikacji używanymi przez platformę Kubernetes dla tej liczby obiektów. Trudność zwiększa się podczas wdrażania kilku klastrów NiFi korzystających z różnych konfiguracji.

Wykresy helm zapewniają rozwiązanie do zarządzania manifestami. Helm jest menedżerem pakietów dla platformy Kubernetes. Za pomocą narzędzia Helm można usprawnić proces instalowania aplikacji Kubernetes i zarządzania nimi.

Wykres jest formatem pakowania używanym przez program Helm. Wymagania dotyczące konfiguracji należy wprowadzić w plikach wykresów. Program Helm śledzi historię i wersje każdego wykresu. Narzędzie Helm następnie używa wykresów do generowania plików manifestu platformy Kubernetes.

Na jednym wykresie można wdrażać aplikacje korzystające z różnych konfiguracji. Po uruchomieniu interfejsu NiFi na platformie Azure można użyć wykresów Helm do wdrożenia różnych konfiguracji NiFi na platformie Kubernetes.

Apache®, Apache NiFi i NiFi®® są zastrzeżonymi znakami towarowymi lub znakami towarowymi fundacji Apache Software Foundation w Stany Zjednoczone i/lub innych krajach. Użycie tych znaków nie jest dorozumiane przez fundację Apache Software Foundation.

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Dyski danych

W przypadku użycia dysku rozważ użycie rozłożonego zestawu dysków dla repozytoriów. W przypadku wdrożeń testowych, które używały zestawów skalowania maszyn wirtualnych, to podejście działało najlepiej. W poniższym fragmancie nifi.properties przedstawiono konfigurację użycia dysku:

nifi.flowfile.repository.directory=/data/partition1/flowfiles
nifi.provenance.repository.directory.stripe1=/data/partition1/provenancenifi.provenance.repository.directory.stripe2=/data/partition2/provenancenifi.provenance.repository.directory.stripe3=/data/partition3/provenancenifi.content.repository.directory.stripe2=/data/partition2/content
nifi.content.repository.directory.stripe3=/data/partition3/content

Ta konfiguracja używa trzech woluminów o równym rozmiarze. Możesz dostosować wartości i rozkładanie, aby spełnić wymagania systemowe.

Scenariusze wdrażania

Aby uwidocznić klaster NiFi, można użyć publicznego lub prywatnego modułu równoważenia obciążenia lub kontrolera ruchu przychodzącego. W przypadku korzystania z wykresów helm dla tej implementacji dostępne są dwie konfiguracje:

  • Niezabezpieczony klaster NiFi dostępny za pośrednictwem adresu URL HTTP bez uwierzytelniania lub autoryzacji użytkownika.
  • Zabezpieczony klaster NiFi dostępny za pośrednictwem adresu URL HTTPS. Ten rodzaj klastra jest zabezpieczony przy użyciu protokołu TLS. Podczas konfigurowania zabezpieczonych klastrów można podać własne certyfikaty. Alternatywnie wykresy mogą generować certyfikaty. W tym celu wykresy korzystają z zestawu narzędzi NiFi, który udostępnia urząd certyfikacji z podpisem własnym.

Jeśli skonfigurujesz klaster NiFi do uruchamiania jako zabezpieczony klaster z komunikacją TLS, musisz włączyć uwierzytelnianie użytkownika. Użyj jednej z następujących obsługiwanych metod uwierzytelniania użytkowników:

  • Uwierzytelnianie użytkowników oparte na certyfikatach. Użytkownicy są uwierzytelniani przez certyfikat prezentowany interfejsowi użytkownika niFi. Aby użyć tego rodzaju systemu uwierzytelniania użytkowników, dodaj certyfikat publiczny urzędu certyfikacji do wdrożenia niFi.
  • Uwierzytelnianie użytkowników oparte na protokole LDAP. Serwer LDAP uwierzytelnia poświadczenia użytkownika. Podczas wdrażania wykresu podaj informacje o serwerze LDAP i drzewie informacji.
  • Uwierzytelnianie użytkowników oparte na identyfikatorze OpenID. Użytkownicy udostępniają informacje do serwera OpenID w celu skonfigurowania wdrożenia.

Konfiguracja i użycie zasobów

Aby zoptymalizować użycie zasobów, użyj tych opcji programu Helm, aby skonfigurować wartości procesora CPU i pamięci:

  • Opcja request określająca początkową ilość zasobu, którego kontener żąda
  • Opcja limit określająca maksymalną ilość zasobu, którego może użyć kontener

Podczas konfigurowania interfejsu NiFi należy wziąć pod uwagę konfigurację pamięci systemu. Ponieważ niFi to aplikacja Java, należy dostosować ustawienia, takie jak minimalne i maksymalne wartości pamięci maszyny wirtualnej Java (JVM). Użyj następujących ustawień:

  • jvmMinMemory
  • jvmMaxMemory
  • g1ReservePercent
  • conGcThreads
  • parallelGcThreads
  • initiatingHeapOccupancyPercent

Zabezpieczenia

Zabezpieczenia zapewniają ochronę przed celowymi atakami i nadużyciami cennych danych i systemów. Aby uzyskać więcej informacji, zobacz Omówienie filaru zabezpieczeń.

Użyj kontekstu zabezpieczeń platformy Kubernetes, aby zwiększyć bezpieczeństwo bazowych kontenerów z uruchomionym plikiem binarnym NiFi. Kontekst zabezpieczeń zarządza dostępem do tych kontenerów i ich zasobników. Za pomocą kontekstu zabezpieczeń można udzielić użytkownikom niebędącym głównymi uprawnieniami do uruchamiania kontenerów.

Inne zastosowania kontekstów zabezpieczeń to:

  • Ograniczanie dostępu użytkowników opartych na systemie operacyjnym, którzy uruchamiają kontenery.
  • Określanie grup, które mogą uzyskiwać dostęp do kontenerów.
  • Ograniczanie dostępu do systemu plików.

Obrazy kontenerów

Kontenery Kubernetes to podstawowe jednostki, które uruchamiają pliki binarne NiFi. Aby skonfigurować klaster NiFi, skoncentruj się na obrazie używanym do uruchamiania tych kontenerów. Dostępne są dwie opcje dla tego obrazu:

  • Użyj standardowego obrazu NiFi, aby uruchomić wykres NiFi. Społeczność apache NiFi dostarcza ten obraz. Należy jednak dodać plik kubectl binarny do kontenerów, aby skonfigurować zabezpieczone klastry.
  • Użyj obrazu niestandardowego. Jeśli to podejście zostanie spełnione, należy wziąć pod uwagę wymagania dotyczące systemu plików. Upewnij się, że lokalizacja plików binarnych NiFi jest poprawna. Aby uzyskać więcej informacji na temat skonfigurowanego systemu plików, zobacz Plik Dockerfile w kodzie źródłowym apache NiFi.

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Główny autor:

Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki