Share via


A DevOpsból való üzembe helyezés egybérlős Azure Logic Apps esetén

A következőkre vonatkozik: Azure Logic Apps (Standard)

Az elosztott és natív felhőalkalmazások felé irányuló tendencia miatt a szervezetek több környezetben több elosztott összetevővel foglalkoznak. Az irányítás és a konzisztencia fenntartása érdekében a DevOps-eszközök és -folyamatok használatával automatizálhatja a környezeteket, és több összetevőt helyezhet üzembe gyorsabban és magabiztosabban.

Ez a cikk bemutatja és áttekintést nyújt az egybérlős Azure Logic Apps jelenlegi folyamatos integrációs és folyamatos üzembe helyezési (CI/CD) felületéről.

Egybérlős és több-bérlős

A több-bérlős Azure Logic Appsben az erőforrás-üzembe helyezés az Azure Resource Manager-sablonokon (ARM-sablonokon) alapul, amelyek kombinálják és kezelik a logikai alkalmazások és az infrastruktúra erőforrás-kiépítését. Az egybérlős Azure Logic Appsben az üzembe helyezés egyszerűbbé válik, mivel elkülönítheti az erőforrások kiépítését az alkalmazások és az infrastruktúra között.

Amikor logikai alkalmazásokat hoz létre a Logic App (Standard) erőforrástípussal, a munkafolyamatokat az újratervezett egybérlős Azure Logic Apps-futtatókörnyezet működteti. Ez a futtatókörnyezet a Azure Functions bővíthetőségi modell bővíthetőségét használja, és a Azure Functions futtatókörnyezet bővítményeként üzemel. Ez a kialakítás hordozhatóságot, rugalmasságot és nagyobb teljesítményt biztosít a logikai alkalmazások számára, valamint a Azure Functions platformtól és Azure App Service ökoszisztémától örökölt egyéb képességeket és előnyöket.

Az újratervezett tárolóalapú futtatókörnyezetet és munkafolyamatokat például a logikai alkalmazás részeként csomagolhatja össze. Általános lépéseket vagy feladatokat használhat, amelyek a logikai alkalmazás erőforrásait kész üzembe helyezésre kész összetevőkbe állítják össze és tömörítik. Az alkalmazások üzembe helyezéséhez másolja az összetevőket a gazdakörnyezetbe, majd indítsa el az alkalmazásokat a munkafolyamatok futtatásához. Vagy integrálhatja az összetevőket az üzembehelyezési folyamatokba a már ismert és használt eszközökkel és folyamatokkal. Ha például a forgatókönyv tárolókat igényel, tárolóba helyezheti a logikai alkalmazásokat, és integrálhatja őket a meglévő folyamatokba.

Az infrastruktúra-erőforrások, például a virtuális hálózatok és a kapcsolat beállításához és üzembe helyezéséhez továbbra is használhat ARM-sablonokat, és külön kiépítheti ezeket az erőforrásokat az e célokra használt egyéb folyamatokkal és folyamatokkal együtt.

A standard buildelési és üzembehelyezési lehetőségek használatával az infrastruktúra üzembe helyezésétől elkülönítve összpontosíthat az alkalmazásfejlesztésre. Ennek eredményeképpen egy általánosabb projektmodellt kap, ahol számos hasonló vagy ugyanazokat az üzembehelyezési beállításokat alkalmazhatja, amelyeket az általános alkalmazásokhoz használ. Emellett konzisztensebb felhasználói élményt nyújt az üzembehelyezési folyamatok alkalmazásprojektek köré történő kiépítéséhez, valamint a szükséges tesztek és ellenőrzések futtatásához az éles környezetben való közzététel előtt. Függetlenül attól, hogy melyik technológiai vermet használja, a saját választott eszközeivel helyezhet üzembe logikai alkalmazásokat.

A DevOps üzembehelyezési képességei

Az egybérlős Azure Logic Apps számos képességet és előnyt örököl a Azure Functions platformtól és Azure App Service ökoszisztémától. Ezek a frissítések egy teljesen új üzembehelyezési modellt és a DevOps használatának további módjait tartalmazzák a logikai alkalmazás munkafolyamataihoz.

Helyi fejlesztés és tesztelés

Ha a Visual Studio Code-ot az Azure Logic Apps (Standard) bővítménnyel használja, helyileg fejleszthet, hozhat létre és futtathat egybérlős alapú logikaialkalmazás-munkafolyamatokat a fejlesztői környezetben anélkül, hogy üzembe kellene helyeznie az Azure-ban. Ha a forgatókönyv tárolókat igényel, létrehozhat és üzembe helyezhet az Azure Arc-kompatibilis Logic Apps használatával.

Ez a képesség jelentős fejlesztés, és jelentős előnyt jelent a több-bérlős modellhez képest, ami megköveteli, hogy egy meglévő és futó Azure-erőforrással dolgozzon.

Különálló aggodalmak

Az egybérlős modell lehetővé teszi a problémák elkülönítését az alkalmazás és a mögöttes infrastruktúra között. Az alkalmazást például külön fejlesztheti, hozhatja létre, tömörítheti és helyezheti üzembe nem módosítható összetevőként különböző környezetekben. A logikai alkalmazás munkafolyamatai általában az alapul szolgáló infrastruktúránál gyakrabban frissülő "alkalmazáskóddal" rendelkeznek. A rétegek elkülönítésével jobban összpontosíthat a logikai alkalmazás munkafolyamatának kiépítésére, és kevesebbet költhet arra, hogy a szükséges erőforrásokat több környezetben is üzembe helyezze.

Az alkalmazások és az infrastruktúra különálló üzembehelyezési folyamatait bemutató fogalmi diagram.

Logikai alkalmazás erőforrás-struktúrája

A több-bérlős Azure Logic Apps-modellben a Használat logikai alkalmazás erőforrás-struktúrája csak egyetlen munkafolyamatot tartalmazhat. Ennek az egy-az-egyhez kapcsolatnak köszönhetően a logikai alkalmazás és a munkafolyamat is gyakran szinonimaként szerepel és hivatkozik rá. Az egybérlős Azure Logic Apps-modellben azonban a Standard logikai alkalmazás erőforrásstruktúrája több munkafolyamatot is tartalmazhat. Ez az egy-a-többhöz kapcsolat azt jelenti, hogy ugyanabban a logikai alkalmazásban a munkafolyamatok megoszthatnak és újra felhasználhatnak más erőforrásokat. Az ugyanabban a logikai alkalmazásban és bérlőben lévő munkafolyamatok is jobb teljesítményt nyújtanak ennek a megosztott bérlőnek és egymáshoz való közelségnek köszönhetően. Ez az erőforrás-struktúra ugyanúgy néz ki és működik, mint Azure Functions, ahol egy függvényalkalmazás számos függvényt üzemeltethet.

A munkafolyamatok, a teljesítmény és a skálázás logikai alkalmazásban való rendszerezésével kapcsolatos további információkért és ajánlott eljárásokért tekintse át az egybérlős Azure Logic Appsre általában alkalmazható Azure Functions vonatkozó hasonló útmutatót.

Logikai alkalmazás projektstruktúra

A Visual Studio Code-ban a logikai alkalmazás projektje az alábbi típusok valamelyikével rendelkezik:

  • Bővítménycsomag-alapú (Node.js), amely az alapértelmezett típus
  • NuGet-csomagalapú (.NET), amelyet az alapértelmezett típusból konvertálhat

Ezek alapján a projekt némileg eltérő mappákat és fájlokat tartalmaz. A NuGet-alapú projektek egy .bin mappát tartalmaznak, amely csomagokat és egyéb kódtárfájlokat tartalmaz. A csomagalapú projektek nem tartalmazzák a .bin mappát és más fájlokat. Egyes forgatókönyvek esetében egy NuGet-alapú projektre van szükség az alkalmazás futtatásához, például akkor, ha egyéni beépített műveleteket szeretne fejleszteni és futtatni. A projekt NuGet használatára való konvertálásával kapcsolatos további információkért lásd: Beépített összekötő-létrehozás engedélyezése.

Az alapértelmezett csomagalapú projekt esetében a projekt egy olyan mappával és fájlstruktúrával rendelkezik, amely hasonló az alábbi példához:

MyBundleBasedLogicAppProjectName
| .vscode
| Artifacts
  || Maps 
     ||| MapName1
     ||| ...
  || Schemas
     ||| SchemaName1
     ||| ...
| WorkflowName1
  || workflow.json
  || ...
| WorkflowName2
  || workflow.json
  || ...
| workflow-designtime
| .funcignore
| connections.json
| host.json
| local.settings.json

A projekt gyökérszintjén a következő fájlokat és mappákat találja meg más elemekkel:

