GitOps for Azure Kubernetes Service

Azure Kubernetes Service (AKS)
GitHub

A GitOps a szoftverrendszer üzemeltetésének és kezelésének alapelveit tartalmazza. Ez a cikk az Azure Kubernetes Services- (AKS-) fürtök üzemeltetésére és kezelésére szolgáló GitOps-alapelveket ismerteti.

A Flux, az Argo CD, az OPA Gatekeeper, a Kubernetes és a Git logók a megfelelő vállalatok védjegyei. E védjegyek használata nem utal jóváhagyásra.

Architektúra

Az AKS-sel használható két GitOps-operátor a Flux és az Argo CD. Mindkettő diplomás Cloud Native Computing Foundation (CNCF) projekt , és széles körben használják őket. Az alábbi forgatókönyvek a használatuk módját mutatják be.

1. forgatókönyv: GitOps a Flux és az AKS használatával

A GitOps diagramja a Flux v2, a GitHub és az AKS használatával.

Töltse le az architektúra Visio-fájlját.

Adatfolyam az 1. forgatókönyvhöz

A Flux az AKS natív fürtkiterjesztése . A fürtbővítmények platformot biztosítanak a megoldások AKS-fürtökön való telepítéséhez és kezeléséhez. Az Azure Portal, az Azure CLI vagy az infrastruktúra kódszkriptként (például Terraform- vagy Bicep-szkriptek) használatával engedélyezheti a Fluxot az AKS-bővítményként. Az Azure Policy használatával fluxus v2-konfigurációkat is alkalmazhat nagy méretekben az AKS-fürtökön. További információ: Alkalmazások egységes üzembe helyezése a Flux v2-konfigurációk és az Azure Policy használatával.

A Flux kubernetes-jegyzékeket, Helm-diagramokat és Kustomization-fájlokat helyezhet üzembe az AKS-ben. A Flux egy lekérdezésalapú folyamat, amely képes észlelni, lekérni és összeegyeztetni a konfigurációs módosításokat anélkül, hogy fürtvégpontokat a buildügynököknek adná ki.

Ebben a forgatókönyvben a Kubernetes-rendszergazdák módosíthatják a Kubernetes konfigurációs objektumait, például a titkos kulcsokat és a konfigurációt Térképek, és közvetlenül egy GitHub-adattárban véglegesíthetik a módosításokat.

A forgatókönyv adatfolyama a következő:

  1. A fejlesztő konfigurálási módosításokat véglegesít a GitHub-adattárban.
  2. A Flux észleli a Git-adattár konfigurációs eltéréseit, és lekéri a konfiguráció módosításait.
  3. A Flux egyezteti a Kubernetes-fürt állapotát.

Az 1. forgatókönyv alternatívái

  • A Fluxot más Git-adattárakkal is használhatja, például az Azure DevOps, a GitLab és a BitBucket.
  • Git-adattárak helyett a Flux Bucket API egy forrást határoz meg, amely olyan tárolási megoldásokból származó objektumokhoz állít elő összetevőt, mint az Amazon S3 és a Google Cloud Storage gyűjtők. S3-kompatibilis API-val rendelkező megoldást is használhat. Két példa a Minio és az Alibaba Cloud OSS, de vannak mások is.
  • A Fluxot egy Azure Blob Storage-tárolón is konfigurálhatja forrásként az összetevők előállításához. További információ: GitOps Flux v2-konfigurációk az AKS és az Azure Arc-kompatibilis Kubernetes használatával.

2. forgatókönyv: A GitOps használata a Flux, a GitHub és az AKS használatával a CI/CD implementálásához

A CI/CD implementálásának diagramja a GitOps és a Flux, a GitHub és az AKS használatával.

Töltse le az architektúra Visio-fájlját.

Adatfolyam a 2. forgatókönyvhöz

Ez a forgatókönyv egy lekéréses alapú DevOps-folyamat egy tipikus webalkalmazáshoz. A folyamat a GitHub Actionst használja a buildeléshez. Az üzembe helyezéshez a Fluxot használja GitOps-operátorként az alkalmazás lekéréséhez és szinkronizálásához. Az adatok az alábbiak szerint haladnak végig a forgatókönyvön:

  1. Az alkalmazáskódot egy IDE, például a Visual Studio Code használatával fejlesztik ki.
  2. Az alkalmazáskód egy GitHub-adattárhoz van lekötve.
  3. A GitHub Actions létrehoz egy tárolórendszerképet az alkalmazáskódból, és leküldi a tárolórendszerképet az Azure Container Registrybe.
  4. A GitHub Actions frissíti a Kubernetes-jegyzék üzembehelyezési fájlját az Azure Container Registry tárolólemezképének verziószámán alapuló jelenlegi rendszerkép-verzióval.
  5. A Flux-operátor észleli a Git-adattár konfigurációs eltéréseit, és lekéri a konfiguráció módosításait.
  6. A Flux jegyzékfájlokkal helyezi üzembe az alkalmazást az AKS-fürtön.

3. forgatókönyv: GitOps az Argo CD-vel, a GitHub-adattárral és az AKS-lel

A GitOps diagramja az Argo CD-vel, a GitHubbal és az AKS-sel.

Töltse le az architektúra Visio-fájlját.

Adatfolyam a 3. forgatókönyvhöz

Ebben a forgatókönyvben a Kubernetes-rendszergazda módosíthatja a Kubernetes konfigurációs objektumait, például a titkos kulcsokat és a konfigurációt Térképek, és véglegesítheti a módosításokat közvetlenül a GitHub-adattárban.

A forgatókönyv adatfolyama a következő:

  1. A Kubernetes-rendszergazda konfigurációs módosításokat hajt végre a YAML-fájlokban, és véglegesíti a gitHub-adattár módosításait.
  2. Az Argo CD lekéri a módosításokat a Git-adattárból.
  3. Az Argo CD egyezteti az AKS-fürt konfigurációs módosításait.

Az Argo CD-nek nem kell automatikusan szinkronizálnia a kívánt célállapotot az AKS-fürthöz. Kubernetes-vezérlőként van implementálva, amely folyamatosan figyeli a futó alkalmazásokat. Összehasonlítja az AKS-fürt aktuális, élő állapotát a Git-adattárban megadott célállapottal. Az Argo CD jelentéseket készít és vizualizálja a különbségeket, miközben lehetővé teszi az élő állapot automatikus vagy manuális szinkronizálását a kívánt célállapotra.

Az Argo CD böngészőalapú felhasználói felületet biztosít. Használatával alkalmazáskonfigurációkat adhat hozzá, megfigyelheti a fürt szinkronizálási állapotát, és kezdeményezheti a fürttel való szinkronizálást. Az Argo CD parancssorával is elvégezheti ezeket a műveleteket. A felhasználói felület és a parancssori felület egyaránt biztosít funkciókat a konfigurációs módosítások előzményeinek megtekintéséhez és az előző verzióra való visszaállításhoz.

Alapértelmezés szerint az Argo CD felhasználói felülete és az API-kiszolgáló nem érhető el. A hozzáférésükhöz javasoljuk, hogy hozzon létre egy belső IP-címmel rendelkező bejövő vezérlőt. Vagy egy belső terheléselosztóval is elérhetővé teheti őket.

A 3. forgatókönyv alternatívái

A Gittel kompatibilis adattárak, köztük az Azure DevOps is szolgálhatnak konfigurációs forrástárként.

4. forgatókönyv: A GitOps használata Argo CD-vel, GitHub Actions-ekkel és AKS-sel a CI/CD implementálásához

A CI/CD implementálásának diagramja a GitOps és az Argo CD, a GitHub és az AKS használatával.

Töltse le az architektúra Visio-fájlját.

Adatfolyam a 4. forgatókönyvhöz

Ez a forgatókönyv egy lekéréses alapú DevOps-folyamat egy tipikus webalkalmazáshoz. A folyamat a GitHub Actionst használja a buildeléshez. Az üzembe helyezéshez az Argo CD-t használja GitOps-operátorként az alkalmazás lekéréséhez és szinkronizálásához. Az adatok az alábbiak szerint haladnak végig a forgatókönyvön:

  1. Az alkalmazáskódot egy IDE, például a Visual Studio Code használatával fejlesztik ki.
  2. Az alkalmazáskód egy GitHub-adattárhoz van lekötve.
  3. A GitHub Actions létrehoz egy tárolórendszerképet az alkalmazáskódból, és leküldi a tárolórendszerképet az Azure Container Registrybe.
  4. A GitHub Actions frissíti a Kubernetes-jegyzék üzembehelyezési fájlját az Azure Container Registry tárolólemezképének verziószámán alapuló jelenlegi rendszerkép-verzióval.
  5. Az Argo CD lekéri a Git-adattárat.
  6. Az Argo CD üzembe helyezi az alkalmazást az AKS-fürtön.

A 4. forgatókönyv alternatívái

A Gittel kompatibilis adattárak, köztük az Azure DevOps is szolgálhatnak konfigurációs forrástárként.

Forgatókönyv részletei

A GitOps a szoftverrendszer üzemeltetésének és kezelésének alapelveit tartalmazza.

  • A rendszer egyetlen igazságforrásaként a forrásvezérlést használja.
  • Olyan fejlesztési eljárásokat alkalmaz, mint a verziókövetés, az együttműködés, a megfelelőség és a folyamatos integráció/folyamatos üzembe helyezés (CI/CD) az infrastruktúra automatizálására.
  • Bármilyen szoftverrendszerre alkalmazhatja.

A GitOpst gyakran használják a Kubernetes-fürtkezeléshez és az alkalmazáskézbesítéshez. Ez a cikk a GitOps AKS-fürttel való együttes használatának néhány gyakori lehetőségét ismerteti.

A GitOps alapelvei szerint a GitOps által felügyelt rendszerek kívánt állapotának a következőnek kell lennie:

  1. Deklaratív: A GitOps által kezelt rendszereknek deklaratív módon kell kifejezniük a kívánt állapotukat. A deklaráció általában egy Git-adattárban van tárolva.
  2. Verziószámozott és nem módosítható: A kívánt állapot tárolása olyan módon történik, amely kényszeríti a nem módosíthatóságot és a verziószámozást, és megőrzi a teljes verzióelőzményeket.
  3. Automatikus lekérés: A szoftverügynökök automatikusan lekérik a kívánt állapotdeklarációkat a forrásból.
  4. Folyamatosan egyeztetve: A szoftverügynökök folyamatosan figyelik a rendszer tényleges állapotát, és megpróbálják alkalmazni a kívánt állapotot.

A GitOpsban az infrastruktúra kódként (IaC) kóddal deklarálja az infrastruktúra-összetevők, például a virtuális gépek, a hálózatok és a tűzfalak kívánt állapotát. Ez a kód verzióvezérelt és naplózható.

A Kubernetes a fürtállapottól az alkalmazástelepítésekig mindent deklaratív módon, jegyzékekkel ír le. A Kubernetes-hez készült GitOps verziókövetés alá helyezi a fürtinfrastruktúra kívánt állapotát. A fürt egyik összetevője, amelyet általában operátornak neveznek, folyamatosan szinkronizálja a deklaratív állapotot. Ez a megközelítés lehetővé teszi a fürtöt érintő kódmódosítások áttekintését és naplózását. A minimális jogosultság elvének támogatásával növeli a biztonságot.

A GitOps-ügynökök folyamatosan egyeztetik a rendszerállapotot a kódtárban tárolt kívánt állapottal. Egyes GitOps-ügynökök visszaállíthatják a fürtön kívül végrehajtott műveleteket, például a Kubernetes-objektumok manuális létrehozását. A beléptető vezérlők például házirendeket kényszerítenek ki az objektumokra a létrehozási, frissítési és törlési műveletek során. Ezekkel biztosíthatja, hogy az üzemelő példányok csak akkor változnak, ha a forrásadattár üzembehelyezési kódja megváltozik.

A szabályzatkezelési és kényszerítési eszközöket a GitOpsszal kombinálva kényszerítheti a szabályzatokat, és visszajelzést küldhet a javasolt szabályzatmódosításokról. A különböző csapatok értesítéseit úgy konfigurálhatja, hogy naprakész GitOps-állapotot biztosítsanak számukra. Küldhet például értesítéseket az üzembe helyezés sikerességéről és az egyeztetési hibákról.

A GitOps az igazság egyetlen forrása

A GitOps konzisztenciát és a fürtállapot szabványosítását biztosítja, és segít a biztonság növelésében. A GitOps használatával több fürt konzisztens állapotát is biztosíthatja. A GitOps például ugyanazt a konfigurációt alkalmazhatja az elsődleges és vészhelyreállítási (DR)-fürtökre, vagy egy fürtfarmra.

Ha szeretné kikényszeríteni, hogy csak a GitOps tudja módosítani a fürt állapotát, korlátozhatja a fürthöz való közvetlen hozzáférést. Ennek többféle módja is van, például az Azure szerepköralapú hozzáférés-vezérlése (RBAC), a belépési vezérlők és más eszközök.

Kezdeti konfiguráció indítása a GitOps használatával

Az alapkonfiguráció részeként szükség lehet AKS-fürtök üzembe helyezésére. Ilyen például, hogy a számítási feladatok üzembe helyezése előtt több megosztott szolgáltatást vagy konfigurációt kell üzembe helyeznie. Ezek a megosztott szolgáltatások konfigurálhatják az AKS-bővítményeket, például:

Az AKS-fürt létrehozásakor alkalmazott bővítményként engedélyezheti a Fluxot. A Flux ezután elindíthatja az alapkonfigurációt a fürtre. Az AKS-fürt alaparchitektúrája a GitOps használatát javasolja a rendszerindításhoz. Ha a Flux-bővítményt használja, az üzembe helyezés után rövid időn belül elindíthatja a fürtöket.

Egyéb GitOps-eszközök és bővítmények

A leírt forgatókönyveket más GitOps-eszközökre is kiterjesztheti. A Jenkins X egy másik GitOps-eszköz, amely útmutatást nyújt az Azure-ba való integrációhoz. A GitOpson keresztül üzembe helyezett éles számítási feladatok fokozatos áthelyezéséhez használhat progresszív kézbesítési eszközöket, például a Flaggert .

Lehetséges használati esetek

Ez a megoldás minden olyan szervezet számára előnyös, amely az alkalmazások és az infrastruktúra kódként való üzembe helyezésének előnyeit szeretné használni, és minden változás auditnaplóját tartalmazza.

A GitOps megvédi a fejlesztőt a tárolókörnyezetek kezelésének összetettségétől. A fejlesztők továbbra is használhatnak ismerős eszközöket, például a Gitet a frissítések és az új funkciók kezeléséhez. Ily módon a GitOps javítja a fejlesztői hatékonyságot.

Megfontolások

Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek készlete. További információ: Microsoft Azure Well-Architected Framework.

Megbízhatóság

A megbízhatóság biztosítja, hogy az alkalmazás megfeleljen az ügyfelek felé vállalt kötelezettségeknek. További információ: A megbízhatósági pillér áttekintése.

A megbízhatóság egyik fő pillére a rugalmasság. A rugalmasság célja, hogy az alkalmazás egy hibát követően teljesen működőképes állapotba térjen vissza. Ha egy fürt elérhetetlenné válik, a GitOps gyorsan létrehozhat egy újat. A Git-adattárat használja a Kubernetes-konfiguráció és az alkalmazáslogika egyetlen igazságforrásaként. Skálázási egységként létrehozhatja és alkalmazhatja a fürtkonfigurációt és az alkalmazás üzembe helyezését, és létrehozhatja az üzembehelyezési bélyegmintát .

Biztonság

A biztonság biztosítékokat nyújt a szándékos támadások és az értékes adatokkal és rendszerekkel való visszaélés ellen. További információ: A biztonsági pillér áttekintése.

