Oktatóanyag: Saját üzemeltetésű CI/CD-futók és -ügynökök üzembe helyezése az Azure Container Apps-feladatokkal
A GitHub Actions és az Azure Pipelines lehetővé teszi CI-/CD-munkafolyamatok futtatását saját üzemeltetésű futókkal és ügynökökkel. Önkiszolgáló futókat és ügynököket futtathat eseményvezérelt Azure Container Apps-feladatok használatával.
A saját üzemeltetésű futók akkor hasznosak, ha olyan munkafolyamatokat kell futtatnia, amelyek hozzáférést igényelnek a helyi erőforrásokhoz vagy eszközökhöz, amelyek nem érhetők el a felhőalapú futók számára. Például egy Container Apps-feladat önkiszolgáló futója lehetővé teszi a munkafolyamat számára, hogy hozzáférjen a feladat virtuális hálózatában lévő erőforrásokhoz, amelyek nem érhetők el a felhőalapú futók számára.
A saját üzemeltetésű futók eseményvezérelt feladatokként való futtatásával kihasználhatja az Azure Container Apps kiszolgáló nélküli jellegét. A feladatok automatikusan futnak, amikor egy munkafolyamat aktiválódik, és a feladat befejezésekor kilépnek.
Csak a feladat futási idejéért kell fizetnie.
Ebben az oktatóanyagban megtudhatja, hogyan futtathat GitHub Actions-futókat eseményvezérelt Container Apps-feladatként.
- Container Apps-környezet létrehozása a saját üzemeltetésű futó üzembe helyezéséhez
- GitHub-adattár létrehozása saját üzemeltetésű futót használó munkafolyamat futtatásához
- GitHub Actions-futót futtató tárolórendszerkép létrehozása
- A futó üzembe helyezése feladatként a Container Apps-környezetben
- Hozzon létre egy munkafolyamatot, amely a saját üzemeltetésű futót használja, és ellenőrizze, hogy fut-e
Fontos
A saját üzemeltetésű futók csak privát adattárakhoz ajánlottak. Ha nyilvános adattárakkal használja őket, veszélyes kódot futtathat a saját üzemeltetésű futóján. További információkért lásd a saját üzemeltetésű futók biztonságát.
Ebben az oktatóanyagban megtudhatja, hogyan futtathat Azure Pipelines-ügynököket eseményvezérelt Container Apps-feladatként.
- Container Apps-környezet létrehozása a saját üzemeltetésű ügynök üzembe helyezéséhez
- Azure DevOps-szervezet és -projekt létrehozása
- Azure Pipelines-ügynököt futtató tárolórendszerkép létrehozása
- Helyőrző ügynök létrehozása manuális feladat használatával a Container Apps-környezetben
- Az ügynök üzembe helyezése feladatként a Container Apps-környezetben
- Hozzon létre egy folyamatot, amely a saját üzemeltetésű ügynököt használja, és ellenőrizze, hogy fut-e
Fontos
A saját üzemeltetésű ügynökök csak magánprojektekhez ajánlottak. Ha nyilvános projektekkel használja őket, veszélyes kódokat futtathat a saját üzemeltetésű ügynökén. További információ: Saját üzemeltetésű ügynök biztonsága.
Feljegyzés
A tárolóalkalmazások és -feladatok nem támogatják a Docker tárolókban való futtatását. A Docker-parancsokat használó munkafolyamatok minden lépése sikertelen lesz, ha egy saját üzemeltetésű futón vagy ügynökön fut egy Container Apps-feladatban.
Előfeltételek
Azure-fiók: Ha nem rendelkezik ilyen fiókkal, ingyenesen létrehozhat egyet.
Azure CLI: Az Azure CLI telepítése.
- Azure DevOps-szervezet: Ha nem rendelkezik aktív előfizetéssel rendelkező DevOps-szervezettel, ingyenesen létrehozhat egyet.
A korlátozások listájához tekintse meg a feladatokra vonatkozó korlátozásokat .
Beállítás
Ha a parancssori felületről szeretne bejelentkezni az Azure-ba, futtassa a következő parancsot, és kövesse az utasításokat a hitelesítési folyamat befejezéséhez.
az login
A parancssori felület legújabb verziójának futtatásához futtassa a frissítési parancsot.
az upgrade
Ezután telepítse vagy frissítse az Azure Container Apps bővítményt a parancssori felülethez.
Ha hibaüzenetet kap a hiányzó paraméterekről, amikor parancsokat futtat az containerapp
az Azure CLI-ben vagy parancsmagokat a Az.App
PowerShell-modulból, győződjön meg arról, hogy telepítve van az Azure Container Apps bővítmény legújabb verziója.
az extension add --name containerapp --upgrade
Feljegyzés
2024 májusától kezdődően az Azure CLI-bővítmények alapértelmezés szerint nem engedélyezik az előzetes verziójú funkciókat. A Container Apps előzetes verziójú funkcióinak eléréséhez telepítse a Container Apps bővítményt a következővel --allow-preview true
: .
az extension add --name containerapp --upgrade --allow-preview true
Az aktuális bővítmény vagy modul telepítése után regisztrálja a névtereket és Microsoft.OperationalInsights
a Microsoft.App
névtereket.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Környezeti változók létrehozása
Most, hogy az Azure CLI beállítása befejeződött, meghatározhatja a jelen cikkben használt környezeti változókat.
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="github-actions-runner-job"
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="azure-pipelines-agent-job"
PLACEHOLDER_JOB_NAME="placeholder-agent-job"
Container Apps-környezet létrehozása
Az Azure Container Apps-környezet biztonságos határként működik a tárolóalkalmazások és -feladatok körül, így megoszthatják ugyanazt a hálózatot, és kommunikálhatnak egymással.
Feljegyzés
Egy meglévő virtuális hálózattal integrált Container Apps-környezet létrehozásához lásd : Virtuális hálózat biztosítása Azure Container Apps-környezetnek.
Az erőforráscsoport létrehozásához használja az alábbi parancsot.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"
Hozza létre a Container Apps-környezetet az alábbi paranccsal.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
GitHub-adattár létrehozása munkafolyamat futtatásához
Munkafolyamat végrehajtásához létre kell hoznia egy GitHub-adattárat, amely tartalmazza a munkafolyamat definícióját.
Hozzon létre egy új adattárat a következő értékek megadásával.
Beállítás Érték Tulajdonos Válassza ki a GitHub-felhasználónevét. Adattár neve Adja meg az adattár nevét. Láthatóság Válassza a Privát lehetőséget. Az adattár inicializálása a Válassza a README-fájl hozzáadása lehetőséget. Hagyja meg a többi értéket alapértelmezett kijelölésként.
Válassza a Create repository (Adattár létrehozása) gombot.
Az új adattárban válassza a Műveletek lehetőséget.
Keresse meg az egyszerű munkafolyamat-sablont, és válassza a Konfigurálás lehetőséget.
Válassza a Módosítások véglegesítése lehetőséget a munkafolyamat adattárhoz való hozzáadásához.
A munkafolyamat a ubuntu-latest
GitHub által üzemeltetett futón fut, és egy üzenetet nyomtat ki a konzolra. Később lecseréli a GitHub által üzemeltetett futót egy saját üzemeltetésű futóra.
Személyes GitHub-hozzáférési jogkivonat lekérése
Saját üzemeltetésű futó futtatásához létre kell hoznia egy személyes hozzáférési jogkivonatot (PAT) a GitHubon. Minden alkalommal, amikor egy futó elindul, a PAT használatával létrehoz egy jogkivonatot, amely regisztrálja a futót a GitHubon. A PAT-t a GitHub Actions futóméretezési szabálya is használja az adattár munkafolyamat-üzenetsorának figyeléséhez és a futók szükség szerinti elindításához.
Feljegyzés
A személyes hozzáférési jogkivonatok (PAT-k) lejárati dátummal rendelkeznek. A zavartalan szolgáltatás fenntartása érdekében rendszeresen forgassa el a jogkivonatokat, hogy azok érvényesek maradjanak (nem járnak le).
A GitHubon válassza ki a profilképét a jobb felső sarokban, és válassza a Beállítások lehetőséget.
Válassza a Fejlesztői beállítások lehetőséget.
A Személyes hozzáférési jogkivonatok területen válassza a Részletes jogkivonatok lehetőséget.
Válassza az Új jogkivonat létrehozása lehetőséget.
Az Új, részletes személyes hozzáférési jogkivonat képernyőn adja meg a következő értékeket.
Beállítás Érték Jogkivonat neve Adja meg a jogkivonat nevét. Lejárat Válassza ki a 30 napot. Adattár-hozzáférés Válassza a Csak az adattárak lehetőséget, és válassza ki a létrehozott adattárat. Adja meg a következő értékeket az adattárengedélyekhez.
Beállítás Érték Műveletek Válassza az Írásvédett lehetőséget. Felügyelet Válassza az Olvasás és írás lehetőséget. Metaadatok Válassza az Írásvédett lehetőséget. Válassza a Jogkivonat létrehozása lehetőséget.
Másolja ki a jogkivonat értékét.
Definiálja a futó és a méretezési szabály későbbi konfigurálásához használt változókat.
GITHUB_PAT="<GITHUB_PAT>" REPO_OWNER="<REPO_OWNER>" REPO_NAME="<REPO_NAME>"
Cserélje le a helyőrzőket a következő értékekre:
Helyőrző Érték <GITHUB_PAT>
A létrehozott GitHub PAT. <REPO_OWNER>
A korábban létrehozott adattár tulajdonosa. Ez az érték általában a GitHub-felhasználónév. <REPO_NAME>
A korábban létrehozott adattár neve. Ez az érték ugyanaz a név, amelyet az Adattár név mezőjében megadott.
A GitHub Actions futótároló lemezképének létrehozása
Saját üzemeltetésű futó létrehozásához létre kell hoznia egy tárolórendszerképet, amely végrehajtja a futót. Ebben a szakaszban létrehozza a tárolórendszerképet, és leküldi egy tárolóregisztrációs adatbázisba.
Feljegyzés
Az oktatóanyagban készült rendszerkép egy alapszintű, saját üzemeltetésű futót tartalmaz, amely alkalmas a Container Apps-feladatként való futtatásra. Testre szabhatja úgy, hogy további eszközöket vagy függőségeket is tartalmazzon, amelyeket a munkafolyamatok igényelnek.
Adjon nevet a tárolórendszerképnek és a beállításjegyzéknek.
CONTAINER_IMAGE_NAME="github-actions-runner:1.0" CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
Cserélje le
<CONTAINER_REGISTRY_NAME>
a tárolóregisztrációs adatbázis létrehozásához használt egyedi névre. A tárolóregisztrációs adatbázis nevének egyedinek kell lennie az Azure-ban , és csak számokból és kisbetűkből álló 5–50 karakter hosszúságúnak kell lennie.Hozzon létre egy tárolóregisztrációs adatbázist.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Basic
A tárolóregisztrációs adatbázisnak engedélyeznie kell az Azure Resource Manager (ARM) célközönség-jogkivonatait a hitelesítéshez, hogy felügyelt identitással lekérhesse a rendszerképeket.
Az alábbi paranccsal ellenőrizze, hogy az ARM-jogkivonatok hozzáférnek-e az Azure Container Registryhez (ACR).
az acr config authentication-as-arm show --registry "$CONTAINER_REGISTRY_NAME"
Ha az ARM-jogkivonatok engedélyezettek, a parancs a következőket adja eredményül.
{ "status": "enabled" }
Ha igen
disabled
, engedélyezze azstatus
ARM-jogkivonatokat az alábbi paranccsal.az acr config authentication-as-arm update --registry "$CONTAINER_REGISTRY_NAME" --status enabled
A futó lemezkép létrehozásához használt Dockerfile elérhető a GitHubon. Futtassa a következő parancsot az adattár klónozásához és a tárolólemezkép felhőben való létrehozásához a
az acr build
parancs használatával.az acr build \ --registry "$CONTAINER_REGISTRY_NAME" \ --image "$CONTAINER_IMAGE_NAME" \ --file "Dockerfile.github" \ "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
A rendszerkép már elérhető a tárolóregisztrációs adatbázisban.
Felhasználó által hozzárendelt felügyelt identitás létrehozása
A rendszergazdai hitelesítő adatok használatának elkerülése érdekében kérje le a rendszerképeket a Microsoft Azure Container Registry privát adattáraiból felügyelt identitások használatával a hitelesítéshez. Ha lehetséges, a rendszerképek lekéréséhez használjon felhasználó által hozzárendelt felügyelt identitást.
Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást. A következő parancsok futtatása előtt válasszon nevet a felügyelt identitásnak, és cserélje le a
\<PLACEHOLDER\>
nevet.IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP
Kérje le az identitás erőforrás-azonosítóját.
IDENTITY_ID=$(az identity show \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Saját üzemeltetésű futó üzembe helyezése feladatként
Most már létrehozhat egy feladatot, amely a tárolórendszerképet használja. Ebben a szakaszban létrehoz egy feladatot, amely végrehajtja a saját üzemeltetésű futót, és hitelesíti a GitHubot a korábban létrehozott PAT használatával. A feladat a skálázási szabályt használja feladatvégrehajtások github-runner
létrehozásához a függőben lévő munkafolyamat-futtatások száma alapján.
Hozzon létre egy feladatot a Container Apps-környezetben.
az containerapp job create \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --environment "$ENVIRONMENT" \ --trigger-type Event \ --replica-timeout 1800 \ --replica-retry-limit 0 \ --replica-completion-count 1 \ --parallelism 1 \ --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \ --min-executions 0 \ --max-executions 10 \ --polling-interval 30 \ --scale-rule-name "github-runner" \ --scale-rule-type "github-runner" \ --scale-rule-metadata "githubAPIURL=https://api.github.com" "owner=$REPO_OWNER" "runnerScope=repo" "repos=$REPO_NAME" "targetWorkflowQueueLength=1" \ --scale-rule-auth "personalAccessToken=personal-access-token" \ --cpu "2.0" \ --memory "4Gi" \ --secrets "personal-access-token=$GITHUB_PAT" \ --env-vars "GITHUB_PAT=secretref:personal-access-token" "GH_URL=https://github.com/$REPO_OWNER/$REPO_NAME" "REGISTRATION_TOKEN_API_URL=https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runners/registration-token" \ --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io" \ --mi-user-assigned "$IDENTITY_ID" \ --registry-identity "$IDENTITY_ID"
Az alábbi táblázat a parancsban használt kulcsparamétereket ismerteti.
Paraméter Leírás --replica-timeout
A replika végrehajtásának maximális időtartama. --replica-retry-limit
A sikertelen replikák újrapróbálkozásának száma. --replica-completion-count
A feladat végrehajtása előtt sikeresen befejezendő replikák száma. --parallelism
Feladatvégrehajtásonként indítandó replikák száma. --min-executions
A lekérdezési időközönként futtatandó feladatvégrehajtások minimális száma. --max-executions
A lekérdezési időközönként futtatandó feladatvégrehajtások maximális száma. --polling-interval
A skálázási szabály kiértékelésének időköze. --scale-rule-name
A méretezési szabály neve. --scale-rule-type
A használni kívánt méretezési szabály típusa. A GitHub futóméretezőjéről a KEDA dokumentációjában olvashat bővebben. --scale-rule-metadata
A méretezési szabály metaadatai. Ha GitHub Enterprise-t használ, frissítse githubAPIURL
az API URL-címét.--scale-rule-auth
A méretezési szabály hitelesítése. --secrets
A feladathoz használandó titkos kódok. --env-vars
A feladathoz használandó környezeti változók. --registry-server
A feladathoz használni kívánt tárolóregisztrációs adatbázis-kiszolgáló. Azure Container Registry esetén a parancs automatikusan konfigurálja a hitelesítést. --mi-user-assigned
A feladathoz rendelendő, felhasználó által hozzárendelt felügyelt identitás erőforrás-azonosítója. --registry-identity
Egy felügyelt identitás erőforrás-azonosítója, amely felhasználónév és jelszó használata helyett a beállításjegyzék-kiszolgálóval hitelesíthető. Ha lehetséges, a rendszer automatikusan létrehoz egy "acrpull" szerepkör-hozzárendelést az identitáshoz. A méretezési szabály konfigurációja határozza meg a figyelendő eseményforrást. A rendszer minden lekérdezési időközön kiértékeli a szabályokat annak meghatározásához, hogy hány feladatvégrehajtást kell aktiválni. További információ: Méretezési szabályok beállítása.
Az eseményvezérelt feladat most a Container Apps környezetben jön létre.
Munkafolyamat futtatása és a feladat ellenőrzése
A feladat úgy van konfigurálva, hogy 30 másodpercenként kiértékelje a méretezési szabályt. Minden értékelés során ellenőrzi azoknak a függő munkafolyamat-futtatásoknak a számát, amelyekhez saját üzemeltetésű futó szükséges, és egy új feladat végrehajtását indítja el a függőben lévő munkafolyamathoz, legfeljebb 10 végrehajtás konfigurálva.
A feladat helyes konfigurálásának ellenőrzéséhez módosítsa a munkafolyamatot egy saját üzemeltetésű futó használatára, és aktiválja a munkafolyamat-futtatásokat. Ezután megtekintheti a feladatvégrehajtási naplókat a munkafolyamat futtatásának megtekintéséhez.
A GitHub-adattárban keresse meg a korábban létrehozott munkafolyamatot. Ez egy YAML-fájl a
.github/workflows
könyvtárban.Válassza a Szerkesztés a helyén lehetőséget.
Frissítse a tulajdonságot a
runs-on
következőreself-hosted
:runs-on: self-hosted
Válassza a Módosítások véglegesítése...lehetőséget.
Válassza a Módosítások véglegesítése lehetőséget.
Lépjen a Műveletek lapra.
Ekkor egy új munkafolyamat lesz várólistára állítva. 30 másodpercen belül megkezdődik a feladat végrehajtása, és a munkafolyamat hamarosan befejeződik.
Várjon, amíg a művelet befejeződik, mielőtt továbblép a következő lépésre.
A feladat végrehajtásának listázása annak ellenőrzéséhez, hogy a feladat végrehajtása sikeresen megtörtént-e.
az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output table \ --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
Azure DevOps-projekt és -adattár létrehozása
Egy folyamat végrehajtásához Azure DevOps-projektre és adattárra van szükség.
Lépjen az Azure DevOpsra , és jelentkezzen be a fiókjába.
Válasszon ki egy meglévő szervezetet, vagy hozzon létre egy újat.
A szervezet áttekintési lapján válassza az Új projekt lehetőséget, és adja meg a következő értékeket.
Beállítás Érték Projektnév Adja meg a projekt nevét. Láthatóság Válassza a Privát lehetőséget. Válassza a Létrehozás lehetőséget.
Az oldalnavigációban válassza az Adattárak lehetőséget.
A főág inicializálása README vagy .gitignore használatával csoportban válassza a README hozzáadása lehetőséget.
Hagyja meg a többi értéket alapértelmezettként, és válassza az Inicializálás lehetőséget.
Új ügynökkészlet létrehozása
Hozzon létre egy új ügynökkészletet a saját üzemeltetésű futó futtatásához.
Az Azure DevOps-projektben bontsa ki a bal oldali navigációs sávot, és válassza a Projektbeállítások lehetőséget.
A Projektbeállítások navigációs menü Folyamatok szakaszában válassza az Ügynökkészletek lehetőséget.
Válassza a Készlet hozzáadása lehetőséget, és adja meg a következő értékeket.
Beállítás Érték Csatolandó készlet Válassza az Új lehetőséget. Készlet típusa Válassza a saját üzemeltetésű lehetőséget. Név Adja meg a tárolóalkalmazásokat. Hozzáférési engedély megadása az összes folyamathoz Jelölje be ezt a jelölőnégyzetet. Válassza a Létrehozás lehetőséget.
Azure DevOps személyes hozzáférési jogkivonat beszerzése
Saját üzemeltetésű futó futtatásához létre kell hoznia egy személyes hozzáférési jogkivonatot (PAT) az Azure DevOpsban. A PAT használatával hitelesítheti a futót az Azure DevOpsszal. A méretezési szabály a függőben lévő folyamatfuttatások számának meghatározására és új feladatvégrehajtások indítására is használható.
[! MEGJEGYZÉS]
A személyes hozzáférési jogkivonatok (PAT-k) lejárati dátummal rendelkeznek. A zavartalan szolgáltatás fenntartása érdekében rendszeresen forgassa el a jogkivonatokat, hogy azok érvényesek maradjanak (nem járnak le).
Az Azure DevOpsban válassza a profilkép melletti Felhasználói beállítások lehetőséget a jobb felső sarokban.
Válassza ki a személyes hozzáférési jogkivonatokat.
A Személyes hozzáférési jogkivonatok lapon válassza az Új jogkivonat lehetőséget, és adja meg a következő értékeket.
Beállítás Érték Név Adja meg a jogkivonat nevét. Szervezet Válassza ki a korábban kiválasztott vagy létrehozott szervezetet. Hatókörök Válassza az Egyéni definiált lehetőséget. Az összes hatókör megjelenítése Válassza az Összes hatókör megjelenítése lehetőséget. Ügynökkészletek (Olvasás és kezelés) Válassza az Ügynökkészletek (Olvasás és kezelés) lehetőséget. Hagyja bejelöletlenül az összes többi hatókört.
Válassza a Létrehozás lehetőséget.
Másolja a jogkivonat értékét egy biztonságos helyre.
A lap elhagyása után nem tudja lekérni a jogkivonatot.
Definiálja a Container Apps-feladatok későbbi konfigurálásához használt változókat.
AZP_TOKEN="<AZP_TOKEN>" ORGANIZATION_URL="<ORGANIZATION_URL>" AZP_POOL="container-apps" REGISTRATION_TOKEN_API_URL="<YOUR_REGISTRATION_TOKEN_API_URL>"
Cserélje le a helyőrzőket a következő értékekre:
Helyőrző Érték Megjegyzések <AZP_TOKEN>
A létrehozott Azure DevOps PAT. <ORGANIZATION_URL>
Az Azure DevOps-szervezet URL-címe. Győződjön meg arról, hogy az URL-cím végén nincs zárójel /
.Például, https://dev.azure.com/myorg
vagyhttps://myorg.visualstudio.com
.<YOUR_REGISTRATION_TOKEN_API_URL>
A regisztrációs jogkivonat API URL-címe a entrypoint.sh fájlban. Például: "https://myapi.example.com/get-token"
Az Azure Pipelines-ügynök tárolólemezképének létrehozása
Saját üzemeltetésű ügynök létrehozásához létre kell hoznia egy tárolórendszerképet, amely az ügynököt futtatja. Ebben a szakaszban létrehozza a tárolórendszerképet, és leküldi egy tárolóregisztrációs adatbázisba.
Feljegyzés
Az oktatóanyagban készült rendszerkép egy alapszintű, saját üzemeltetésű ügynököt tartalmaz, amely alkalmas a Container Apps-feladatként való futtatásra. Testre szabhatja úgy, hogy további eszközöket vagy függőségeket is tartalmazzon, amelyeket a folyamatok igényelnek.
A terminálban adjon nevet a tárolórendszerképnek és a beállításjegyzéknek.
CONTAINER_IMAGE_NAME="azure-pipelines-agent:1.0" CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
Cserélje le
<CONTAINER_REGISTRY_NAME>
a tárolóregisztrációs adatbázis létrehozásához használt egyedi névre.A tárolóregisztrációs adatbázis nevének egyedinek kell lennie az Azure-ban , és csak számokból és kisbetűkből álló 5–50 karakter hosszúságúnak kell lennie.
Hozzon létre egy tárolóregisztrációs adatbázist.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Basic \ --admin-enabled true
A futó lemezkép létrehozásához használt Dockerfile elérhető a GitHubon. Futtassa a következő parancsot az adattár klónozásához és a tárolólemezkép felhőben való létrehozásához a
az acr build
parancs használatával.az acr build \ --registry "$CONTAINER_REGISTRY_NAME" \ --image "$CONTAINER_IMAGE_NAME" \ --file "Dockerfile.azure-pipelines" \ "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
A rendszerkép már elérhető a tárolóregisztrációs adatbázisban.
Helyőrző saját üzemeltetésű ügynök létrehozása
Mielőtt saját üzemeltetésű ügynököt futtatna az új ügynökkészletben, létre kell hoznia egy helyőrző ügynököt. A helyőrző ügynök biztosítja, hogy az ügynökkészlet elérhető legyen. Az ügynökkészletet használó folyamatok akkor hiúsulnak meg, ha nincs helyőrző ügynök.
Egy offline helyőrző ügynök regisztrálásához manuális feladatot is futtathat. A feladat egyszer fut, és törölhető. A helyőrző ügynök nem használ fel erőforrásokat az Azure Container Appsben vagy az Azure DevOpsban.
Hozzon létre egy manuális feladatot a Container Apps-környezetben, amely létrehozza a helyőrző ügynököt.
az containerapp job create -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \ --trigger-type Manual \ --replica-timeout 300 \ --replica-retry-limit 0 \ --replica-completion-count 1 \ --parallelism 1 \ --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \ --cpu "2.0" \ --memory "4Gi" \ --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \ --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" "AZP_PLACEHOLDER=1" "AZP_AGENT_NAME=placeholder-agent" \ --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
Az alábbi táblázat a parancsban használt kulcsparamétereket ismerteti.
Paraméter Leírás --replica-timeout
A replika végrehajtásának maximális időtartama. --replica-retry-limit
A sikertelen replikák újrapróbálkozásának száma. --replica-completion-count
A feladat végrehajtása előtt sikeresen befejezendő replikák száma. --parallelism
Feladatvégrehajtásonként indítandó replikák száma. --secrets
A feladathoz használandó titkos kódok. --env-vars
A feladathoz használandó környezeti változók. --registry-server
A feladathoz használni kívánt tárolóregisztrációs adatbázis-kiszolgáló. Azure Container Registry esetén a parancs automatikusan konfigurálja a hitelesítést. A
AZP_PLACEHOLDER
környezeti változó beállítása úgy konfigurálja az ügynöktárolót, hogy offline helyőrző ügynökként regisztráljon feladat futtatása nélkül.Hajtsa végre a manuális feladatot a helyőrző ügynök létrehozásához.
az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
A feladat végrehajtásának listázása annak ellenőrzéséhez, hogy a feladat végrehajtása sikeresen megtörtént-e.
az containerapp job execution list \ --name "$PLACEHOLDER_JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output table \ --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
Ellenőrizze, hogy a helyőrző ügynök létrejött-e az Azure DevOpsban.
- Az Azure DevOpsban lépjen a projekthez.
- Válassza a Projektbeállítások>ügynökkészletek>tárolóalkalmazás-ügynökök> lehetőséget.
- Győződjön meg arról, hogy a névvel ellátott
placeholder-agent
helyőrző ügynök szerepel a listában, és az állapota offline állapotú.
A feladatra már nincs szükség. Azt törölheti.
az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
Saját üzemeltetésű ügynök létrehozása eseményvezérelt feladatként
Most, hogy rendelkezik helyőrző ügynökkel, létrehozhat egy saját üzemeltetésű ügynököt. Ebben a szakaszban egy eseményvezérelt feladatot hoz létre, amely egy saját üzemeltetésű ügynököt futtat egy folyamat aktiválásakor.
az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
--trigger-type Event \
--replica-timeout 1800 \
--replica-retry-limit 0 \
--replica-completion-count 1 \
--parallelism 1 \
--image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
--min-executions 0 \
--max-executions 10 \
--polling-interval 30 \
--scale-rule-name "azure-pipelines" \
--scale-rule-type "azure-pipelines" \
--scale-rule-metadata "poolName=$AZP_POOL" "targetPipelinesQueueLength=1" \
--scale-rule-auth "personalAccessToken=personal-access-token" "organizationURL=organization-url" \
--cpu "2.0" \
--memory "4Gi" \
--secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
--env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" \
--registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
Az alábbi táblázat a parancsban használt méretezési szabály paramétereit ismerteti.
Paraméter | Leírás |
---|---|
--min-executions |
A lekérdezési időközönként futtatandó feladatvégrehajtások minimális száma. |
--max-executions |
A lekérdezési időközönként futtatandó feladatvégrehajtások maximális száma. |
--polling-interval |
A skálázási szabály kiértékelésének időköze. |
--scale-rule-name |
A méretezési szabály neve. |
--scale-rule-type |
A használni kívánt méretezési szabály típusa. Az Azure Pipelines-skálázóval kapcsolatos további információkért tekintse meg a KEDA dokumentációját. |
--scale-rule-metadata |
A méretezési szabály metaadatai. |
--scale-rule-auth |
A méretezési szabály hitelesítése. |
A méretezési szabály konfigurációja határozza meg a figyelendő eseményforrást. A rendszer minden lekérdezési időközön kiértékeli a szabályokat annak meghatározásához, hogy hány feladatvégrehajtást kell aktiválni. További információ: Méretezési szabályok beállítása.
Az eseményvezérelt feladat most a Container Apps környezetben jön létre.
Folyamat futtatása és a feladat ellenőrzése
Miután konfigurálta a saját üzemeltetésű ügynökfeladatot, futtathat egy folyamatot, és ellenőrizheti, hogy megfelelően működik-e.
Az Azure DevOps-projekt bal oldali navigációs sávján lépjen a Pipelines elemre.
Válassza a Folyamat létrehozása lehetőséget.
A kód helyeként válassza az Azure Repos Gitet .
Válassza ki a korábban létrehozott adattárat.
Válassza a Starter-folyamatot.
A YAML folyamatban módosítsa a
pool
következőtvmImage: ubuntu-latest
name: container-apps
: .pool: name: container-apps
Válassza a Mentés és futtatás lehetőséget.
A folyamat a Container Apps-környezetben létrehozott saját üzemeltetésű ügynökfeladatot futtatja és használja.
A feladat végrehajtásának listázása annak ellenőrzéséhez, hogy a feladat végrehajtása sikeresen megtörtént-e.
az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output table \ --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
Tipp.
Problémákat tapasztal? Tudassa velünk a GitHubon, ha megnyit egy hibát az Azure Container Apps adattárában.
Az erőforrások eltávolítása
Ha végzett, futtassa a következő parancsot a Container Apps-erőforrásokat tartalmazó erőforráscsoport törléséhez.
Figyelemfelhívás
Az alábbi parancs törli a megadott erőforráscsoportot és a benne lévő összes erőforrást. Ha az oktatóanyag hatókörén kívül eső erőforrások a megadott erőforráscsoportban találhatók, akkor azok is törlődnek.
az group delete \
--resource-group $RESOURCE_GROUP
A GitHub-adattár törléséhez lásd : Adattár törlése.