Name Mappa vagy fájl Description
.vscode Mappa Visual Studio Code-tal kapcsolatos beállításfájlokat tartalmaz, például extensions.json, launch.json, settings.json és tasks.json fájlokat.
Artifacts Mappa Olyan integrációs fiókösszetevőket tartalmaz, amelyeket a vállalati (B2B) forgatókönyveket támogató munkafolyamatokban definiál és használ. A példastruktúra például megfeleltetéseket és sémákat tartalmaz az XML-átalakítási és érvényesítési műveletekhez.
<WorkflowName> Mappa Minden munkafolyamathoz a <WorkflowName> mappa tartalmaz egy workflow.json fájlt, amely tartalmazza a munkafolyamat mögöttes JSON-definícióját.
munkafolyamat-tervezési idő Mappa Fejlesztési környezethez kapcsolódó beállításfájlokat tartalmaz.
.funcignore Fájl A telepített Azure Functions Core-eszközökkel kapcsolatos információkat tartalmaz.
connections.json Fájl A munkafolyamatok által használt felügyelt kapcsolatok és Azure-függvények metaadatait, végpontjait és kulcsait tartalmazza.

Fontos: Ha különböző kapcsolatokat és függvényeket szeretne használni az egyes környezetekhez, győződjön meg arról, hogy paraméterezi ezt a connections.json fájlt, és frissíti a végpontokat.
host.json Fájl Futásidejű konfigurációs beállításokat és értékeket tartalmaz, például az egybérlős Azure Logic Apps-platform, a logikai alkalmazások, a munkafolyamatok, az eseményindítók és a műveletek alapértelmezett korlátait. A logikaialkalmazás-projekt gyökérszintjén a host.json metaadatfájl tartalmazza azokat a konfigurációs beállításokat és alapértelmezett értékeket, amelyeket ugyanazon logikai alkalmazás összes munkafolyamata használ futás közben, akár helyileg, akár az Azure-ban.

Megjegyzés: A logikai alkalmazás létrehozásakor a Visual Studio Code létrehoz egy backup host.snapshot.*.json fájlt a tárolóban. Ha törli a logikai alkalmazást, a biztonsági mentési fájl nem törlődik. Ha egy másik logikai alkalmazást hoz létre ugyanazzal a névvel, egy másik pillanatképfájl jön létre. Ugyanahhoz a logikai alkalmazáshoz legfeljebb 10 pillanatképet készíthet. Ha túllépi ezt a korlátot, a következő hibaüzenet jelenik meg:

Microsoft.Azure.WebJobs.Script.WebHost: Repository has more than 10 non-decryptable secrets backups (host))

A hiba elhárításához törölje a további pillanatképfájlokat a tárolóból.
local.settings.json Fájl Alkalmazásbeállításokat, kapcsolati sztringeket és egyéb beállításokat tartalmaz, amelyeket a munkafolyamatok a helyi futtatás során használnak. Más szóval ezek a beállítások és értékek csak akkor érvényesek, ha a projekteket a helyi fejlesztési környezetben futtatja. Az Azure-ba történő üzembe helyezés során a rendszer figyelmen kívül hagyja a fájlt és a beállításokat, és nem tartalmazza az üzembe helyezést.

Ez a fájl a beállításokat és értékeket helyi környezeti változókként tárolja, amelyeket a helyi fejlesztési eszközök használnak értékként appSettings . Ezek a környezeti változók futásidőben és üzembe helyezéskor is meghívhatók és hivatkozhatók ezekre az alkalmazásbeállítások és paraméterek használatával.

Fontos: A local.settings.json fájl tartalmazhat titkos kódokat, ezért győződjön meg arról, hogy ezt a fájlt is kizárja a projektforrás-vezérlőből.

Tároló üzembe helyezése

Az egybérlős Azure Logic Apps támogatja a tárolókba történő üzembe helyezést, ami azt jelenti, hogy tárolóba helyezheti a logikai alkalmazás munkafolyamatait, és ott futtathatja őket, ahol a tárolók futtathatók. Az alkalmazás tárolóba helyezése után az üzembe helyezés többnyire ugyanúgy működik, mint bármely más üzembe helyezett és felügyelt tároló.

Az Azure DevOpsot tartalmazó példákért tekintse át a CI/CD for Containers című témakört.

Alkalmazásbeállítások és paraméterek

A több-bérlős Azure Logic Appsben az ARM-sablonok kihívást jelentenek, ha környezeti változókat kell fenntartania a logikai alkalmazásokhoz különböző fejlesztői, tesztelési és éles környezetekben. Az ARM-sablonban lévő összes elem az üzembe helyezéskor van definiálva. Ha csak egyetlen változót kell módosítania, mindent újra üzembe kell helyeznie.

Az egybérlős Azure Logic Appsben futásidőben meghívhatja és hivatkozhat a környezeti változókra az alkalmazásbeállítások és paraméterek használatával, így nem kell újra üzembe helyeznie a elemet.

Felügyelt összekötők és beépített műveletek

