Megosztás:


Üzembe helyezés az Azure-infrastruktúrában a GitHub Actions használatával

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

Architektúra – áttekintés a CI/CD Azure-beli üzembe helyezéséről

Adatfolyam

  1. Hozzon létre egy új ágat, és ellenőrizze a szükséges IaC-kódmódosításokat.
  2. 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.
  3. 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.
  4. A megfelelő felülvizsgálat után a pull request egyesíthető a főágba.
  5. 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.
  6. (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

  1. 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 production az alábbi utasítások követésével. production A 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.

  2. 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 a production kö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 ágnevet main.
  3. 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

  1. 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).

  2. 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 production az alábbi utasítások követésével. production A 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.

  3. 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 és read/write fió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ább Reader and Data Access engedé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/write identitáshoz hozzon létre egy összevont hitelesítő adatot az alábbiak szerint:

    • Állítsa be a Entity Type-t Environment-re, és használja a production környezet nevét.

    read-only Az identitáshoz hozzon létre két összevont hitelesítő adatot az alábbiak szerint:

    • Állítsa a Entity Type elemet Pull Request értékre.
    • Állítsa be a Entity Type értékét Branch-re, és használja az main ágnevet.
  4. 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-only 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.

    Hozzon létre egy másik titkos kulcsot a production környezetben az read-write identitá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 production kö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:

  1. Bicep egységtesztek

    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.

  2. Bicep What-If/Üzembe helyezés

    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:

  1. Terraform egységtesztek

    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.

  2. Terraform-terv / Alkalmazás

    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.

  3. Terraform-eltérésészlelés

    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.