Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ebben az útmutatóban bemutatjuk, hogyan használható a CI/CD és az infrastruktúra kódként (IaC) az Azure-ban a GitHub Actions használatával automatizált és megismételhető módon történő üzembe helyezésre.
Ez a cikk egy architektúra áttekintése , és egy strukturált megoldást mutat be egy skálázható, biztonságos, rugalmas és magas rendelkezésre állású azure-beli alkalmazás megtervezéséhez. Ha több valós példát szeretne látni a felhőarchitektúrákra és a megoldási ötletekre, böngésszen az Azure-architektúrák között.
Az IaC és az automatizálás üzembe helyezéshez való használatának előnyei
Az Azure-ban számos módon lehet üzembe helyezni, beleértve az Azure Portalt, a CLI-t, az API-t stb. Ebben az útmutatóban az IaC és a CI/CD automatizálását fogjuk használni. Ennek a megközelítésnek az előnyei a következők:
Deklaratív: Ha kódban definiálja az infrastruktúrát és az üzembehelyezési folyamatot, az a szoftverfejlesztés szabványos életciklusával verziószámozott és áttekinthető. Az IaC emellett segít megelőzni a konfiguráció eltérését.
Konzisztencia: Az IaC-folyamat követése biztosítja, hogy a teljes szervezet egy szabványos, jól bevált módszert követve telepítse az ajánlott eljárásokat tartalmazó és a biztonsági igényeknek megfelelő infrastruktúrát. A központi sablonok fejlesztései egyszerűen alkalmazhatók a szervezetben.
Biztonság: A központilag felügyelt sablonokat egy felhőművelet vagy biztonsági csapat megerősítheti és jóváhagyhatja a belső szabványoknak való megfelelés érdekében.
Önkiszolgáló: A csapatok felhatalmazva vannak arra, hogy központilag felügyelt sablonok használatával telepítsék saját infrastruktúrájukat.
Továbbfejlesztett hatékonyság: A standard sablonok használatával a csapatok gyorsan üzembe helyezhetnek új környezeteket anélkül, hogy az összes implementálási részlet miatt aggódniuk kellene.
További információt az Megismételhető infrastruktúra alatt talál az Azure Architecture Centerben, vagy azt, hogy mi az infrastruktúra kódként a DevOps Erőforrásközpontban.
Architecture
Adatfolyam
- Hozzon létre egy új ágat, és ellenőrizze a szükséges IaC-kódmódosításokat.
- Ha készen áll a módosítások környezetbe való egyesítése, hozzon létre egy lekéréses kérelmet (PR) a GitHubon.
- Egy GitHub Actions-munkafolyamat aktiválódik, hogy a kód megfelelően formázott, belsőleg konzisztens legyen, és biztonságos infrastruktúrát hozzon létre. Emellett egy Terraform-terv vagy Bicep 'what-if' elemzés futtatása fog történni, hogy előnézetet generáljon az Azure-környezetben bekövetkező változásokról.
- A megfelelő felülvizsgálat után a pull request egyesíthető a főágba.
- Egy másik GitHub Actions-folyamat a fő ág aktiválása után indul el, és végrehajtja a módosításokat az IaC-szolgáltatón keresztül.
- (kizárólag a Terraformra) Egy rendszeresen ütemezett GitHub Action-munkafolyamatnak is futnia kell, hogy megkeresse a környezet konfigurációs eltéréseit, és a módosítások észlelése esetén új problémát hozzon létre.
Előfeltételek
Használd a Bicepet
GitHub-környezetek létrehozása
A munkafolyamatok GitHub-környezeteket és titkos kulcsokat használnak az Azure-identitásadatok tárolásához, és beállítanak egy jóváhagyási folyamatot az üzembe helyezésekhez. Hozzon létre egy környezetet
productionaz alábbi utasítások követésével.productionA környezetben állítson be egy védelmi szabályt, és adja hozzá azokat a szükséges jóváhagyókat, akiknek jóvá kell hagyniuk az éles üzembe helyezéseket. A környezetet az alapértelmezett ágra is korlátozhatja. Részletes útmutatást itt talál.Az Azure Identity beállítása:
Olyan Azure Active Directory-alkalmazásra van szükség, amely rendelkezik az Azure-előfizetésen belüli üzembe helyezéshez szükséges engedélyekkel. Hozzon létre egyetlen alkalmazást, és adja meg a megfelelő olvasási/írási engedélyeket az Azure-előfizetésében. Ezután állítsa be az összevont hitelesítő adatokat, hogy a GitHub az OpenID Connect (OIDC) használatával használhassa az identitást. Részletes útmutatásért tekintse meg az Azure dokumentációját . Három összevont hitelesítő adatot kell hozzáadni:
- Állítsa be az entitástípus
Environmentértékét, és használja aproductionkörnyezet nevet. - Entitástípus beállítása a következőre
Pull Request: . - Állítsa be az entitástípust
Branch, és használja az ágnevetmain.
- Állítsa be az entitástípus
GitHub-titkos kódok hozzáadása
Megjegyzés:
Bár az Azure-identitásokkal kapcsolatos adatok egyike sem tartalmaz titkos kulcsokat vagy hitelesítő adatokat, továbbra is a GitHub-titkos kulcsokat használjuk kényelmes eszközként az identitásadatok környezetenkénti paraméterezéséhez.
Hozza létre a következő titkos kódokat az adattárban az Azure-identitás használatával:
-
AZURE_CLIENT_ID: Az alkalmazásregisztráció alkalmazás-(ügyfél-) azonosítója az Azure-ban -
AZURE_TENANT_ID: Az Azure Active Directory bérlőazonosítója, ahol az alkalmazásregisztráció definiálva van. -
AZURE_SUBSCRIPTION_ID: Az előfizetés azonosítója, ahol az alkalmazásregisztráció definiálva van.
A titkos kulcsok adattárhoz való hozzáadására vonatkozó utasításokat itt találja.
-
A Terraform használata
Terraform-állapot helyének konfigurálása
A Terraform egy állapotfájlt használ a felügyelt infrastruktúra aktuális állapotára és a kapcsolódó konfigurációra vonatkozó információk tárolására. Ezt a fájlt meg kell őrizni a munkafolyamat különböző futtatásai között. A javasolt módszer a fájl tárolása egy Azure Storage-fiókban vagy más hasonló távoli háttérrendszerben. Ez a tároló általában manuálisan vagy egy külön munkafolyamaton keresztül lesz kiépítve. A Terraform háttérterületét frissíteni kell a kiválasztott tárhellyel ( a dokumentációt itt találja).
GitHub-környezet létrehozása
A munkafolyamatok GitHub-környezeteket és titkos kulcsokat használnak az Azure-identitásadatok tárolásához, és beállítanak egy jóváhagyási folyamatot az üzembe helyezésekhez. Hozzon létre egy környezetet
productionaz alábbi utasítások követésével.productionA környezetben állítson be egy védelmi szabályt, és adja hozzá azokat a szükséges jóváhagyókat, akiknek jóvá kell hagyniuk az éles üzembe helyezéseket. A környezetet az alapértelmezett ágra is korlátozhatja. Részletes útmutatást itt talál.Az Azure Identity beállítása:
Olyan Azure Active Directory-alkalmazásra van szükség, amely rendelkezik az Azure-előfizetésen belüli üzembe helyezéshez szükséges engedélyekkel. Hozzon létre egy külön alkalmazást a
read-onlyésread/writefiókok számára, és adja meg nekik a megfelelő engedélyeket az Ön Azure-előfizetésében. Emellett mindkét szerepkörnek legalábbReader and Data Accessengedélyre is szüksége lesz ahhoz a tárfiókhoz, ahol az 1. lépésből származó Terraform állapotfájl található. Ezután állítsa be az összevont hitelesítő adatokat, hogy a GitHub az OpenID Connect (OIDC) használatával használhassa az identitást. Részletes útmutatásért tekintse meg az Azure dokumentációját .Az
read/writeidentitáshoz hozzon létre egy összevont hitelesítő adatot az alábbiak szerint:- Állítsa be a
Entity Type-tEnvironment-re, és használja aproductionkörnyezet nevét.
read-onlyAz identitáshoz hozzon létre két összevont hitelesítő adatot az alábbiak szerint:- Állítsa a
Entity TypeelemetPull Requestértékre. - Állítsa be a
Entity TypeértékétBranch-re, és használja azmainágnevet.
- Állítsa be a
GitHub-titkos kódok hozzáadása
Megjegyzés:
Bár az Azure-identitásokkal kapcsolatos adatok egyike sem tartalmaz titkos kulcsokat vagy hitelesítő adatokat, továbbra is a GitHub-titkos kulcsokat használjuk kényelmes eszközként az identitásadatok környezetenkénti paraméterezéséhez.
Hozza létre a következő titkos kódokat az adattárban az
read-onlyidentitás használatával:-
AZURE_CLIENT_ID: Az alkalmazásregisztráció alkalmazás-(ügyfél-) azonosítója az Azure-ban -
AZURE_TENANT_ID: Az Azure Active Directory bérlőazonosítója, ahol az alkalmazásregisztráció definiálva van. -
AZURE_SUBSCRIPTION_ID: Az előfizetés azonosítója, ahol az alkalmazásregisztráció definiálva van.
A titkos kulcsok adattárhoz való hozzáadására vonatkozó utasításokat itt találja.
Hozzon létre egy másik titkos kulcsot a
productionkörnyezetben azread-writeidentitás használatával:-
AZURE_CLIENT_ID: Az alkalmazásregisztráció alkalmazás-(ügyfél-) azonosítója az Azure-ban
A titkos kulcsok környezethez való hozzáadására vonatkozó utasításokat itt találja. A környezeti titkos kód felülírja az adattár titkos kódját, amikor az üzembe helyezési lépést a
productionkörnyezetbe hajtja végre, amikor emelt szintű olvasási/írási engedélyekre van szükség.-
Üzembe helyezés a GitHub Actions használatával
Használd a Bicepet
A referenciaarchitektúra két fő munkafolyamatot tartalmaz:
-
Ez a munkafolyamat minden véglegesítésen fut, és az infrastruktúra kódjára vonatkozó egységtesztekből áll. bicep build futtatásával lefordítja a bicep-et ARM-sablonra. Ez biztosítja, hogy ne legyenek formázási hibák. Ezután ellenőrzi , hogy a sablon üzembe helyezhető-e. Végül a checkov, az IaC nyílt forráskódú statikus kódelemző eszköze a biztonsági és megfelelőségi problémák észlelésére fog futni. Ha az adattár a GitHub Advanced Securityt (GHAS) használja, az eredmények fel lesznek töltve a GitHubra.
-
Ez a munkafolyamat minden lekéréses kérelemen és a főághoz tartozó véglegesítéseken fut. A munkafolyamat what-if szakasza az IaC-változások Azure-környezetre gyakorolt hatásának megértésére szolgál a what-if futtatásával. Ezt a jelentést ezután csatolja a pr-hez az egyszerű áttekintés érdekében. Az üzembe helyezési fázis a lehetőségelemzés után fut, amikor a munkafolyamatot a fő ágra történő leküldés aktiválja. Ez a szakasz a manuális felülvizsgálat jóváhagyása után telepíti a sablont az Azure-ra.
A Terraform használata
A referenciaarchitektúra három fő munkafolyamatot tartalmaz:
-
Ez a munkafolyamat minden véglegesítésen fut, és az infrastruktúra kódjára vonatkozó egységtesztekből áll. A kód megfelelő lintelését és a Terraform ajánlott eljárásainak követését a terraform fmt futtatása biztosítja. Ezután terraformos ellenőrzést végez annak ellenőrzéséhez, hogy a kód szintaktikailag helyes és belsőleg konzisztens-e. Végül a checkov, az IaC nyílt forráskódú statikus kódelemző eszköze a biztonsági és megfelelőségi problémák észlelésére fog futni. Ha az adattár a GitHub Advanced Securityt (GHAS) használja, az eredmények fel lesznek töltve a GitHubra.
-
Ez a munkafolyamat minden lekéréses kérelemen és a főághoz tartozó véglegesítéseken fut. A munkafolyamat tervszakasza a Terraform-terv futtatásával értelmezi az IaC-változások Azure-környezetre gyakorolt hatását. Ezt a jelentést ezután csatolja a pr-hez az egyszerű áttekintés érdekében. Az alkalmazás fázisa a terv után fut, amikor a munkafolyamatot egy leküldés indítja a főágba. Ez a szakasz a tervdokumentumot veszi át, és alkalmazza a módosításokat, miután a manuális felülvizsgálat jóvá lett hagyva, ha a környezetben függőben lévő változások vannak.
-
Ez a munkafolyamat rendszeres időközönként fut, hogy megvizsgálja a környezetet a Terraformon kívül végrehajtott konfigurációs eltérések vagy módosítások keresése érdekében. Ha eltérést észlelnek, egy GitHub-problémát hoznak létre azzal a céllal, hogy értesítsék a projekt karbantartóit.