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


Oktatóanyag: Tárolórendszerkép-buildek automatizálása egy alaprendszerkép egy másik privát tárolóregisztrációs adatbázisban való frissítésekor

Az ACR-feladatok támogatják az automatikus rendszerkép-buildeket a tároló alaprendszerképének frissítésekor, például amikor az operációs rendszert vagy az alkalmazás-keretrendszert az egyik alaprendszerképben javítja.

Ebben az oktatóanyagban megtudhatja, hogyan hozhat létre olyan ACR-feladatot, amely egy felhőbeli buildet aktivál, amikor egy tároló alaprendszerképét egy másik Azure-tárolóregisztrációs adatbázisba küldi le. Megpróbálhat egy oktatóanyagot is, amely létrehoz egy ACR-feladatot, amely elindít egy rendszerkép-összeállítást, amikor egy alaprendszerképet leküld egy azure-beli tárolóregisztrációs adatbázisba.

Ebben az oktatóanyagban:

  • Az alaprendszerkép létrehozása egy alapregisztrációs adatbázisban
  • Alkalmazás buildelési feladatának létrehozása egy másik beállításjegyzékben az alaprendszerkép nyomon követéséhez
  • Az alapként szolgáló rendszerkép frissítése egy alkalmazásrendszerkép-feladat aktiválásához
  • Az aktivált feladat megjelenítése
  • A frissített alkalmazás-rendszerkép ellenőrzése

Előfeltételek

Az előző oktatóanyagok elvégzése

Ez az oktatóanyag feltételezi, hogy már konfigurálta a környezetet, és elvégezte a sorozat első két oktatóanyagának lépéseit, amelyekben:

  • Azure Container Registry létrehozása
  • Mintaadattár leágaztatása
  • Mintaadattár klónozása
  • Személyes hozzáférési jogkivonat létrehozása a GitHubban

Ha még nem tette meg, végezze el az alábbi oktatóanyagokat a folytatás előtt:

Tárolórendszerképek összeállítása a felhőben az Azure Container Registry Tasks használatával

Tárolórendszerképek összeállításának automatizálása az Azure Container Registry Tasks használatával

Az előző oktatóanyagokhoz létrehozott tárolóregisztrációs adatbázis mellett létre kell hoznia egy beállításjegyzéket az alaprendszerképek tárolásához. Ha szeretné, hozza létre a második beállításjegyzéket az eredeti beállításjegyzékétől eltérő helyen.

A környezet konfigurálása

Láss el ezeket a rendszerhéj-környezeti változókat a környezetnek megfelelő értékekkel. Ez a lépés nem feltétlenül szükséges, de némileg könnyebbé teszi az oktatóanyagban lévő többsoros Azure CLI-parancsok végrehajtását. Ha nem tölti fel ezeket a környezeti változókat, manuálisan kell lecserélnie az egyes értékeket, bárhol is jelenjenek meg a példaparancsokban.

BASE_ACR=<base-registry-name>   # The name of your Azure container registry for base images
ACR_NAME=<registry-name>        # The name of your Azure container registry for application images
GIT_USER=<github-username>      # Your GitHub user account name
GIT_PAT=<personal-access-token> # The PAT you generated in the second tutorial

Az alapként szolgáló rendszerkép frissítése forgatókönyv

Ez az oktatóanyag végigvezeti az alapként szolgáló rendszerkép frissítési forgatókönyvén. Ez a forgatókönyv egy fejlesztési munkafolyamatot tükröz, amely egy közös, privát tárolóregisztrációs adatbázisban lévő alaprendszerképeket kezel, amikor alkalmazásrendszerképeket hoz létre más adatbázisokban. Az alaprendszerképek meghatározhatják a csapat által használt közös operációs rendszereket és keretrendszereket, vagy akár a gyakori szolgáltatásösszetevőket is.

Például azok a fejlesztők, akik alkalmazásrendszerképeket fejlesztenek a saját adatbázisaikban, hozzáférhetnek a közös alapregisztrációs adatbázisban karbantartott alaprendszerképekhez. Az alapregisztrációs adatbázis lehet egy másik régióban, vagy akár georeplikált is.

A kódminta két Docker-fájlt tartalmaz: egy alkalmazás-rendszerképet, és egy rendszerképet, amelyet az alkalmazás-rendszerkép az alapként szolgáló rendszerképeként ad meg. A következő szakaszokban létrehoz egy ACR-feladatot, amely automatikusan elindítja az alkalmazás lemezképének buildelt változatát, amikor az alaprendszerkép új verzióját egy másik Azure-tárolóregisztrációs adatbázisba küldi le.

  • Dockerfile-app: Egy kisméretű Node.js-webalkalmazás, amely az alapjául szolgáló Node.js-verziót jelző statikus weboldalt jelenít meg. A verziósztring szimulált elem: az alapként szolgáló rendszerképben definiált környezeti változó (NODE_VERSION) tartalmát jeleníti meg.

  • Dockerfile-base: A rendszerkép, amelyet a Dockerfile-app az alapjaként ad meg. Egy Node-rendszerképen alapul, és tartalmazza a NODE_VERSION környezeti változót.

A következő szakaszokban létrehozunk egy feladatot, frissítjük a NODE_VERSION értékét az alapként szolgáló rendszerkép Docker-fájljában, majd az ACR Tasks használatával összeállítjuk az alapként szolgáló rendszerképet. Amikor az ACR-feladat leküldi az alapként szolgáló új rendszerképet a regisztrációs adatbázisba, az automatikusan kiváltja az alkalmazás-rendszerkép összeállítását. Ha kívánja, az alkalmazástároló-rendszerkép helyi futtatásával megtekintheti az összeállított rendszerképek eltérő verzió-sztringjeit.

Ebben az oktatóanyagban az ACR-feladat létrehoz és leküld egy Docker-fájlban megadott alkalmazástároló-lemezképet. Az ACR-feladatok többlépéses feladatokat is futtathatnak egy YAML-fájl használatával a több tároló összeállításának, leküldésének és opcionális tesztelésének lépéseinek meghatározásához.

Az alapként szolgáló rendszerkép összeállítása

Első lépésként készítse el az alaprendszerképet egy ACR Tasks gyorsfeladattal az az acr build használatával. Amint azt a sorozat első részében bemutattuk, ez a folyamat nem csupán összeállítja a rendszerképet, hanem siker esetén le is küldi azt a tárolóregisztrációs adatbázisba. Ebben a példában a rendszer leküldi a rendszerképet az alaprendszerkép-beállításjegyzékbe.

az acr build --registry $BASE_ACR --image baseimages/node:15-alpine --file Dockerfile-base .

Feladat létrehozása a privát alaprendszerkép nyomon követéséhez

Ezután hozzon létre egy feladatot az alkalmazás lemezkép-beállításjegyzékében az az acr task create paranccsal, és engedélyezze a felügyelt identitást. A felügyelt identitást a rendszer későbbi lépésekben használja, így a feladat az alaprendszerkép-beállításjegyzékkel hitelesít.

Ez a példa egy rendszer által hozzárendelt identitást használ, de bizonyos esetekben létrehozhat és engedélyezhet egy felhasználó által hozzárendelt felügyelt identitást. Részletekért lásd: Adatbázisközi hitelesítés azure-beli felügyelt identitást használó ACR-feladatban.

az acr task create \
    --registry $ACR_NAME \
    --name baseexample2 \
    --image helloworld:{{.Run.ID}} \
    --context https://github.com/$GIT_USER/acr-build-helloworld-node.git#main \
    --file Dockerfile-app \
    --git-access-token $GIT_PAT \
    --arg REGISTRY_NAME=$BASE_ACR.azurecr.io \
    --assign-identity

Ez a tevékenység hasonló az előző oktatóanyagban létrehozott tevékenységhez. A feladat utasítja az ACR Tasksot egy rendszerkép-összeállítás aktiválására, amikor a rendszer leküld egy véglegesítést a --context által megadott adattárba. Míg az előző oktatóanyagban a rendszerkép létrehozásához használt Dockerfile egy nyilvános alaprendszerképet határoz meg (FROM node:15-alpine), a dockerfile ebben a feladatban a Dockerfile-app egy alaprendszerképet ad meg az alaprendszerkép-beállításjegyzékben:

FROM ${REGISTRY_NAME}/baseimages/node:15-alpine

Ezzel a konfigurációval az oktatóanyag későbbi részében egyszerűen szimulálható egy keretrendszer-javítás az alaprendszerképben.

Identitás lekérési engedélyeinek megadása az alapregisztrációs adatbázishoz

Ahhoz, hogy a feladat felügyelt identitása engedélyt kapjon a rendszerképek alaprendszerkép-beállításjegyzékből való lekérésére, először futtassa az az acr task show parancsot az identitás szolgáltatásnév-azonosítójának lekéréséhez. Ezután futtassa az az acr show parancsot az alapregisztrációs adatbázis erőforrás-azonosítójának lekéréséhez:

# Get service principal ID of the task
principalID=$(az acr task show --name baseexample2 --registry $ACR_NAME --query identity.principalId --output tsv) 

