Nejlepší postupy Kubernetes. Mapování externích služeb

Nejlepší praktiky Kubernetes. Vytváření malých kontejnerů
Nejlepší praktiky Kubernetes. Organizace Kubernetes pomocí jmenného prostoru
Nejlepší praktiky Kubernetes. Kontrola životaschopnosti Kubernetes pomocí testů Readiness a Liveness
Nejlepší praktiky Kubernetes. Nastavení požadavků a limitů zdrojů
Nejlepší praktiky Kubernetes. Správné ukončení Terminate

Pokud jste jako většina lidí, pravděpodobně používáte zdroje fungující mimo svůj klastr. Možná používáte API Taleo k odesílání textových zpráv nebo analyzujete obrázky pomocí API Google Cloud Vision.

Pokud používáte stejný endpoint — bod příjmu požadavků na straně serveru ve všech svých prostředích a neplánujete přesunout své servery do Kubernetes, je zcela normální mít endpoint služby přímo ve svém kódu. Existuje však mnoho dalších scénářů. V této sérii „Kubernetes Best Practices“ se dozvíte, jak využívat vestavěné mechanismy Kubernetes pro objevování služeb jak uvnitř, tak vně klastru.

Jako příklad široce rozšířené externí služby lze uvést databázi, která funguje mimo klastr Kubernetes. Na rozdíl od cloudových databází, jako jsou Google Cloud Data Store nebo Google Cloud Spanner, které používají jeden endpoint pro všechny typy přístupu, většina databází má samostatné endpointy pro různé situace.
Nejlepší praxí při používání tradičních databází, jako jsou MySQL a MongoDB, obvykle je, že se připojujete k různým komponentám pro různé prostředí. Můžete mít silnější stroj pro produkční data a menší stroj pro testovací prostředí. Každý z nich bude mít svou vlastní IP adresu nebo doménové jméno, ale určitě nebudete chtít měnit svůj kód při přechodu z jednoho prostředí do druhého. Proto namísto tvrdého kódování těchto adres můžete využít vestavěné služby Kubernetes pro objevování externích služeb založené na DNS, stejně jako pro nativní služby Kubernetes.

Nejlepší postupy Kubernetes. Mapování externích služeb

Předpokládejme, že spouštíte databázi MongoDB na Google Compute Engine. Zůstanete v tomto hybridním světě, dokud ji nebudete moci přesunout do klastru.

Naštěstí můžete použít statické služby Kubernetes, abyste si alespoň trochu ulehčili život. V tomto příkladu jsem vytvořil server MongoDB pomocí Google Cloud Launcher. Protože je vytvořen ve stejné síti (nebo VPC klastru Kubernetes), je k němu přístup přes vysoce výkonnou interní IP adresu.

Nejlepší postupy Kubernetes. Mapování externích služeb

V Google Cloud je toto výchozí nastavení, takže nic nemusíte upravovat. Nyní, když je zde IP adresa, prvním krokem je vytvoření služby. Můžete si všimnout, že pro tuto službu neexistují žádné podové selektory. To znamená, že jsme vytvořili službu, která nebude vědět, kam odesílat provoz. To umožní manuálně vytvořit objekt endpoint, který bude přijímat provoz z této služby.

Nejlepší postupy Kubernetes. Mapování externích služeb

Následující příklad kódu ukazuje, že koncové body určují IP adresu pro databázi, používající stejné jméno mongo, jako služba.

Nejlepší postupy Kubernetes. Mapování externích služeb

Kubernetes použije všechny IP adresy, aby našel koncové body, jako by to byly běžné podové aplikace Kubernetes, takže nyní můžete přistupovat k databázi pomocí jednoduchého připojovacího řetězce k výše zmíněnému jménu mongodb://mongo. Není vůbec potřeba používat IP adresy ve vašem kódu.

Pokud se v budoucnu IP adresy změní, můžete jednoduše aktualizovat koncové body pomocí nové IP adresy, a vaše aplikace nebude potřeba měnit žádným dalším způsobem.

