API-k közzététele a DevOps és a CI/CD használatával
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
A vállalati API-k stratégiai értékével a DevOps folyamatos integrációs (CI) és üzembe helyezési (CD) technikák bevezetése az API-fejlesztés fontos aspektusává vált. Ez a cikk az API-k kezelésére vonatkozó DevOps-alapelvek elfogadásához szükséges döntéseket ismerteti.
Az API DevOps három részből áll:
Az API DevOps-folyamat minden részét az alábbiakban tárgyaljuk.
API-definíció
Az API-fejlesztők egy API-definíciót írnak egy specifikáció, a beállítások (például a naplózás, a diagnosztika és a háttérbeállítások) és az API-ra alkalmazandó szabályzatok megadásával. Az API-definíció az API Azure API Management szolgáltatáson való kiépítéséhez szükséges információkat tartalmazza. A specifikáció alapja lehet egy szabványalapú API-specifikáció (például WSDL, OpenAPI vagy GraphQL), vagy az Azure Resource Manager (ARM) API-k (például az API-t és a műveleteket leíró ARM-sablon) használatával határozható meg. Az API-definíció idővel megváltozik, és "forráskódnak" kell tekinteni. Győződjön meg arról, hogy az API-definíció forráskód-vezérlés alatt van tárolva, és megfelelő felülvizsgálatot kapott a bevezetés előtt.
Az API-definíció létrehozásához több eszköz is rendelkezésre áll:
- Az Azure APIOps Toolkit egy Git-forráskódvezérlő rendszerre (például GitHubra vagy Azure Reposra) épülő munkafolyamatot biztosít. Egy kitermelő használatával hoz létre egy API-definíciót, amelyet aztán egy közzétevő alkalmaz egy cél API Management szolgáltatásra. Az APIOps jelenleg a REST és a GraphQL API-kat támogatja.
- A dotnet-apim eszköz egy jól formázott YAML-definíciót alakít át ARM-sablonná későbbi üzembe helyezéshez. Az eszköz a REST API-kra összpontosít.
- A Terraform az Azure Resource Manager alternatíva az erőforrások Azure-ban való konfigurálásához. Létrehozhat egy Terraform-konfigurációt (szabályzatokkal együtt), hogy az API-t ugyanúgy implementálja, mint egy ARM-sablont.
IDE-alapú eszközöket is használhat szerkesztőkhöz, például a Visual Studio Code-hoz az API definiálásához szükséges összetevők előállításához. A Visual Studio Code Marketplace-en például több mint 30 beépülő modul használható OpenAPI-specifikációs fájlok szerkesztéséhez. Az összetevőket kódgenerátorokkal is létrehozhatja. A CADL-nyelv lehetővé teszi, hogy egyszerűen magas szintű építőelemeket hozzon létre, majd lefordítsa őket egy szabványos API-definíciós formátumba, például az OpenAPI-ba.
API-jóváhagyás
Az API-definíció létrehozása után a fejlesztő elküldi az API-definíciót felülvizsgálatra és jóváhagyásra. Ha git-alapú forráskódvezérlő rendszert (például GitHubot vagy Azure Repost) használ, a beküldés lekéréses kérelemmel is elvégezhető. A lekéréses kérelem tájékoztatja a többi felhasználót az API-definícióban javasolt módosításokról. A jóváhagyási kapuk megerősítése után a jóváhagyó egyesíti a lekéréses kérelmet a fő adattárban, hogy jelezhesse, hogy az API-definíció üzembe helyezhető az éles környezetben. A lekéréses kérelem folyamata lehetővé teszi a fejlesztő számára, hogy elhárítsa a jóváhagyási folyamat során felmerülő problémákat.
A GitHub és az Azure Repos egyaránt lehetővé teszi a lekéréses kérelmek elküldésekor futó jóváhagyási folyamatok konfigurálását. A jóváhagyási folyamatokat úgy konfigurálhatja, hogy olyan eszközöket futtasson, mint például:
- Az API specifikációs linterjei( például a Spectral ) biztosítják, hogy a definíció megfeleljen a szervezet által megkövetelt API-szabványoknak.
- Kompatibilitástörő változásészlelés olyan eszközökkel, mint az openapi-diff.
- Biztonsági naplózási és értékelési eszközök. Az OWASP fenntartja a biztonsági vizsgálathoz szükséges eszközök listáját.
- Automatizált API-tesztelési keretrendszerek.
Feljegyzés
Az Azure API-knak meg kell felelniük a saját API-irányelvek kiindulópontjaként használható szigorú irányelveknek . Az irányelvek kikényszerítéséhez spectrális konfiguráció szükséges.
Az automatizált eszközök futtatása után az API-definíciót az emberi szem áttekinti. Az eszközök nem fogják elkapni az összes problémát. Az emberi felülvizsgáló biztosítja, hogy az API-definíció megfeleljen az API-k szervezeti feltételeinek, beleértve a biztonsági, adatvédelmi és konzisztencia-irányelvek betartását.
API-kiadvány
Az API-definíció egy kiadási folyamaton keresztül lesz közzétéve egy API Management szolgáltatásban. Az API-definíció közzétételéhez használt eszközök az API-definíció létrehozásához használt eszköztől függnek:
- Az Azure APIOps Toolkit használata esetén az eszközkészlet tartalmaz egy közzétevőt, amely az API-definíciót a célszolgáltatásba írja.
- Ha dotnet-apimot használ, az API-definíció ARM-sablonként jelenik meg. Az Azure Pipelineshoz és a GitHub Actionshez elérhető feladatok ARM-sablon üzembe helyezéséhez.
- A Terraform használata esetén a CLI-eszközök üzembe helyezik az API-definíciót a szolgáltatásban. Az Azure Pipelineshoz és a GitHub Actionshez számos feladat érhető el.
Használhatok más forráskód-vezérlőt és CI/CD-rendszereket?
Igen. A leírt folyamat bármilyen forráskód-vezérlő rendszerrel működik (bár az APIOps megköveteli, hogy a forráskód-vezérlő rendszer git-alapú legyen). Hasonlóképpen bármilyen CI-/CD-platformot használhat, feltéve, hogy egy bejelentkezés aktiválja, és futtatja az Azure-ral kommunikáló parancssori eszközöket.
Ajánlott eljárások
Az API-k közzétételére szolgáló DevOps-folyamat beállításához nincs iparági szabvány, és az említett eszközök egyike sem fog minden helyzetben működni. Azt azonban látjuk, hogy a legtöbb helyzetet az alábbi eszközök és szolgáltatások kombinációjával fedjük le:
- Az Azure Repos egy git-adattárban tárolja az API-definíciókat.
- Az Azure Pipelines futtatja az automatizált API-jóváhagyási és API-közzétételi folyamatokat.
- Az Azure APIOps Toolkit eszközöket és munkafolyamatokat biztosít az API-k közzétételéhez.
Láttuk a legnagyobb sikert az ügyfelek üzembe helyezésében, és az alábbi eljárásokat javasoljuk:
- Állítsa be a GitHubot vagy az Azure Repost a forráskódvezérlő rendszerhez. Ez a választás határozza meg a folyamatfuttató kiválasztását is. A GitHub használhatja az Azure Pipelinest vagy a GitHub Actionst, míg az Azure Reposnak Azure Pipelinest kell használnia.
- Állítson be egy Azure API Management szolgáltatást minden API-fejlesztőhöz, hogy az API-szolgáltatással együtt API-definíciókat is fejleszthessenek. A szolgáltatás létrehozásakor használja a használatot vagy a fejlesztői termékváltozatot.
- Szabályzattöredékek használatával csökkentheti a fejlesztők által az egyes API-khoz írandó új szabályzatokat.
- Névvel ellátott értékek és háttérrendszerek használatával győződjön meg arról, hogy a szabályzatok általánosak, és bármely API Management-példányra alkalmazhatók.
- Az Azure APIOps Toolkit használatával kinyerhet egy működő API-definíciót a fejlesztői szolgáltatásból.
- Állítson be egy API-jóváhagyási folyamatot, amely minden lekéréses kérelemen fut. Az API jóváhagyási folyamatának tartalmaznia kell a kompatibilitástörő változásészlelést, a lintinget és az automatizált API-tesztelést.
- Az Azure APIOps Toolkit publisher használatával tegye közzé az API-t az éles API Management szolgáltatásban.
Az Azure Architecture Center APIOps használatával történő automatizált API-üzemelő példányaival kapcsolatos további részletekért tekintse át, hogyan konfigurálhat és futtathat CI/CD üzembehelyezési folyamatot az APIOps használatával.
Hivatkozások
- Az Azure DevOps Services tartalmazza az Azure Repos és az Azure Pipelines szolgáltatást.
- Az Azure APIOps Toolkit egy munkafolyamatot biztosít az API Management DevOpshoz.
- A Spectral egy lintert biztosít az OpenAPI-specifikációkhoz.
- Az openapi-diff kompatibilitástörő változásérzékelőt biztosít az OpenAPI v3-definíciókhoz.