# Get resource ID of the base registry
baseregID=$(az acr show --name $BASE_ACR --query id --output tsv) 

Rendelje hozzá a felügyelt identitás lekérési engedélyeit a beállításjegyzékhez az az role assignment create futtatásával:

az role assignment create \
  --assignee $principalID \
  --scope $baseregID --role acrpull 

Célregisztrációs adatbázis hitelesítő adatainak hozzáadása a feladathoz

Futtassa az az acr task credential add parancsot , hogy hitelesítő adatokat adjon hozzá a tevékenységhez. Adja meg a --use-identity [system] paramétert, hogy jelezze, hogy a tevékenység rendszer által hozzárendelt felügyelt identitása hozzáfér a hitelesítő adatokhoz.

az acr task credential add \
  --name baseexample2 \
  --registry $ACR_NAME \
  --login-server $BASE_ACR.azurecr.io \
  --use-identity [system] 

A feladat manuális futtatása

Az az acr-feladatfuttatással manuálisan aktiválhatja a feladatot, és létrehozhatja az alkalmazás lemezképét. Erre a lépésre azért van szükség, hogy a feladat nyomon kövesse az alkalmazás lemezképének az alaprendszerképhez való függőségét.

az acr task run --registry $ACR_NAME --name baseexample2

Amint a feladat véget ért, jegyezze fel a Run ID (Futtatási azonosító) értékét (például „da6”), ha a következő nem kötelező lépést is végre szeretné hajtani.

Nem kötelező: Alkalmazástároló helyi futtatása

Ha helyi környezetben dolgozik (nem a Cloud Shellben), és a Docker telepítve lett, a tároló futtatásakor az alkalmazást megtekintheti egy webböngészőben, mielőtt újraépítené az alapként szolgáló rendszerképét. A Cloud Shell használata esetén hagyja ki ezt a szakaszt (a Cloud Shell nem támogatja az az acr login és a docker run parancsot).

Először hitelesítse magát a tárolóregisztrációs adatbázisba az az acr-bejelentkezéssel:

az acr login --name $ACR_NAME

Futtassa helyileg a tárolót a docker run paranccsal. Cserélje le <a futtatási azonosítót> az előző lépés kimenetében található futtatási azonosítóra (például "da6"). Ez a példa megnevezi a tárolót myapp , és tartalmazza azt a --rm paramétert, amely eltávolítja a tárolót a leállításakor.

docker run -d -p 8080:80 --name myapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>

Lépjen a http://localhost:8080 címre a böngészőben, és a weboldalon a Node.js verziószámának kell megjelennie az alábbihoz hasonlóan. Egy későbbi lépésben majd újabbra frissíti a verziót úgy, hogy egy „a” tagot ad hozzá a verziósztringhez.

Képernyőkép a mintaalkalmazásról a böngészőben

A tároló leállításához és eltávolításához futtassa a következő parancsot:

docker stop myapp

Összeállítások listázása

Ezután listázza a feladatfuttatásokat, amelyeket az ACR Tasks elkészített a regisztrációs adatbázis számára az az acr task list-runs paranccsal:

az acr task list-runs --registry $ACR_NAME --output table

Ha elvégezte az előző oktatóanyagot (és nem törölte a regisztrációs adatbázist), az alábbihoz hasonló kimenetnek kell megjelennie. Jegyezze fel a feladatfuttatások számát, valamint a RUN ID oszlop legújabb értékét, hogy összehasonlíthassa a kimenettel, miután frissítette az alapként szolgáló rendszerképet a következő szakaszban.

az acr task list-runs --registry $ACR_NAME --output table
UN ID    TASK            PLATFORM    STATUS     TRIGGER       STARTED               DURATION
--------  --------------  ----------  ---------  ------------  --------------------  ----------
ca12      baseexample2    linux       Succeeded  Manual        2020-11-21T00:00:56Z  00:00:36
ca11      baseexample1    linux       Succeeded  Image Update  2020-11-20T23:38:24Z  00:00:34
ca10      taskhelloworld  linux       Succeeded  Image Update  2020-11-20T23:38:24Z  00:00:24
cay                       linux       Succeeded  Manual        2020-11-20T23:38:08Z  00:00:22
cax       baseexample1    linux       Succeeded  Manual        2020-11-20T23:33:12Z  00:00:30
caw       taskhelloworld  linux       Succeeded  Commit        2020-11-20T23:16:07Z  00:00:29

Az alapként szolgáló rendszerkép frissítése