Az Azure Logic Apps ökoszisztémája több száz Microsoft által felügyelt összekötőt és beépített műveletet biztosít egy folyamatosan bővülő gyűjtemény részeként, amelyet egybérlős Azure Logic Appsben használhat. Az összekötők és a beépített műveletek Microsoft által történő kezelése többnyire ugyanaz marad az egybérlős Azure Logic Appsben.

A legjelentősebb fejlesztés, hogy az egybérlős szolgáltatás népszerűbb felügyelt összekötőket is elérhetővé tesz beépített műveletekként. Beépített műveleteket használhat például Azure Service Bus, Azure Event Hubs, SQL és egyéb műveletekhez. Eközben a felügyelt összekötők verziói továbbra is elérhetők, és továbbra is működnek.

A beépített műveletek használatával létrehozott kapcsolatokat beépített kapcsolatoknak vagy szolgáltatói kapcsolatoknak nevezzük. A beépített műveletek és kapcsolataik helyileg futnak ugyanabban a folyamatban, amely a munkafolyamatokat futtatja. Mindkettő az újratervezett Logic Apps-futtatókörnyezetben üzemel. Ezzel szemben a felügyelt kapcsolatokat vagy API-kapcsolatokat a rendszer külön hozza létre és futtatja Azure-erőforrásokként, amelyeket ARM-sablonokkal telepít. Ennek eredményeképpen a beépített műveletek és kapcsolataik jobb teljesítményt nyújtanak a munkafolyamatok közelsége miatt. Ez a kialakítás az üzembehelyezési folyamatokkal is jól működik, mivel a szolgáltatói kapcsolatok ugyanabba a buildösszetevőbe vannak csomagolva.

A Visual Studio Code-ban, amikor a tervezőt használja a munkafolyamatok fejlesztésére vagy módosítására, a Logic Apps motor automatikusan létrehozza a szükséges kapcsolati metaadatokat a projekt connections.json fájljában. Az alábbi szakaszok a munkafolyamatokban létrehozható három kapcsolattípust ismertetik. Minden kapcsolattípus eltérő JSON-struktúrával rendelkezik, ami azért fontos, mert a végpontok megváltoznak a környezetek közötti váltáskor.

Szolgáltatói kapcsolatok

Ha beépített műveletet használ egy szolgáltatáshoz, például Azure Service Bus vagy Azure Event Hubs az egybérlős Azure Logic Appsben, létre kell hoznia egy szolgáltatói kapcsolatot, amely ugyanabban a folyamatban fut, mint a munkafolyamat. Ez a kapcsolati infrastruktúra a logikai alkalmazás erőforrásának részeként van üzemeltetve és felügyelve, és az alkalmazásbeállítások a munkafolyamatok által használt szolgáltatói alapú beépített műveletek kapcsolati sztringeit tárolják.

A logikaialkalmazás-projektben minden munkafolyamat rendelkezik egy workflow.json fájllal, amely tartalmazza a munkafolyamat mögöttes JSON-definícióját. Ez a munkafolyamat-definíció ezután hivatkozik a szükséges kapcsolati sztringekre a projekt connections.json fájljában.

Az alábbi példa bemutatja, hogyan jelenik meg egy beépített Service Bus-művelet szolgáltatói kapcsolata a projekt connections.json fájljában:

"serviceProviderConnections": {
   "{service-bus-connection-name}": {
      "parameterValues": {
         "connectionString": "@appsetting('servicebus_connectionString')"
      },
      "serviceProvider": {
         "id": "/serviceProviders/serviceBus"
      },
      "displayName": "{service-bus-connection-name}"
   },
   <...>
}

Felügyelt kapcsolatok

Amikor először használ felügyelt összekötőt a munkafolyamatban, a rendszer felkéri, hogy hozzon létre egy felügyelt API-kapcsolatot a célszolgáltatáshoz vagy rendszerhez, és hitelesítse az identitását. Ezeket az összekötőket az Azure megosztott összekötői ökoszisztémája kezeli. Az API-kapcsolatok léteznek, és különálló erőforrásokként futnak az Azure-ban.

A Visual Studio Code-ban, miközben továbbra is a tervezővel hozza létre és fejleszti a munkafolyamatot, a Logic Apps motor automatikusan létrehozza a munkafolyamat felügyelt összekötőihez szükséges erőforrásokat az Azure-ban. A motor automatikusan hozzáadja ezeket a kapcsolati erőforrásokat a logikai alkalmazáshoz tervezett Azure-erőforráscsoporthoz.

Az alábbi példa bemutatja, hogyan jelenik meg a felügyelt Service Bus-összekötő API-kapcsolata a projekt connections.json fájljában:

