Az Azure API Management használata az Azure Kubernetes Service-ben üzembe helyezett mikroszolgáltatásokkal

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

A mikroszolgáltatások tökéletesek API-k készítéséhez. Az Azure Kubernetes Service (AKS) segítségével gyorsan üzembe helyezhet és üzemeltethet mikroszolgáltatás-alapú architektúrát a felhőben. Ezután az Azure API Management (API Management) használatával közzéteheti mikroszolgáltatásait API-kként belső és külső felhasználás céljából. Ez a cikk az API Management AKS-sel való üzembe helyezésének lehetőségeit ismerteti. Feltételezi a Kubernetes, az API Management és az Azure hálózatkezelés alapszintű ismereteit.

Háttér

Ha a mikroszolgáltatásokat API-kként teszi közzé fogyasztásra, nehéz lehet kezelni a mikroszolgáltatások és az azokat használó ügyfelek közötti kommunikációt. Számos horizontális szempont létezik, például hitelesítés, engedélyezés, szabályozás, gyorsítótárazás, átalakítás és monitorozás. Ezek az aggodalmak attól függetlenül érvényesek, hogy a mikroszolgáltatások belső vagy külső ügyfeleknek vannak-e kitéve.

Az API Gateway-minta ezeket a problémákat kezeli. Az API-átjárók a mikroszolgáltatások első ajtójaként szolgálnak, leválasztják az ügyfeleket a mikroszolgáltatásokról, további biztonsági réteget adnak hozzá, és csökkentik a mikroszolgáltatások összetettségét azáltal, hogy megszüntetik a keresztvágási problémák kezelésének terheit.

Az Azure API Management egy kulcsrakész megoldás az API-átjáró igényeinek kielégítésére. Gyorsan létrehozhat egy konzisztens és modern átjárót a mikroszolgáltatásokhoz, és API-kként közzéteheti őket. Teljes életciklusú API-felügyeleti megoldásként további képességeket is kínál, például önkiszolgáló fejlesztői portált az API-felderítéshez, az API-életciklus-kezeléshez és az API-elemzéshez.

Együttes használat esetén az AKS és az API Management platformot biztosít a mikroszolgáltatás-alapú API-k üzembe helyezéséhez, közzétételéhez, biztonságossá tételéhez, monitorozásához és felügyeletéhez. Ebben a cikkben bemutatunk néhány lehetőséget az AKS és az API Management együttes üzembe helyezésére.

Kubernetes Services és API-k

A Kubernetes-fürtökben a tárolók podokban vannak üzembe helyezve, amelyek rövid élettartamúak. Amikor egy feldolgozó csomópont meghal, a csomóponton futó podok elvesznek. Ezért a Pod IP-címe bármikor változhat. Nem hagyatkozhatunk rá, hogy kommunikáljunk a podkal.

A probléma megoldásához a Kubernetes bevezette a szolgáltatások fogalmát. A Kubernetes-szolgáltatás egy absztrakciós réteg, amely podok logikai csoportját határozza meg, és lehetővé teszi a külső forgalomnak való kitettséget, a terheléselosztást és a szolgáltatásfelderítést ezen podok számára.

Ha készen állunk a mikroszolgáltatások API-kként való közzétételére az API Managementen keresztül, át kell gondolnunk, hogyan képezhetjük le a Kubernetes-szolgáltatásokat API-kra az API Managementben. Nincsenek beállított szabályok. Ez attól függ, hogyan tervezte és particionálta az üzleti képességeit vagy tartományait mikroszolgáltatásokra az elején. Ha például a szolgáltatás mögötti podok egy adott erőforráson (például ügyfélen) végzett összes műveletért felelősek, a szolgáltatás egy API-ra képezhető le. Ha egy erőforrás műveletei több mikroszolgáltatásra vannak particionálva (például GetOrder, PlaceOrder), akkor több szolgáltatás logikailag egyetlen API-ba összesíthető az API-felügyeletben (lásd az 1. ábrát).

A leképezések is fejlődhetnek. Mivel az API Management egy homlokzatot hoz létre a mikroszolgáltatások előtt, lehetővé teszi a mikroszolgáltatások időről időre történő újrabontását és megfelelő méretezését.

Szolgáltatások leképezése API-khoz

API Management üzembe helyezése az AKS előtt

Az API Management egy AKS-fürt előtt való üzembe helyezésének néhány lehetősége van.

Bár az AKS-fürtök mindig virtuális hálózaton (VNeten) üzemelnek, egy API Management-példányt nem kell üzembe helyezni egy virtuális hálózaton. Ha az API Management nem a fürt virtuális hálózatán belül található, az AKS-fürtnek nyilvános végpontokat kell közzétennie az API Management számára a csatlakozáshoz. Ebben az esetben biztosítani kell az API Management és az AKS közötti kapcsolatot. Más szóval biztosítanunk kell, hogy a fürt csak az API Managementen keresztül érhető el. Tekintsük át a lehetőségeket.

1. lehetőség: Szolgáltatások nyilvános közzététele

Az AKS-fürtök szolgáltatásai nyilvánosan közzétehetők a NodePort, a LoadBalancer vagy a ExternalName szolgáltatástípusokkal. Ebben az esetben a szolgáltatások közvetlenül a nyilvános internetről érhetők el. Miután üzembe helyeztük az API Managementet a fürt előtt, biztosítanunk kell, hogy az összes bejövő forgalom áthaladjon az API Managementen a mikroszolgáltatásokban való hitelesítés alkalmazásával. Az API Management például egy hozzáférési jogkivonatot is tartalmazhat a fürtnek küldött összes kérelemben. Minden mikroszolgáltatás felelős a jogkivonat érvényesítéséért a kérés feldolgozása előtt.

Ez lehet a legegyszerűbb lehetőség az API Management üzembe helyezésére az AKS előtt, különösen akkor, ha már implementált hitelesítési logikát a mikroszolgáltatásokban.

Szolgáltatások közvetlen közzététele

Profik:

  • Egyszerű konfiguráció az API Management oldalán, mert nem kell a fürt virtuális hálózatába injektálnia
  • Nincs változás az AKS oldalán, ha a szolgáltatások már nyilvánosan elérhetők, és a hitelesítési logika már létezik a mikroszolgáltatásokban

Hátránya:

  • Lehetséges biztonsági kockázat a végpontok nyilvános láthatósága miatt
  • Nincs egyetlen belépési pont a bejövő fürtforgalomhoz
  • Duplikált hitelesítési logikával bonyolítja a mikroszolgáltatásokat

2. lehetőség: Bejövőforgalom-vezérlő telepítése

Bár az 1. lehetőség egyszerűbb lehet, jelentős hátrányai vannak a fent említetteknek. Ha egy API Management-példány nem található a fürt virtuális hálózatában, a kölcsönös TLS-hitelesítés (mTLS) hatékony módja annak, hogy az API Management-példány és az AKS-fürt közötti forgalom mindkét irányban biztonságos és megbízható legyen.

A kölcsönös TLS-hitelesítést az API Management natív módon támogatja, és a Kubernetesben egy bejövőforgalom-vezérlő telepítésével engedélyezhető (3. ábra). Ennek eredményeképpen a rendszer hitelesítést hajt végre a bejövőforgalom-vezérlőben, ami leegyszerűsíti a mikroszolgáltatásokat. Emellett hozzáadhatja az API Management IP-címeit az engedélyezett listához bejövő forgalommal, hogy csak az API Management férhessen hozzá a fürthöz.

Közzététel bejövőforgalom-vezérlőn keresztül

Profik:

  • Egyszerű konfiguráció az API Management oldalán, mert nem kell a fürt virtuális hálózatába injektálni, és az mTLS natív módon támogatott
  • Központosítja a bejövő fürtforgalom védelmét a Bejövőforgalom-vezérlő rétegben
  • Csökkenti a biztonsági kockázatot a nyilvánosan látható fürtvégpontok minimalizálásával

Hátránya:

  • Növeli a fürtkonfiguráció összetettségét, mivel a bejövőforgalom-vezérlő telepítése, konfigurálása és karbantartása, valamint az mTLS-hez használt tanúsítványok kezelése többletmunkával jár
  • Biztonsági kockázat a bejövőforgalom-vezérlő végpont(ok) nyilvános láthatósága miatt