Pokud používáte databázi hostovanou na externím hostu, pravděpodobně vám vlastníci hostingu poskytli pro připojení jednotný identifikátor prostředku URI. Pokud vám byla poskytnuta IP adresa, můžete jednoduše využít předchozí metodu. Tento příklad ukazuje, že mám dvě databáze MongoDB hostované na hostiteli mLab.

Nejlepší postupy Kubernetes. Mapování externích služeb

Jedna z nich je databáze pro vývojáře a druhá je produkční databáze. Připojovací řetězce pro tyto databáze vypadají následovně — mLab vám poskytuje dynamické URI a dynamický port. Jak vidíte, jsou odlišné.

Nejlepší postupy Kubernetes. Mapování externích služeb

Abychom se od toho abstrahovali, použijeme Kubernetes a připojíme se k databázi pro vývojáře. Můžete vytvořit externí jméno Kubernetes služby, což vám poskytne statickou službu, která přesměruje provoz na externí službu.

Nejlepší postupy Kubernetes. Mapování externích služeb

Tato služba provede jednoduché CNAME přesměrování na úrovni jádra, což má minimální vliv na výkonnost. Díky tomu můžete použít jednodušší připojovací řetězec.

Nejlepší postupy Kubernetes. Mapování externích služeb

Ale protože externí název používá přesměrování CNAME, nemůže provést přesměrování portů. Toto řešení je tedy použitelné pouze pro statické porty a nemůže být použito s dynamickými porty. Bezplatná úroveň mLab Free Tier však standardně poskytuje uživateli dynamické číslo portu, které nemůžete změnit. To znamená, že pro dev a prod potřebujete různé příkazové řádky pro připojení. Špatné je, že k tomu bude potřeba tvrdě zakódovat číslo portu. Jak tedy dosáhnout funkčního přesměrování portů?

Prvním krokem je získání IP adresy z URI. Pokud spustíte příkaz nslookup, hostname nebo pingujete URI, můžete získat IP adresu databáze. Pokud služba vrátí více IP adres, všechny tyto adresy lze použít v koncových bodech objektu.

Nejlepší postupy Kubernetes. Mapování externích služeb

Je třeba mít na paměti, že IP adresy URI se mohou měnit bez předchozího upozornění, a proto je jejich použití v produci poměrně riskantní. Pomocí takové IP adresy se můžete připojit k vzdálené databázi, aniž byste museli uvádět port. Služba Kubernetes tedy velmi transparentně provádí přesměrování portů.

Nejlepší postupy Kubernetes. Mapování externích služeb

Mapping, neboli mapování externích zdrojů na interní, vám dává možnost flexibilně používat tyto služby uvnitř clustera v budoucnu při minimalizaci námahy při refaktoringu. Usnadňuje to také správu a poskytuje pochopení toho, jaké externí služby vaše společnost využívá.

Pokračování bude brzy…

Přehrát video

Malá reklama 🙂

Děkujeme, že s námi zůstáváte. Líbí se vám naše články? Chcete vidět více zajímavých materiálů? Podpořte nás objednávkou nebo doporučením známým, cloudové VPS pro vývojáře od 4,99 $, unikátní alternativa entry-level serverů, kterou jsme pro vás vymysleli: Všechny pravdy o VPS (KVM) E5-2697 v3 (6 jader) 10GB DDR4 480GB SSD 1Gbps od 19 $ nebo jak správně rozdělit server? (k dispozici varianty s RAID1 a RAID10, až 24 jader a až 40GB DDR4).

Dell R730xd je dvakrát levnější v datovém centru Equinix Tier IV v Amsterdamu? Jen u nás 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB od 199 $ v Nizozemsku! Dell R420 — 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — od 99 $! Čtěte o tom Jak postavit infrastrukturu podnikové třídy s použitím serverů Dell R730xd E5-2650 v4 v hodnotě 9000 eur za pakatel?

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster