Ajánlott üzembehelyezési eljárások

Minden fejlesztői csapat egyedi követelményekkel rendelkezik, amelyek megnehezíthetik a hatékony üzembe helyezési folyamat megvalósítását bármely felhőszolgáltatásban. Ez a cikk az App Service-ben való üzembe helyezés három fő összetevőjét mutatja be: üzembehelyezési forrásokat, buildelési folyamatokat és üzembehelyezési mechanizmusokat. Ez a cikk néhány ajánlott eljárást és tippeket is tartalmaz adott nyelvi veremekhez.

Üzembehelyezési összetevők

Üzembehelyezési forrás

Az üzembehelyezési forrás az alkalmazáskód helye. Éles alkalmazások esetében az üzembehelyezési forrás általában egy olyan verzióvezérlő szoftver által üzemeltetett adattár, mint a GitHub, a BitBucket vagy az Azure Repos. Fejlesztési és tesztelési forgatókönyvek esetén az üzembehelyezési forrás lehet egy projekt a helyi gépen.

Buildelési folyamat

Miután kiválasztotta az üzembehelyezési forrást, a következő lépés egy buildelési folyamat kiválasztása. A buildelési folyamat beolvassa a forráskódot az üzembehelyezési forrásból, és végrehajt egy sor lépést (például kód összeállítása, HTML és JavaScript minifying, futó tesztek és csomagolási összetevők) az alkalmazás futtatható állapotba helyezéséhez. A buildelési folyamat által végrehajtott parancsok a nyelvi veremtől függenek. Ezek a műveletek végrehajthatók egy buildkiszolgálón, például az Azure Pipelineson, vagy helyben hajthatók végre.

Üzembehelyezési mechanizmus

Az üzembe helyezési mechanizmus az a művelet, amellyel a beépített alkalmazást a webalkalmazás /home/site/wwwroot könyvtárába helyezheti. A /wwwroot könyvtár a webalkalmazás összes példánya által megosztott csatlakoztatott tárolóhely. Amikor az üzembe helyezési mechanizmus ebbe a könyvtárba helyezi az alkalmazást, a példányok értesítést kapnak az új fájlok szinkronizálásáról. Az App Service a következő üzembehelyezési mechanizmusokat támogatja:

  • Kudu-végpontok: A Kudu egy nyílt forráskódú fejlesztői hatékonyságnövelő eszköz, amely külön folyamatként fut a Windows App Service-ben, és második tárolóként a Linux App Service-ben. A Kudu kezeli a folyamatos üzembe helyezéseket, és HTTP-végpontokat biztosít az üzembe helyezéshez, például zipdeploy/.
  • FTP és WebDeploy: A webhely vagy a felhasználói hitelesítő adatok használatával ftp vagy WebDeploy használatával tölthet fel fájlokat. Ezek a mechanizmusok nem a Kudu-on mennek keresztül.

Az olyan üzembehelyezési eszközök, mint az Azure Pipelines, a Jenkins és a szerkesztő beépülő modul, ezen üzembe helyezési mechanizmusok egyikét használják.

Üzembehelyezési pontok használata

Amikor csak lehetséges, használjon üzembehelyezési pontokat egy új éles build üzembe helyezésekor. Standard App Service-csomag használata esetén üzembe helyezheti az alkalmazást átmeneti környezetben, ellenőrizheti a módosításokat, és füstteszteket végezhet. Ha készen áll, felcserélheti az előkészítési és éles tárolóhelyeket. A felcserélési művelet felmelegíti a szükséges feldolgozópéldányokat az éles méretnek megfelelően, így kiküszöbölve az állásidőt.

Kód folyamatos üzembe helyezése

Ha a projekt kijelölt ágakat a teszteléshez, a QA-hoz és az előkészítéshez, akkor ezeket az ágakat folyamatosan üzembe kell helyezni egy átmeneti ponton. (Ez az úgynevezett Gitflow-kialakítás.) Ez lehetővé teszi az érdekelt felek számára, hogy egyszerűen értékeljék és teszteljék az üzembe helyezett ágat.

A folyamatos üzembe helyezést soha nem szabad engedélyezni az éles ponthoz. Ehelyett az éles ágat (gyakran fő) egy nem termelési ponton kell üzembe helyezni. Ha készen áll az alapág felszabadítására, cserélje le az éles pontra. Az éles környezetbe való felcserélés – éles üzembe helyezés helyett – megakadályozza az állásidőt, és lehetővé teszi a módosítások visszaállítását az újracseréléssel.

Diagram that shows the flow between the Dev, Staging, and Main branches and the slots they are deployed to.

Tárolók folyamatos üzembe helyezése

A Dockerből vagy más tárolóregisztrációs adatbázisokból származó egyéni tárolók esetében helyezze üzembe a lemezképet egy átmeneti tárolóhelyen, és váltsa fel éles környezetbe az állásidő megakadályozása érdekében. Az automatizálás összetettebb, mint a kód üzembe helyezése, mert le kell küldenie a lemezképet egy tárolóregisztrációs adatbázisba, és frissítenie kell a rendszerképcímkét a webalkalmazásban.

Minden olyan ághoz, amelyet üzembe szeretne helyezni egy ponton, állítsa be az automatizálást, hogy az alábbiakat végezze el az ág minden egyes véglegesítésén.

  1. Hozza létre és címkézze fel a képet. A buildelési folyamat részeként címkézze fel a képet a git véglegesítési azonosítójával, az időbélyeggel vagy más azonosítható információkkal. A legjobb, ha nem az alapértelmezett "legújabb" címkét használja. Ellenkező esetben nehéz visszakövetni a jelenleg üzembe helyezett kódot, ami sokkal nehezebbé teszi a hibakeresést.
  2. Nyomja le a címkézett képet. A rendszerkép létrehozása és címkézése után a folyamat leküldi a lemezképet a tárolóregisztrációs adatbázisba. A következő lépésben az üzembehelyezési pont lekéri a címkézett lemezképet a tárolóregisztrációs adatbázisból.
  3. Frissítse az üzembehelyezési pontot az új rendszerképcímkével. A tulajdonság frissítésekor a webhely automatikusan újraindul, és lekéri az új tárolórendszerképet.

Slot usage visual

Az alábbiakban példákat talál a gyakori automatizálási keretrendszerekre.

Az Azure DevOps használata

Az App Service beépített folyamatos kézbesítést biztosít a tárolókhoz az Üzembe helyezési központban keresztül. Lépjen az alkalmazáshoz az Azure Portalon, és válassza az Üzembe helyezési központ lehetőséget az Üzembe helyezés alatt. Kövesse az utasításokat az adattár és az ág kiválasztásához. Ez konfigurál egy DevOps buildelési és kiadási folyamatot a tároló automatikus összeállítására, címkézésére és üzembe helyezésére, amikor az új véglegesítések leküldése megtörténik a kijelölt ágba.

A GitHub Actions használata

A tároló üzembe helyezését a GitHub Actions használatával is automatizálhatja. Az alábbi munkafolyamat-fájl létrehozza és címkézi a tárolót a véglegesítési azonosítóval, leküldi egy tárolóregisztrációs adatbázisba, és frissíti a megadott webalkalmazást az új rendszerképcímkével.

on:
  push:
    branches:
    - <your-branch-name>

name: Linux_Container_Node_Workflow

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    # checkout the repo
    - name: 'Checkout Github Action'
      uses: actions/checkout@main

    - uses: azure/docker-login@v1
      with:
        login-server: contoso.azurecr.io
        username: ${{ secrets.REGISTRY_USERNAME }}
        password: ${{ secrets.REGISTRY_PASSWORD }}

    - run: |
        docker build . -t contoso.azurecr.io/nodejssampleapp:${{ github.sha }}
        docker push contoso.azurecr.io/nodejssampleapp:${{ github.sha }} 

    - uses: azure/webapps-deploy@v2
      with:
        app-name: 'node-rnc'
        publish-profile: ${{ secrets.azureWebAppPublishProfile }}
        images: 'contoso.azurecr.io/nodejssampleapp:${{ github.sha }}'

Más automatizálási szolgáltatók használata

A korábban felsorolt lépések más automatizálási segédprogramokra, például a CircleCI-re vagy a Travis CI-re vonatkoznak. Az üzembehelyezési pontok új képcímkékkel való frissítéséhez azonban az Azure CLI-t kell használnia az utolsó lépésben. Az Azure CLI automatizálási szkriptben való használatához hozzon létre egy szolgáltatásnevet az alábbi paranccsal.

az ad sp create-for-rbac --name "myServicePrincipal" --role contributor \
   --scopes /subscriptions/{subscription}/resourceGroups/{resource-group} \
   --sdk-auth

A szkriptben jelentkezzen be az login --service-principalaz egyszerű felhasználó adatainak megadásával. Ezután az webapp config container set beállíthatja a tároló nevét, címkéjét, a beállításjegyzék URL-címét és a beállításjegyzék jelszavát. Az alábbiakban néhány hasznos hivatkozást talál a tároló CI-folyamatának létrehozásához.

Nyelvspecifikus szempontok

Java

A Kudu zipdeploy/ API használatával jar-alkalmazásokat helyezhet üzembe, a WAR-alkalmazások esetében pedig a wardeploy/ -t. Ha Jenkinst használ, ezeket az API-kat közvetlenül az üzembe helyezési fázisban használhatja. További információkért tekintse meg ezt a cikket.

Csomópont

Alapértelmezés szerint a Kudu végrehajtja a csomópontalkalmazás (npm install) buildelési lépéseit. Ha olyan buildelési szolgáltatást használ, mint az Azure DevOps, akkor a Kudu-build szükségtelen. A Kudu-build letiltásához hozzon létre egy alkalmazásbeállítást, SCM_DO_BUILD_DURING_DEPLOYMENTamelynek értéke : false.

.

A Kudu alapértelmezés szerint végrehajtja a .NET-alkalmazás (dotnet build) buildelési lépéseit. Ha olyan buildelési szolgáltatást használ, mint az Azure DevOps, akkor a Kudu-build szükségtelen. A Kudu-build letiltásához hozzon létre egy alkalmazásbeállítást, SCM_DO_BUILD_DURING_DEPLOYMENTamelynek értéke : false.

Egyéb üzembe helyezési szempontok

Helyi gyorsítótár

Azure-alkalmazás szolgáltatástartalmak az Azure Storage-ban tárolódnak, és tartalommegosztásként tartósan kerülnek felszínre. Egyes alkalmazásoknak azonban csak nagy teljesítményű, írásvédett tartalomtárra van szükségük, amelyet magas rendelkezésre állással futtathatnak. Ezek az alkalmazások kihasználhatják a helyi gyorsítótár használatát. A helyi gyorsítótár nem ajánlott tartalomkezelő webhelyekhez, például a WordPresshez.

Az állásidő elkerülése érdekében mindig használja a helyi gyorsítótárat az üzembehelyezési pontokkal együtt. A funkciók együttes használatáról ebben a szakaszban olvashat.

Magas CPU- vagy memóriahasználat

Ha az App Service-csomag a rendelkezésre álló PROCESSZOR vagy memória több mint 90%-át használja, a mögöttes virtuális gépnek problémát okozhat az üzembe helyezés feldolgozása. Ha ez történik, ideiglenesen skálázza fel a példányok számát az üzembe helyezés végrehajtásához. Miután az üzembe helyezés befejeződött, visszaadhatja a példányok számát az előző értékére.

Az ajánlott eljárásokkal kapcsolatos további információkért látogasson el az App Service Diagnostics webhelyre, ahol megismerheti az erőforrásra vonatkozó ajánlott eljárásokat.

  • Navigáljon a webalkalmazáshoz az Azure Portalon.
  • Válassza a Diagnosztizálás és a problémák megoldása lehetőséget a bal oldali navigációs sávon, amely megnyitja az App Service Diagnosticst.
  • Válassza az Ajánlott eljárások kezdőlap csempét.
  • Válassza az ajánlott eljárások a rendelkezésre álláshoz és teljesítményhez vagy az optimális konfiguráció ajánlott eljárásait az alkalmazás aktuális állapotának megtekintéséhez az ajánlott eljárások tekintetében.

Ezen a hivatkozáson közvetlenül megnyithatja az App Service Diagnosticst az erőforráshoz: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.

További hasznos források

Környezeti változók és alkalmazásbeállítások referenciája