Amikor API-kat tesz közzé az API Management használatával, egyszerű és gyakori, hogy az előfizetési kulcsok használatával biztonságosan hozzáfér ezekhez az API-khoz. A közzétett API-k használatához szükséges fejlesztőknek érvényes előfizetési kulcsot kell tartalmazniuk a HTTP-kérésekben, amikor hívásokat kezdeményeznek az adott API-khoz. Ellenkező esetben az API Management-átjáró azonnal elutasítja a hívásokat. A háttérszolgáltatások nem továbbítják őket.

Az API-k eléréséhez szükséges előfizetési kulcs lekérése. Az előfizetés lényegében egy elnevezett tároló az előfizetési kulcsok párjának. Azok a fejlesztők, akiknek a közzétett API-kat kell használniuk, előfizetéseket szerezhetnek be. És nincs szükségük az API-közzétevők jóváhagyására. Az API-közzétevők közvetlenül is létrehozhatnak előfizetéseket az API-felhasználók számára.

3. lehetőség: APIM üzembe helyezése a fürt virtuális hálózatán belül

Bizonyos esetekben a szabályozási korlátozásokkal vagy szigorú biztonsági követelményekkel rendelkező ügyfelek az 1. és a 2. lehetőséget nem találják életképes megoldásnak a nyilvánosan közzétett végpontok miatt. Más esetekben előfordulhat, hogy az AKS-fürt és a mikroszolgáltatásokat használó alkalmazások ugyanabban a virtuális hálózaton belül találhatók, ezért nincs ok arra, hogy nyilvánosan tegye közzé a fürtöt, mivel minden API-forgalom a virtuális hálózaton belül marad. Ezekben a forgatókönyvekben az API Managementet üzembe helyezheti a fürt virtuális hálózatán. Az API Management Fejlesztői és Prémium szintjei támogatják a virtuális hálózatok üzembe helyezését.

Az API Management virtuális hálózaton való üzembe helyezésének két módja van: külső és belső.

Ha az API-fogyasztók nem a fürt virtuális hálózatában találhatók, a külső módot (4. ábra) kell használni. Ebben a módban az API Management-átjárót a rendszer a fürt virtuális hálózatába injektálja, de egy külső terheléselosztón keresztül elérhető a nyilvános internetről. Segít teljesen elrejteni a fürtöt, miközben a külső ügyfelek továbbra is felhasználhatják a mikroszolgáltatásokat. Emellett azure-beli hálózati képességeket, például hálózati biztonsági csoportokat (NSG) is használhat a hálózati forgalom korlátozásához.

Külső virtuális hálózat mód

Ha minden API-fogyasztó a fürt virtuális hálózatán belül található, akkor a belső mód (5. ábra) használható. Ebben a módban az API Management-átjárót a rendszer a fürt virtuális hálózatába injektálja, és csak ebből a virtuális hálózatból érhető el egy belső terheléselosztón keresztül. A nyilvános internetről nem lehet elérni az API Management-átjárót vagy az AKS-fürtöt.

Belső virtuális hálózat mód

Az AKS-fürt mindkét esetben nem látható nyilvánosan. A 2. lehetőséghez képest előfordulhat, hogy a bejövőforgalom-vezérlőre nincs szükség. A forgatókönyvtől és a konfigurációtól függően az API Management és a mikroszolgáltatások között továbbra is szükség lehet hitelesítésre. Ha például egy Service Mesh-t fogadnak el, az mindig kölcsönös TLS-hitelesítést igényel.

Profik:

  • A legbiztonságosabb megoldás, mert az AKS-fürtnek nincs nyilvános végpontja
  • Leegyszerűsíti a fürtkonfigurációt, mivel nincs nyilvános végpontja
  • Az API Management és az AKS elrejtése a virtuális hálózaton belül a belső mód használatával
  • A hálózati forgalom szabályozásának képessége azure-beli hálózati képességek, például hálózati biztonsági csoportok (NSG) használatával

Hátránya:

  • Növeli az API Management virtuális hálózaton belüli üzembe helyezésének és konfigurálásának összetettségét

Következő lépések