Itt most egy keretrendszer-javítást szimulál az alapként szolgáló rendszerképben. Módosítsa a Dockerfile-base fájlt, és adja hozzá az „a” tagot a NODE_VERSION attribútumban meghatározott verziószám után:

ENV NODE_VERSION 15.2.1a

Futtasson egy gyors feladatot az alapként szolgáló módosított rendszerkép összeállításához. Jegyezze fel a kimenetben található Run ID (Futtatási azonosító) értékét.

az acr build --registry $BASE_ACR --image baseimages/node:15-alpine --file Dockerfile-base .

Miután befejeződött az összeállítás, és az ACR-feladat leküldte az alapként szolgáló új rendszerképet a regisztrációs adatbázisba, az aktiválja az alkalmazás-rendszerkép összeállítását. Eltarthat egy ideig, amíg a korábban létrehozott feladat aktiválja az alkalmazás-rendszerkép összeállítását, mivel észlelnie kell az újonnan összeállított és leküldött alapként szolgáló rendszerképet.

Frissített összeállítás listázása

Az alapként szolgáló rendszerkép frissítését követően listázza újra a feladatfuttatásokat, hogy összehasonlíthassa azokat a korábbi listával. Ha a kimenet eleinte nem tér el a korábbitól, időnként futtassa újra a parancsot, amíg az új feladatfuttatás meg nem jelenik a listában.

az acr task list-runs --registry $ACR_NAME --output table

A kimenet a következőkhöz hasonló. Az utolsóként végrehajtott összeállítás TRIGGER (Eseményindító) értékének az „Image Update” (Rendszerképfrissítés) értéknek kell lennie, ami jelzi, hogy a feladatot az alapként szolgáló rendszerkép gyors feladata aktiválta.

az acr task list-runs --registry $ACR_NAME --output table
         PLATFORM    STATUS     TRIGGER       STARTED               DURATION
--------  --------------  ----------  ---------  ------------  --------------------  ----------
ca13      baseexample2    linux       Succeeded  Image Update  2020-11-21T00:06:00Z  00:00:43
ca12      baseexample2    linux       Succeeded  Manual        2020-11-21T00:00:56Z  00:00:36
ca11      baseexample1    linux       Succeeded  Image Update  2020-11-20T23:38:24Z  00:00:34
ca10      taskhelloworld  linux       Succeeded  Image Update  2020-11-20T23:38:24Z  00:00:24
cay                       linux       Succeeded  Manual        2020-11-20T23:38:08Z  00:00:22
cax       baseexample1    linux       Succeeded  Manual        2020-11-20T23:33:12Z  00:00:30
caw       taskhelloworld  linux       Succeeded  Commit        2020-11-20T23:16:07Z  00:00:29

Ha az újonnan létrehozott tároló futtatásának következő opcionális lépését szeretné végrehajtani a frissített verziószám megtekintéséhez, jegyezze fel a rendszerképfrissítés által aktivált build RUN ID értékét (az előző kimenetben ez a "ca13").

Nem kötelező: Az újonnan összeállított rendszerkép futtatása

Ha helyi környezetben dolgozik (nem a Cloud Shellben), és a Docker telepítve lett, futtassa az új alkalmazás-rendszerképet, amint annak összeállítása befejeződött. A <run-id> helyére az előző lépésben beszerzett RUN ID (Futtatási azonosító) értéket írja. A Cloud Shell használata esetén hagyja ki ezt a szakaszt (a Cloud Shell nem támogatja a docker run parancsot).

docker run -d -p 8081:80 --name updatedapp --rm $ACR_NAME.azurecr.io/helloworld:<run-id>

Lépjen a http://localhost:8081 címre a böngészőben, ahol a weboldalon a Node.js frissített verziószámának (az „a” taggal kiegészítve) kell megjelennie:

Képernyőkép a frissített mintaalkalmazásról a böngészőben

Figyelje meg, hogy miután frissítette az alapként szolgáló rendszerképet egy új verziószámmal, az utoljára összeállított alkalmazás-rendszerkép az új verziót jeleníti meg. Az ACR Tasks észlelte az alapként szolgáló rendszerkép módosítását, és automatikusan újraépítette az alkalmazás-rendszerképet.

A tároló leállításához és eltávolításához futtassa a következő parancsot:

docker stop updatedapp

Következő lépések

Ez az oktatóanyag azt mutatta be, hogyan használhatók a feladatok a tárolórendszerképek összeállításának automatikus aktiválására a rendszerkép alapként szolgáló rendszerképének frissítése esetén. Most lépjen tovább a következő oktatóanyagra, amelyből megtudhatja, hogyan aktiválhat feladatokat egy meghatározott ütemezés szerint.