Azure Developer CLI közzétételi munkafolyamatok

A azd publish parancs lehetővé teszi, hogy tárolórendszerképeket hozzon létre és küldjön le egy tárolóregisztrációs adatbázisba, például az Azure Container Registrybe vagy a Docker Hubba anélkül, hogy azonnal üzembe helyeznék őket egy Azure-erőforrásban.

A buildelési és leküldéses lépéseknek az üzembe helyezési lépéstől való elválasztásával fejlettebb üzembehelyezési munkafolyamatokat valósíthat meg, például a "build egyszer, üzembe helyezés mindenhol" mintát. Ez a megközelítés az Azure Container Appst vagy az Azure Kubernetes Service-t (AKS) célzó tárolóalapú alkalmazások esetében hasznos.

Miért érdemes használni azd publish?

Egy szabványos azd munkafolyamatban a azd deploy parancs három műveletet hajt végre sorrendben:

  1. Build: Az alkalmazás kódját tárolórendszerképbe építi.
  2. Feltöltés: Feltölti a képet egy tárolóra.
  3. Üzembe helyezés: Frissíti az Azure hosting szolgáltatást (például a Container Appst) az új rendszerkép futtatásához.

Bár kényelmes a belső ciklusos fejlesztéshez, ez a megközelítés feltételezi, hogy minden üzembe helyezéshez új buildre van szükség. Gyártási környezetben gyakran az alábbiakat szeretné megtenni:

  • Egyszer buildelhet, üzembe helyezhet mindenhol: egyetlen összetevőt (rendszerképet) hozhat létre, tesztelheti egy fejlesztői környezetben, majd ugyanezt az összetevőt előléptetheti éles környezetben újraépítés nélkül.
  • Összetevők központosítása: Egyetlen megosztott Azure Container Registry (ACR) használatával tárolhatja a rendszerképeket az összes környezetében.
  • A biztonság javítása: Figyeljen arra, hogy csak ellenőrzött és tesztelt rendszerképek legyenek üzembe helyezve az éles környezetben.

azd publish csak az 1. és 2. lépés (Build és Push) kezelésével teszi lehetővé ezeket a forgatókönyveket. Ezután az azd deploy bizonyos kapcsolóival kezelheti a 3. lépést (telepítés), az előre közzétett rendszerkép használatával.

Legfontosabb funkciók

  • Független közzététel: Lemezképek közzététele a beállításjegyzékben üzembe helyezés aktiválása nélkül.
  • Egyéni célok: A --to jelölő használatával pontosan megadhatja a rendszerkép továbbítási helyét ([registry/]repository[:tag]), mely az alapértelmezett elnevezési konvenciókat felülírja.
  • Külső regiszter-támogatás: Leküldés külső regiszterekbe (például Docker Hub) az Azure Container Registry mellett.
  • Horogtámogatás: prepublish és postpublish horgokat támogat az egyéni automatizálás érdekében.
  • Szolgáltatáscélzás: Jelenleg az Azure Container Appsben és az AKS-ben üzemeltetett szolgáltatásokat támogatja.

Usage

Az adott szolgáltatáshoz tartozó kép elkészítése és közzététele, amely a azure.yaml-ban van meghatározva:

azd publish <service-name>

Az összes szolgáltatás létrehozása és közzététele:

azd publish --all

Paraméterek

Flag Description
--all A fájlban definiált azure.yamlösszes szolgáltatást közzéteszi.
--from-package <image> Egy meglévő helyi rendszerképet vagy -csomagot használ a forrásból való építés helyett.
--to <image-ref> Meghatározza a célkép hivatkozását (például <your-registry>.azurecr.io/my-app:v1). Felülbírálja az alapértelmezett elnevezést a következőben azure.yaml: .

Megjegyzés:

A services.<name>.docker.imagePassthrough: true használatára konfigurált szolgáltatások esetén a azd publish nem készít és nem küld le lemezképet. Ehelyett a konfigurált távoli rendszerképet használja újra, és elutasítja az adott szolgáltatásnál a --from-package és --to jelzőket.

Példák

Adott szolgáltatást közzétenni egyéni címkén:

azd publish api-service --to <your-registry>.azurecr.io/api-service:v1.0.0

Helyi rendszerkép közzététele távoli beállításjegyzékben:

Ha már helyileg létrehozott egy képet (például: local-api:dev), címkézheti és leküldheti a következővel azd:

azd publish api-service --from-package local-api:dev --to <your-registry>.azurecr.io/api-service:v1.0.0

Forgatókönyv: Egyszeri buildelés, üzembe helyezés mindenhol

Egy gyakori gyártási munkafolyamat magában foglalja egy rendszerkép egyszeri elkészítését és előléptetését különböző környezeteken, mint például Dev –> Test –> Prod. Ezt a műveletet a azd publish és azd deploy kombinációjával érheti el.

Ez a forgatókönyv nem vonatkozik a konfigurált services.<name>.docker.imagePassthrough: trueszolgáltatásokra, mert azd publish nem készít vagy küld le rendszerképet ezekhez a szolgáltatásokhoz.

  1. A kép közzététele:

    Hozza létre a kódot, és küldje el a megosztott beállításjegyzékbe.

    azd publish api-service --to <your-registry>.azurecr.io/my-app:v1.0.0
    
  2. Üzembe helyezés a fejlesztésben:

    Helyezze üzembe az adott rendszerkép-verziót a fejlesztői környezetben. A --from-package jelölő azt jelzi azd deploy , hogy hagyja ki a buildelési/leküldéses lépéseket, és csak frissítse a szolgáltatás konfigurációját.

    azd env select dev
    azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
    
  3. Átvitel éles környezetbe:

    A Devben végzett tesztelés után helyezze üzembe ugyanazt a rendszerkép-hivatkozást az éles környezetben.

    azd env select prod
    azd deploy api-service --from-package <your-registry>.azurecr.io/my-app:v1.0.0
    

Összehasonlítás más parancsokkal

Command Végrehajtott műveletek Legjobb
azd publish Build –> Leküldés CI-/CD-folyamatok, artifaktumok létrehozása, "Egyszeri buildelés" munkafolyamatok.
azd publish --from-package Csak küldés előre elkészített artefaktumokat telepít a környezetekbe.
azd deploy Build -> Feltöltés -> Üzembe helyezés Standard fejlesztési iteráció (belső ciklus).
azd deploy --from-package Csak üzembe helyezés előre összeállított/előre közzétett összetevők üzembe helyezése környezetekben.
azd up Előkészítés –> Fordítás –> Feltöltés –> Üzembe helyezés Első lépések, új környezetek inicializálása az alapoktól.

Megjegyzés:

Az alapértelmezett viselkedés azd up változatlan marad. Továbbra is a teljes körű folyamatot vezényli. Szükség esetén azonban testre szabhatja a munkafolyamatokat a azure.yaml használatára azd publish.

A(z) services.<name>.docker.imagePassthrough: true elemmel konfigurált szolgáltatásokra a(z) azd publish és a(z) azd publish --from-package nem vonatkozik. azd a konfigurált távoli lemezképet újrafelhasználja ahelyett, hogy felépítene vagy feltöltene egyet.

Konfiguráció a következőben: azure.yaml

A szolgáltatások alapértelmezett Docker-beállításainak konfigurálása a következőben azure.yaml: . A azd publish parancs tiszteletben tartja ezeket a beállításokat, kivéve, ha olyan jelzők, mint a --to, felülbírálják.

name: my-app
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: 'docker.io/myusername' # Default registry
      image: 'my-api'                  # Default image name
      tag: 'latest'                    # Default tag

Ezzel a konfigurációval a azd publish api lefuttatása docker.io/myusername/my-api:latest-be fogja feltölteni az adatokat.

Távoli lemezkép újrafelhasználása imagePassthrough

Ha a szolgáltatása már rendelkezik egy közzétett rendszerképpel, amelyet a(z) azd nem építhet fel, nem tölthet fel, és más módon sem kezelhet, állítsa be a(z) services.<name>.docker.imagePassthrough: true értéket. Ha engedélyezi ezt a beállítást:

  • Állítsa a(z) services.<name>.image értékét a végső, teljesen kvalifikált távoli képhivatkozásra, explicit regisztert is megadva.
  • Nem kombinálható docker.imagePassthrough a .docker.remoteBuild
  • azd publish nem hoz létre és nem küld fel konténerképet a szolgáltatáshoz, és nem fogadja el a --to és --from-package jelzőket ennél a szolgáltatásnál.
name: my-app
services:
  api:
    host: containerapp
    docker:
      imagePassthrough: true
    image: docker.io/myusername/my-api:v1.0.0

Következő lépések