A GitOps-megközelítéssel az egyes fejlesztők vagy rendszergazdák nem férnek hozzá közvetlenül a Kubernetes-fürtökhöz a módosítások vagy frissítések alkalmazásához. Ehelyett a felhasználók leküldik a módosításokat egy Git-adattárba, és a GitOps operátor (Flux vagy Argo CD) felolvassa a módosításokat, és alkalmazza őket a fürtre. Ez a megközelítés a minimális jogosultság biztonsági ajánlott eljárását követi azáltal, hogy nem ad a DevOps-csapatoknak írási engedélyeket a Kubernetes API-nak. Diagnosztikai vagy hibaelhárítási forgatókönyvekben a fürtengedélyeket eseti alapon korlátozott ideig adhat meg.

Az adattárengedélyek beállításán kívül fontolja meg a következő biztonsági intézkedések implementálását az AKS-fürtökkel szinkronizált Git-adattárakban:

  • Ágvédelem: A Kubernetes-fürtök állapotát képviselő ágak védelme a módosítások közvetlen leküldésétől. A kérelemkérések használatával végezze el a módosításokat, és legalább egy másik személy tekintse át az összes pr-t. Emellett a PRS-ek használatával automatikus ellenőrzéseket is végezhet.
  • PR-felülvizsgálat: Követelje meg, hogy a PRS-ek legalább egy felülvizsgálóval rendelkezzenek a négyszemű elv érvényre juttatásához. A GitHub-kódtulajdonosok funkcióval olyan személyeket vagy csapatokat is meghatározhat, akik az adattár adott fájljainak áttekintéséért felelősek.
  • Nem módosítható előzmények: Csak új véglegesítések engedélyezése a meglévő módosításokon felül. A nem módosítható előzmények naplózási szempontból különösen fontosak.
  • További biztonsági intézkedések: Megkövetelheti a GitHub-felhasználóktól, hogy aktiválják a kéttényezős hitelesítést. Emellett csak aláírt véglegesítések engedélyezése a módosítások megakadályozása érdekében.

Költségoptimalizálás

A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pillér áttekintése.

  • Az ingyenes szinten az AKS ingyenes fürtfelügyeletet kínál. A költségek az AKS által a csomópontok üzemeltetéséhez használt számítási, tárolási és hálózati erőforrásokra korlátozódnak.
  • A GitHub ingyenes szolgáltatást kínál, de a speciális, biztonsággal kapcsolatos funkciók, például a kódtulajdonosok vagy a szükséges véleményezők használatához szüksége van a Csapat csomagra. További információt a GitHub díjszabási oldalán talál.
  • Az Azure DevOps ingyenes szintet kínál, amelyet bizonyos helyzetekben használhat.
  • Az Azure díjkalkulátorával megbecsülheti költségeit.

Működés eredményessége

Az üzemeltetési kiválóság azokat az üzemeltetési folyamatokat fedi le, amelyek üzembe helyeznek egy alkalmazást, és éles környezetben tartják azt. További információ: A működési kiválósági pillér áttekintése.

A GitOps növelheti a DevOps termelékenységét. Az egyik leghasznosabb funkció, hogy gyorsan visszaállíthatja a váratlanul viselkedő módosításokat, csak a Git-műveletek végrehajtásával. A véglegesítési gráf továbbra is tartalmazza az összes véglegesítést, így segíthet a halál utáni elemzésben.

A GitOps-csapatok gyakran több környezetet kezelnek ugyanahhoz az alkalmazáshoz. Általában egy alkalmazás több fázisa van üzembe helyezve különböző Kubernetes-fürtökön vagy névtereken. A Git-adattár, amely az igazság egyetlen forrása, azt mutatja, hogy az alkalmazások mely verziói vannak jelenleg üzembe helyezve egy fürtben.

Forgatókönyv üzembe helyezése

Az alábbi lista az öt forgatókönyv üzembe helyezésével kapcsolatos információkra nyújt hivatkozásokat:

Közreműködők

Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.

Fő szerző:

A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.

Következő lépések