Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
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.
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 fő á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
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
--namebeá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
idtulajdonsá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 (
appIdtulajdonság), az ügyfél titkos kódját (passwordtulajdonságát) és a bérlőazonosítót (tenanttulajdonságot).-
<alkalmazásnév> a szolgáltatásfő opcionális megjelenítési neve. Ha kihagyja a
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-githubA 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-appsvagyhttps://github.com/userid/msdocs-python-flask-azure-container-apps. Ezekben az URL-címekbenuserida 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ő
appIdparancsaz ad sp create-for-rbactulajdonságának értéke. Az azonosító egy GUID, amely a00000000-0000-0000-0000-00000000formátumú. -
<bérlőazonosító> az előző
tenantparancsaz ad sp create-for-rbactulajdonságának értéke. Az azonosító egy GUID is, amely az ügyfélazonosítóhoz hasonló. -
<titkos ügyfélkód> az előző
passwordparancsaz ad sp create-for-rbactulajdonságának értéke.
-
<erőforráscsoport neve> az erőforráscsoport neve. Ebben az oktatóanyagban ez
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.
Menjen a saját mintaadattári elágazásához, és kezdje a fő ágon.
Módosítsa a következőt:
- Nyissa meg a /templates/base.html fájlt. (Django esetében az elérési út restaurant_review/templates/restaurant_review/base.html.)
- Válassza a Szerkesztés lehetőséget, és módosítsa a
Azure Restaurant ReviewkifejezéstAzure Restaurant Review - Redeployed.
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.
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 fő ágban történt. A tipikus szoftveres munkafolyamatokban egy másik ágban, nem a fő á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 főá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.
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.
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.
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:
Nézze meg, melyik shell fut. Ha Bash shell-t használ, állítsa be a
MSYS_NO_PATHCONVváltozókatexport MSYS_NO_PATHCONV=1.További információkért lásd a GitHub-esetet , amely szerint nem hozható létre szolgáltatási azonosító az Azure CLI-vel a Git Bash rendszerhéjból.
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
--nameargumentumot. 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:
- Nyissa meg a konténeralkalmazást, majd lépjen a Változatkezelés><aktív konténer>>Változat részletei>Konzolnaplókpontra.
- Válassza ki az oszlopok sorrendjét a generált idő, a Stream_sés a Log_smegjelenítéséhez.
- Rendezze a naplókat a legutóbbiak szerint, és keresse meg a Python-
stderrésstdoutüzeneteket a Stream_s oszlopban. A Pythonprintkimenetestdoutüzenet.
Az Azure CLI-ben:
- Használja az az containerapp logs show parancsot.
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:
- Használja az „az container app github-action remove” parancsot.
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.
Kapcsolódó tartalom
Ha az oktatóanyagra szeretne építeni, az alábbi lépéseket teheti meg: