Megosztás a következőn keresztül:


Oktatóanyag: Python-webalkalmazás folyamatos üzembe helyezésének konfigurálása az Azure Container Appsben

Ez a cikk egy oktatóanyag-sorozat része, amely bemutatja, hogyan tárolózhat és helyezhet üzembe Python-webalkalmazásokat az Azure Container Apps. A Container Apps lehetővé teszi a tárolóalapú alkalmazások üzembe helyezését összetett infrastruktúra kezelése nélkül.

Ebben az oktatóanyagban ön:

  • Konfigurálja a tárolóalkalmazások folyamatos üzembe helyezését egy GitHub Actions munkafolyamat használatával.
  • Módosítsa a mintaadattár másolatát a GitHub Actions munkafolyamat aktiválásához.
  • A folyamatos üzembe helyezés konfigurálásával kapcsolatos problémák elhárítása.
  • Távolítsa el azokat az erőforrásokat, amelyekre az oktatóanyag-sorozat befejezésekor nincs szüksége.

A folyamatos üzembe helyezés a folyamatos integráció és a folyamatos teljesítés (CI/CD) DevOps-gyakorlatához kapcsolódik, amely az alkalmazásfejlesztési munkafolyamat automatizálása.

Az alábbi ábra az oktatóanyagban szereplő feladatokat emeli ki.

Python-alkalmazások Azure Container Appsben való üzembe helyezésében részt vevő szolgáltatások diagramja, kiemelve a folyamatos üzembe helyezésről szóló részeket.

Előfeltételek

A folyamatos üzembe helyezés beállításához a következőkre van szükség:

  • Az előző oktatóanyagban létrehozott erőforrások (és azok konfigurációja), amelyek magukban foglalnak egy Azure Container Registry példányt és egy konténeralkalmazást a Azure Container Appskeretében.

  • Egy GitHub-fiók, ahová forkolta a mintakódot (Django vagy Flask), és amelyhez az Azure Container Appsből kapcsolódhat. (Ha fork helyett letöltötte a mintakódot, mindenképpen töltse fel a helyi adattárat a GitHub-fiókjába.)

  • Lehetőség szerint, Git telepítve van a fejlesztői környezetben, hogy kódmódosításokat végezhet, és feltöltheti az adattárba a GitHubon. A módosításokat közvetlenül a GitHubon is elvégezheti.

Tároló folyamatos üzembe helyezésének konfigurálása

Az előző oktatóanyagban létrehozott és konfigurált egy tárolóalkalmazást az Azure Container Appsben. A konfiguráció része volt egy Docker-rendszerkép lekérése egy Azure Container Registry-példányból. A tárolóképet a rendszer letölti a regiszterből, amikor létrehoz egy tárolót a verzióhasználatával, például amikor először állítja be a tárolóalkalmazást.

Ebben a szakaszban egy GitHub Actions-munkafolyamat használatával állítja be a folyamatos üzembe helyezést. A folyamatos üzembe helyezéssel egy új Docker-rendszerkép és tárolóváltozat jön létre egy eseményindító alapján. Az oktatóanyagban szereplő eseményindító az adattár ágának bármilyen módosítása, például lekéréses kérelem esetén. A munkafolyamat aktiválásakor létrehoz egy új Docker-lemezképet, leküldi az Azure Container Registry-példányba, és az új rendszerkép használatával frissíti a tárolóalkalmazást egy új változatra.

Azure CLI-parancsokat futtathat Azure Cloud Shell- vagy olyan munkaállomáson, amelyen telepítve van Azure CLI.

Ha parancsokat futtat egy Git Bash-héjban Windows operációs rendszerű számítógépen, folytatás előtt adja meg a következő parancsot:

