Toto řešení ukazuje, jak používat charty Helm při nasazování NiFi ve službě Azure Kubernetes Service (AKS). Helm zjednodušuje proces instalace a správy aplikací Kubernetes.
Apache®, Apache NiFi a NiFi®® jsou registrované ochranné známky nebo ochranné známky nadace Apache Software Foundation v USA a/nebo v jiných zemích. Použití těchto značek nevyžaduje žádné doporučení Apache Software Foundation.
Architektura
Stáhněte si soubor aplikace Visio s touto architekturou.
Workflow
Chart Helm obsahuje
values.yaml
soubor. Tento soubor obsahuje seznam vstupních hodnot, které můžou uživatelé upravovat.Uživatel upraví nastavení v grafu, včetně hodnot pro:
- Velikosti svazků.
- Počet podů.
- Mechanismy ověřování a autorizace uživatelů.
Uživatel spustí příkaz Helm
install
pro nasazení grafu.Helm zkontroluje, jestli vstup uživatele obsahuje hodnoty pro všechny požadované proměnné.
Helm vytvoří manifest, který popisuje objekty, které se mají nasadit v Kubernetes.
Helm odešle manifest do clusteru Kubernetes. Apache ZooKeeper zajišťuje koordinaci clusteru.
Kubernetes vytvoří zadané objekty. Nasazení NiFi vyžaduje tyto objekty:
- Objekty konfigurace.
- Datové svazky. Úložiště podů je dočasné.
- Svazek protokolu.
- Pody, které používají image ke spuštění NiFi v kontejneru Kubernetes ke správě podů používá prostředek úlohy StatefulSet .
- Služba Kubernetes, která uživatelům zpřístupní uživatelské rozhraní NiFi.
- Ingress routes if the cluster uses ingress to make the UI available externally.
Komponenty
Chart Helm je kolekce souborů ve složce se stromovou strukturou. Tyto soubory popisují prostředky Kubernetes. V chartu Helm můžete nakonfigurovat následující komponenty:
ZooKeeper
ZooKeeper používá samostatný graf. Můžete použít standardní graf ZooKeeper, který Kubernetes dodává v úložišti grafů pro grafy. Pokud ale vaše závislosti zahrnují obsah veřejného registru, můžete do pracovních postupů vývoje a nasazení imagí zavést riziko. Pokud chcete toto riziko zmírnit, uchovávejte místní kopie veřejného obsahu, pokud je to možné. Podrobné informace najdete v tématu Správa veřejného obsahu pomocí služby Azure Container Registry.
Jako alternativu můžete zooKeeper nasadit sami. Pokud zvolíte tuto možnost, zadejte server ZooKeeper a číslo portu, aby pody, na kterých běží NiFi, měli přístup ke službě ZooKeeper.
Stavová sada Kubernetes
Pokud chcete spustit aplikaci v Kubernetes, spustíte pod. Tato základní jednotka spouští různé kontejnery, které implementují různé aktivity aplikace.
Kubernetes nabízí dvě řešení pro správu podů, které používají aplikaci, jako je NiFi:
- A ReplicaSet, která udržuje stabilní sadu podů replik, které běží v daném okamžiku. Replikovanou sadu často používáte k zajištění dostupnosti zadaného počtu identických podů.
- StatefulSet, což je objekt rozhraní API úlohy, který používáte ke správě stavových aplikací. StatefulSet spravuje pody založené na stejné specifikaci kontejneru. Kubernetes tyto pody vytváří ze stejné specifikace. Ale tyto pody nejsou zaměnitelné. Každý pod má trvalý identifikátor, který udržuje v rámci přeplánování.
Vzhledem k tomu, že ke správě dat používáte NiFi, poskytuje StatefulSet nejlepší řešení pro nasazení NiFi.
Objekty ConfigMap
Kubernetes nabízí objekty ConfigMap pro ukládání nedůvěryhodných dat. Kubernetes tyto objekty používá ke správě různých konfiguračních souborů, jako je nifi.properties
. Kontejner, který spouští aplikaci, přistupuje k informacím o konfiguraci prostřednictvím připojených svazků a souborů. Objekty ConfigMap usnadňují správu změn konfigurace po nasazení.
ServiceAccount
V zabezpečených instancích používá NiFi ověřování a autorizaci. NiFi tyto informace spravuje v souborech systému souborů. Každý uzel clusteru musí konkrétně udržovat authorizations.xml
soubor a users.xml
soubor. Všichni členové musí být schopni zapisovat do těchto souborů. Každý uzel v clusteru musí mít identickou kopii těchto informací. Jinak se cluster nesynchronizuje a rozdělí se.
Abyste tyto podmínky splnili, můžete tyto soubory zkopírovat z prvního člena clusteru do každého člena, který přichází do existence. Každý nový člen pak udržuje své vlastní kopie. Pody obecně nemají autorizaci ke kopírování obsahu z jiného podu. Ale Kubernetes ServiceAccount poskytuje způsob, jak získat autorizaci.
Služby
Služby Kubernetes zpřístupní aplikační službu uživatelům clusteru Kubernetes. Objekty služby také umožňují, aby členské uzly clusterů NiFi vzájemně komunikují. Pro nasazení chartů Helm použijte dva typy služeb: bezobslužné služby a služby založené na PROTOKOLU IP.
Příchozí přenos dat
Příchozí přenos dat spravuje externí přístup ke službám clusteru. Konkrétně předem nakonfigurovaný kontroler příchozího přenosu dat zveřejňuje trasy HTTP a HTTPS mimo cluster do služeb v rámci clusteru. Můžete definovat pravidla příchozího přenosu dat, která určují, jak kontroler směruje provoz. Chart Helm zahrnuje trasu příchozího přenosu dat v konfiguraci.
Tajné kódy
Pokud chcete nakonfigurovat zabezpečené clustery NiFi, musíte ukládat přihlašovací údaje. Tajné kódy Kubernetes poskytují bezpečný způsob ukládání a načítání těchto přihlašovacích údajů.
Podrobnosti scénáře
Uživatelé Apache NiFi často potřebují nasadit NiFi v Kubernetes. Nasazení Kubernetes zahrnuje mnoho objektů, jako jsou pody, svazky a služby. Je obtížné spravovat manifesty nebo soubory specifikace, které Kubernetes používá pro tento počet objektů. Potíže se zvýší, když nasadíte několik clusterů NiFi, které používají různé konfigurace.
Charty Helm poskytují řešení pro správu manifestů. Helm je správce balíčků pro Kubernetes. Pomocí nástroje Helm můžete zjednodušit proces instalace a správy aplikací Kubernetes.
Graf je formát balení, který Helm používá. Do souborů grafu zadáte požadavky na konfiguraci. Helm sleduje historii a verze jednotlivých grafů. Helm pak pomocí grafů generuje soubory manifestu Kubernetes.
Z jednoho grafu můžete nasadit aplikace, které používají různé konfigurace. Když spustíte NiFi v Azure, můžete pomocí chartů Helm nasadit různé konfigurace NiFi v Kubernetes.
Apache®, Apache NiFi a NiFi®® jsou registrované ochranné známky nebo ochranné známky nadace Apache Software Foundation v USA a/nebo v jiných zemích. Použití těchto značek nevyžaduje žádné doporučení Apache Software Foundation.
Důležité informace
Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.
Datové disky
Pokud chcete disk použít, zvažte použití prokládání sady disků pro úložiště. V testovacích nasazeních, která používala škálovací sady virtuálních počítačů, tento přístup fungoval nejlépe. Následující výňatek ukazuje nifi.properties
konfiguraci využití disku:
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
Tato konfigurace používá tři svazky stejné velikosti. Hodnoty a prokládání můžete upravit tak, aby vyhovovaly vašim systémovým požadavkům.
Scénáře nasazení
Ke zveřejnění clusteru NiFi můžete použít veřejný nebo privátní nástroj pro vyrovnávání zatížení nebo kontroler příchozího přenosu dat. Při použití chartů Helm pro tuto implementaci jsou k dispozici dvě konfigurace:
- Nezabezpečený cluster NiFi, který je přístupný prostřednictvím adresy URL HTTP bez ověřování nebo autorizace uživatele.
- Zabezpečený cluster NiFi, který je přístupný prostřednictvím adresy URL HTTPS. Tento typ clusteru je zabezpečený protokolem TLS. Při konfiguraci zabezpečených clusterů můžete zadat vlastní certifikáty. Grafy můžou také generovat certifikáty. Pro tento účel grafy používají sadu nástrojů NiFi, která poskytuje certifikační autoritu podepsanou svým držitelem (CA).
Pokud nakonfigurujete cluster NiFi tak, aby běžel jako zabezpečený cluster s komunikací TLS, musíte zapnout ověřování uživatelů. Použijte jednu z následujících podporovaných metod ověřování uživatelů:
- Ověřování uživatelů na základě certifikátů Uživatelé jsou ověřeni certifikátem, který prezentuje v uživatelském rozhraní NiFi. Pokud chcete použít tento typ systému ověřování uživatelů, přidejte veřejný certifikát certifikační autority do nasazení NiFi.
- Ověřování uživatelů na základě protokolu LDAP. Server LDAP ověřuje přihlašovací údaje uživatele. Při nasazení grafu zadejte informace o serveru LDAP a stromu informací.
- Ověřování uživatele založené na OpenID Uživatelé zadají informace serveru OpenID pro konfiguraci nasazení.
Konfigurace a využití prostředků
K optimalizaci využití prostředků použijte tyto možnosti Helmu ke konfiguraci hodnot procesoru a paměti:
- Možnost
request
, která určuje počáteční množství prostředku, který kontejner požaduje. - Možnost
limit
, která určuje maximální množství prostředku, který může kontejner používat
Při konfiguraci NiFi zvažte konfiguraci paměti systému. Protože NiFi je aplikace v Javě, měli byste upravit nastavení, jako jsou minimální a maximální hodnoty paměti virtuálního počítače Java (JVM). Použijte následující nastavení:
jvmMinMemory
jvmMaxMemory
g1ReservePercent
conGcThreads
parallelGcThreads
initiatingHeapOccupancyPercent
Zabezpečení
Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.
Pomocí kontextu zabezpečení Kubernetes můžete zlepšit zabezpečení základních kontejnerů, na kterých běží binární soubor NiFi. Kontext zabezpečení spravuje přístup k těmto kontejnerům a jejich podům. Prostřednictvím kontextu zabezpečení můžete udělit uživatelům, kteří nejsou rooti, oprávnění ke spouštění kontejnerů.
Mezi další použití kontextů zabezpečení patří:
- Omezení přístupuuživatelůch
- Určuje, které skupiny mají přístup k kontejnerům.
- Omezení přístupu k systému souborů.
Image kontejneru
Kontejnery Kubernetes jsou základní jednotky, na kterých běží binární soubory NiFi. Pokud chcete nakonfigurovat cluster NiFi, zaměřte se na image, kterou používáte ke spuštění těchto kontejnerů. Pro tento obrázek máte dvě možnosti:
- Ke spuštění grafu NiFi použijte standardní obrázek NiFi. Tato image poskytuje komunita Apache NiFi. Abyste ale mohli nakonfigurovat zabezpečené clustery, musíte do kontejnerů přidat
kubectl
binární soubor. - Použijte vlastní image. Pokud tento přístup přijmete, zvažte požadavky na systém souborů. Ujistěte se, že je správné umístění binárních souborů NiFi. Další informace o nakonfigurovaného systému souborů najdete v souboru Dockerfile ve zdrojovém kódu Apache NiFi.
Přispěvatelé
Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.
Hlavní autor:
- Muazma Zahid | Hlavní manažer pm
Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.
Další kroky
- Helm
- Charty Helm
- Kubernetes
- Stavové sady Kubernetes
- Svazky Kubernetes
- Mapy konfigurace Kubernetes
- Tajné kódy Kubernetes
- Kubernetes Service
- Příchozí přenos dat Kubernetes
- Azure Kubernetes Service
- Image Dockeru Apache NiFi