"managedApiConnections": {
   "{service-bus-connection-name}": { 
      "api": {
         "id": "/subscriptions/{subscription-ID}/providers/Microsoft.Web/locations/{region}/managedApis/servicebus"
      },
      "connection": { 
         "id": "/subscriptions/{subscription-ID}/resourcegroups/{resource-group-name}/providers/Microsoft.Web/connections/servicebus"
      }, 
      "connectionRuntimeUrl": "{connection-runtime-URL}",
      "authentication": { 
         "type": "Raw",
         "scheme": "Key",
         "parameter": "@appsetting('servicebus_1-connectionKey')"
      },
   },
   <...>
}

Azure Functions kapcsolatok

A Azure Functions létrehozott és üzemeltetett függvények meghívásához használja a beépített Azure Functions műveletet. A Azure Functions hívások kapcsolati metaadatai eltérnek a többi beépített kapcsolattól. Ez a metaadatok a logikaialkalmazás-projekt connections.json fájljában vannak tárolva, de máshogy néz ki:

"functionConnections": {
   "{function-operation-name}": {
      "function": { 
         "id": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{function-app-name}/functions/{function-name}"
      },
      "triggerUrl": "{function-url}",
      "authentication": {
        "type": "QueryString",
         "name": "Code",
         "value": "@appsetting('azureFunctionOperation_functionAppKey')"
      }, 
      "displayName": "{functions-connection-display-name}"
   },
   <...>
}

Hitelesítés

Az egybérlős Azure Logic Appsben a logikaialkalmazás-munkafolyamatok üzemeltetési modellje egyetlen bérlő, ahol a számítási feladatok nagyobb elkülönítést élveznek, mint a több-bérlős modellben. Emellett az egybérlős Azure Logic Apps-futtatókörnyezet hordozható, ami azt jelenti, hogy a munkafolyamatokat más környezetekben is futtathatja, például helyileg a Visual Studio Code-ban. Ehhez a kialakításhoz azonban módot kell biztosítani a logikai alkalmazások identitásának hitelesítésére, hogy hozzáférhessenek a felügyelt összekötő-ökoszisztémához az Azure-ban. Az alkalmazásoknak a megfelelő engedélyekre is szükségük van a műveletek felügyelt kapcsolatok használatakor való futtatásához.

Alapértelmezés szerint minden egybérlős alapú logikai alkalmazás automatikusan engedélyezve van a rendszer által hozzárendelt felügyelt identitással. Ez az identitás eltér a kapcsolat létrehozásához használt hitelesítési hitelesítő adatoktól vagy kapcsolati sztring. Futtatókörnyezetben a logikai alkalmazás ezt az identitást használja a kapcsolatok Azure-beli hozzáférési szabályzatokon keresztüli hitelesítéséhez. Ha letiltja ezt az identitást, a kapcsolatok futásidőben nem működnek.

Az alábbi szakaszok további információkat nyújtanak a felügyelt kapcsolatok hitelesítésére használható hitelesítési típusokról a logikai alkalmazás futási helye alapján. Minden felügyelt kapcsolat esetében a logikaialkalmazás-projekt connections.json fájlja rendelkezik egy authentication objektummal, amely megadja azt a hitelesítési típust, amellyel a logikai alkalmazás hitelesítheti a felügyelt kapcsolatot.

Felügyelt identitás

Az Azure-ban üzemeltetett és futtatott logikai alkalmazások esetében a felügyelt identitás az alapértelmezett és ajánlott hitelesítési típus, amely az Azure-ban üzemeltetett és futtatott felügyelt kapcsolatok hitelesítéséhez használható. A logikaialkalmazás-projekt connections.json fájljában a felügyelt kapcsolathoz tartozik egy authentication objektum, amely hitelesítési típusként van megszabva ManagedServiceIdentity :

"authentication": {
   "type": "ManagedServiceIdentity"
}

Nyers

A Helyi fejlesztési környezetben a Visual Studio Code használatával futó logikai alkalmazások esetében a rendszer nyers hitelesítési kulcsokat használ az Azure-ban üzemeltetett és futtatott felügyelt kapcsolatok hitelesítéséhez. Ezek a kulcsok csak fejlesztési célokra vannak kialakítva, nem éles használatra, és 7 napos lejárati idővel rendelkeznek. A logikaialkalmazás-projekt connections.json fájljában a felügyelt kapcsolat egy objektummal rendelkezik authentication , amely a következő hitelesítési információkat adja meg:

"authentication": {
   "type": "Raw", 
   "scheme": "Key", 
   "parameter": "@appsetting('connectionKey')"
 }

Következő lépések