export MSYS_NO_PATHCONV=1
  1. Hozzon létre egy szolgáltatás főszereplője az az ad sp create-for-rbac paranccsal:

    az ad sp create-for-rbac \
    --name <app-name> \
    --role Contributor \
    --scopes "/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>"
    

    A parancsban:

    • <alkalmazásnév> a szolgáltatásfő opcionális megjelenítési neve. Ha kihagyja a --name beállítást, a rendszer GUID azonosítót hoz létre megjelenítendő névként.
    • <előfizetés-azonosító> az a GUID, amely egyedileg azonosítja az előfizetést az Azure-ban. Ha nem ismeri az előfizetésének azonosítóját, futtathatja az az account show parancsot, és átmásolhatja a kimenet id tulajdonságából.
    • <erőforráscsoport neve> az Azure Container Apps-tárolót tartalmazó erőforráscsoport neve. A szerepköralapú hozzáférés-vezérlés (RBAC) az erőforráscsoport szintjén van. Ha követte az előző oktatóanyag lépéseit, az erőforráscsoport neve pythoncontainer-rg.

    Mentse a parancs kimenetét a következő lépéshez. Mentse különösen az ügyfélazonosítót (appId tulajdonság), az ügyfél titkos kódját (password tulajdonságát) és a bérlőazonosítót (tenant tulajdonságot).

  2. A GitHub Actions konfigurálása a containerapp github-action add paranccsal:

    az containerapp github-action add \
    --resource-group <resource-group-name> \
    --name python-container-app \
    --repo-url <https://github.com/userid/repo> \
    --branch main \
    --registry-url <registry-name>.azurecr.io \
    --service-principal-client-id <client-id> \
    --service-principal-tenant-id <tenant-id> \
    --service-principal-client-secret <client-secret> \
    --login-with-github
    

    A parancsban:

    • <erőforráscsoport neve> az erőforráscsoport neve. Ebben az oktatóanyagban ez pythoncontainer-rg.
    • <https://github.com/userid/repo> a GitHub-adattárad URL-je. Ebben az oktatóanyagban mindegy, hogy https://github.com/userid/msdocs-python-django-azure-container-apps vagy https://github.com/userid/msdocs-python-flask-azure-container-apps. Ezekben az URL-címekben userid a GitHub felhasználói azonosítója.
    • <rekordnév> az előző oktatóanyagban létrehozott meglévő Azure Container Registry-példány, vagy egy másik, amelyet használhat.
    • <ügyfél-azonosító> az előző appId parancs az ad sp create-for-rbac tulajdonságának értéke. Az azonosító egy GUID, amely a 00000000-0000-0000-0000-00000000formátumú.
    • <bérlőazonosító> az előző tenant parancs az ad sp create-for-rbac tulajdonságának értéke. Az azonosító egy GUID is, amely az ügyfélazonosítóhoz hasonló.
    • <titkos ügyfélkód> az előző password parancs az ad sp create-for-rbac tulajdonságának értéke.

A folyamatos üzembe helyezés konfigurációjában egy szolgáltatásnév lehetővé teszi a GitHub Actions számára az Azure-erőforrások elérését és módosítását. A szolgáltatási főkapcsolathoz rendelt szerepkörök korlátozzák az erőforrásokhoz való hozzáférést. A szolgáltatási főszereplő hozzá lett rendelve a beépített Contributor szerepkörhöz a tárolóalkalmazást tartalmazó erőforráscsoportban.

Ha követte a portál lépéseit, a szolgáltatási főszereplő automatikusan létrejött Önnek. Ha követte az Azure CLI lépéseit, kifejezetten létrehozta a szolgáltatásnevet a folyamatos üzembe helyezés konfigurálása előtt.

A webalkalmazás ismételt üzembe helyezése a GitHub Actions használatával

Ebben a szakaszban módosítja a minta adattár forkolt másolatát. Ezután ellenőrizheti, hogy a módosítás automatikusan telepítve van-e a webhelyen.

Ha még nem tette meg, készítsen egy forkot a mintatárházból (Django vagy Flask). A kódot módosíthatja közvetlenül a GitHub- felületen vagy a fejlesztői környezetben a Gitsegítségével parancssorból.

  1. Menjen a saját mintaadattári elágazásához, és kezdje a ágon.

    Egy képernyőkép, amely bemutatja a fő ágat egy példatár forkjában.

  2. Módosítsa a következőt:

    1. Nyissa meg a /templates/base.html fájlt. (Django esetében az elérési út restaurant_review/templates/restaurant_review/base.html.)
    2. Válassza a Szerkesztés lehetőséget, és módosítsa a Azure Restaurant Review kifejezést Azure Restaurant Review - Redeployed.

    Képernyőkép, amely bemutatja, hogyan módosíthat egy sablonfájlt a mintaadattár elágazásában.

  3. A szerkeszteni kívánt lap alján győződjön meg arról, hogy a Véglegesítés közvetlenül a főágra van kiválasztva. Ezután válassza a Módosítások véglegesítése gombot.

    Képernyőkép, amely a minta-repozitórium elágazásában lévő sablonfájlban a módosítás véglegesítésére szolgáló kijelöléseket jeleníti meg.

A véglegesítés elindítja a GitHub Actions munkafolyamatot.

Jegyzet

Ez az oktatóanyag bemutatja, hogy a módosítás közvetlenül a ágban történt. A tipikus szoftveres munkafolyamatokban egy másik ágban, nem a ágban kell módosítást végeznie, majd létre kell hoznia egy pull requestet, hogy a módosítást egyesítse a ágba. A pull requestek a munkafolyamatot is elindítják.

A GitHub Actions ismertetése

Munkafolyamat-előzmények megtekintése

Ha meg kell tekintenie a munkafolyamat előzményeit, használja az alábbi eljárások egyikét.

A GitHubon lépjen az ön által készített példatárrészre, és nyissa meg a Műveletek lapot.

Adattár Műveletek lapján található munkafolyamatokat bemutató képernyőkép.

Munkafolyamat titkos kódjai

Az adattárhoz hozzáadott .github/workflows/<munkafolyamat neve>.yml munkafolyamat-fájl a munkafolyamat buildelési és tárolóalkalmazás-frissítési feladataihoz szükséges hitelesítő adatok helyőrzőit tartalmazza. A hitelesítő adatokat a rendszer titkosítva tárolja az adattár Beállítások területén, Biztonsági>Titkos kódok és változók>Műveletekterületen.

A hitelesítő adatokat GitHub Actions-titkos kulcsként megjelenítő képernyőkép.

Ha a hitelesítő adatok megváltoznak, itt frissítheti. Ha például az Azure Container Registry jelszavai újragenerálódnak, frissítenie kell a REGISTRY_PASSWORD értéket. További információért lásd a Titkosított titkok részt a GitHub dokumentációjában.

OAuth-jogosult alkalmazások

A folyamatos üzembe helyezés beállításakor az Azure Container Appst kell a GitHub-fiókhoz engedélyezett OAuth-alkalmazásként kijelölni. A Container Apps az engedélyezett hozzáféréssel hoz létre egy GitHub Actions YAML-fájlt .github/workflows/<munkafolyamat-név>.yml. Megtekintheti a jogosult alkalmazásokat, és visszavonhatja az engedélyeket a fiókjában az Integrációk>Alkalmazásokterületen.

A GitHubon egy felhasználó számára engedélyezett alkalmazások helyét bemutató képernyőkép.

Hibaelhárítás

Hibaüzenetek jelennek meg a szolgáltatásnév Azure CLI-vel történő beállításakor

Ez a szakasz az Azure CLI az ad sp create-for-rba paranccsal segítséget nyújt a szolgáltatásnév beállítása során felmerülő hibák elhárításában.

Ha a "InvalidSchema: No connection adapters were found" hibaüzenet jelenik meg:

Ha a következő hibaüzenet jelenik meg: "Több alkalmazásnak ugyanaz a megjelenítendő neve":

  • A szolgáltatásnév már szerepel a névben. Válasszon másik nevet, vagy hagyja ki a --name argumentumot. A rendszer automatikusan létrehoz egy GUID azonosítót megjelenítendő névként.

A GitHub Actions munkafolyamata nem sikerült

A munkafolyamat állapotának ellenőrzéséhez nyissa meg az adattár Műveletek lapját:

  • Sikertelen munkafolyamat esetén bontsa ki a munkafolyamat-fájlt. Két feladatnak kell lennie: konfigurálás és üzembe helyezés. Sikertelen feladat esetén ellenőrizze a feladat tevékenységeinek kimenetét, és keresse meg a problémákat.
  • Ha "TLS-kézfogás időtúllépést" tartalmazó hibaüzenet jelenik meg, futtassa manuálisan a munkafolyamatot. Az adattárban a Műveletek lapon válassza az Automatikus üzembe helyezés aktiválása lehetőséget annak megtekintéséhez, hogy az időtúllépés átmeneti probléma-e.
  • Ha a tárolóalkalmazás folyamatos üzembe helyezését állítja be az oktatóanyagban látható módon, a munkafolyamat-fájl (.github/workflows/<munkafolyamat neve>.yml) automatikusan létrejön Önnek. Ehhez az oktatóanyaghoz nem kell módosítania ezt a fájlt. Ha igen, állítsa vissza a módosításokat, és próbálja ki a munkafolyamatot.

A webhely nem jeleníti meg a főágban egyesített módosításokat

GitHub környezetében

  • Ellenőrizze, hogy a GitHub Actions munkafolyamat futott-e, és hogy ellenőrizte-e a módosítást a munkafolyamatot aktiváló ágban.

Az Azure Portalon:

  • Ellenőrizze az Azure Container Registry-példányban, hogy létre lett-e hozva egy új Docker-rendszerkép egy időbélyeggel az ág módosítása után.

  • Ellenőrizze a tárolóalkalmazás naplóit, hogy van-e programozási hiba:

    1. Nyissa meg a konténeralkalmazást, majd lépjen a Változatkezelés><aktív konténer>>Változat részletei>Konzolnaplókpontra.
    2. Válassza ki az oszlopok sorrendjét a generált idő, a Stream_sés a Log_smegjelenítéséhez.
    3. Rendezze a naplókat a legutóbbiak szerint, és keresse meg a Python-stderr és stdout üzeneteket a Stream_s oszlopban. A Python print kimenete stdout üzenet.

Az Azure CLI-ben:

Le szeretné állítani a folyamatos üzembe helyezést

A folyamatos üzembe helyezés leállítása azt jelenti, hogy leválasztja a tárolóalkalmazást az adattárról.

Az Azure Portalon:

  • Nyissa meg a tárolóalkalmazást. A szolgáltatás menüjében válassza a Folyamatos üzembe helyezés, majd a Kapcsolat bontásalehetőséget.

Az Azure CLI-ben:

A kapcsolat bontása után:

  • A .github/workflows/<munkafolyamat-név>.yml fájl törlődik az adattárból.
  • A titkos kulcsok nem törlődnek az adattárból.
  • Az Azure Container Apps továbbra is hivatalos OAuth-alkalmazás marad a GitHub-fiókjához.
  • Az Azure-ban a konténer a legutóbb telepített konténerrel marad meghagyva. Újracsatlakoztathatja a tárolóalkalmazást az Azure Container Registry példánnyal, így az új tárolóváltozatok a legújabb rendszerképet használják.
  • Az Azure-ban a folyamatos üzembe helyezéshez létrehozott és használt szolgáltatásnevek nem törlődnek.

Erőforrások eltávolítása

Ha végzett az oktatóanyag-sorozattal, és nem szeretne többletköltségeket eredményezni, távolítsa el a felhasznált erőforrásokat.

Az erőforráscsoport eltávolítása eltávolítja a csoport összes erőforrását, és ez a leggyorsabb módja az erőforrások eltávolításának. Az erőforráscsoportok eltávolítására vonatkozó példa: Containerize tutorial cleanup.

Ha az oktatóanyagra szeretne építeni, az alábbi lépéseket teheti meg: