Megosztás:


Üzembe helyezés az Azure Container Appsben a GitHub Actions segítésével

Az Azure Container Apps lehetővé teszi a GitHub Actions használatával a változatok közzétételét a tárolóalkalmazásban. A véglegesítések GitHub-adattárba való leküldésekor egy munkafolyamat aktiválódik, amely frissíti a tárolóregisztrációs adatbázis tárolólemezképét. Az Azure Container Apps egy új változatot hoz létre a frissített tárolórendszerkép alapján.

A GitHub-adattár módosításai aktiválnak egy műveletet egy új változat létrehozásához.

A GitHub Actions munkafolyamat akkor aktiválódik, amikor egy adott ágra követ el a tárhelyedben. A munkafolyamat létrehozásakor ön dönti el, hogy melyik ág aktiválja a munkafolyamatot.

Ez a cikk bemutatja, hogyan hozhat létre teljesen testre szabható munkafolyamatot. Ha kezdő GitHub Actions-munkafolyamatot szeretne létrehozni az Azure CLI-vel, olvassa el a GitHub Actions-munkafolyamat létrehozása az Azure CLI-vel című témakört.

Azure Container Apps GitHub-művelet

A tárolóalkalmazás létrehozásához és üzembe helyezéséhez adja hozzá a műveletet a azure/container-apps-deploy-action GitHub Actions-munkafolyamathoz.

A művelet a következő forgatókönyveket támogatja:

  • Buildelés Dockerfile-ból és üzembe helyezés a Container Appsben
  • Buildelés forráskódból Dockerfile nélkül, és üzembe helyezés a Container Appsben. Támogatott nyelvek: .NET, Java, Node.js, PHP és Python
  • Meglévő tárolórendszerkép üzembe helyezése a Container Appsben

Felhasználási példák

Íme néhány gyakori forgatókönyv a művelet használatához. További információkért tekintse meg a művelet GitHub Marketplace-oldalát.

Buildelés és üzembe helyezés a Container Appsben

Az alábbi kódrészlet bemutatja, hogyan hozhat létre tárolórendszerképet a forráskódból, és hogyan helyezheti üzembe a Container Appsben.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      appSourcePath: ${{ github.workspace }}/src
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg

A művelet a Dockerfile-t appSourcePath használja a tárolólemezkép létrehozásához. Ha nem található Dockerfile, a művelet megkísérli létrehozni a tárolórendszerképet a forráskódból a következőben appSourcePath: .

Meglévő tárolórendszerkép üzembe helyezése a Container Appsben

Az alábbi kódrészlet bemutatja, hogyan helyezhet üzembe egy meglévő tárolórendszerképet a Container Appsben.

steps:

  - name: Log in to Azure
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}

  - name: Build and deploy Container App
    uses: azure/container-apps-deploy-action@v1
    with:
      acrName: myregistry
      containerAppName: my-container-app
      resourceGroup: my-rg
      imageToDeploy: myregistry.azurecr.io/app:${{ github.sha }}

Fontos

Ha külön lépésben hoz létre tárolórendszerképet, győződjön meg arról, hogy egy olyan egyedi címkét használ, mint például a véglegesítési SHA a stabil címke latesthelyett. További információ: Képcímke – ajánlott eljárások.

Hitelesítés az Azure Container Registry használatával

Az Azure Container Apps-műveletnek hitelesítenie kell az Azure Container Registryt a tárolórendszerkép leküldéséhez. A tárolóalkalmazásnak az Azure Container Registryvel is hitelesítenie kell a tárolólemezkép lekéréséhez.

Képek leküldéséhez a művelet automatikusan hitelesíti magát a művelethez acrName megadott azure/login hitelesítő adatokkal megadott tárolóregisztrációs adatbázissal.

A rendszerképek lekéréséhez az Azure Container Apps felügyelt identitást (ajánlott) vagy rendszergazdai hitelesítő adatokat használ az Azure Container Registryvel való hitelesítéshez. A felügyelt identitás használatához a műveletet üzembe helyező tárolóalkalmazást úgy kell konfigurálni, hogy felügyelt identitást használjon. A beállításjegyzék rendszergazdai hitelesítő adataival való hitelesítéshez állítsa be a művelet és acrUsernameacrPassword a bemeneteket.

Rendszerképek üzembe helyezése nem ACR-nyilvántartásokból

Az Azure Container Registry (ACR) mellett az Azure Container Apps más adatbázisokban, például a GitHub Container Registryben (GHCR) üzemeltetett tárolórendszerképeket is támogatja. Ez a szakasz bemutatja, hogyan telepíthet konténerképeket a GitHub Container Registry-ből, beleértve a nyilvános és privát képeket is.

Megjegyzés:

Ha nem ACR-beállításjegyzéket (például GHCR-t) használ, akkor is konfigurálnia kell a tárolóalkalmazást a beállításjegyzékkel való hitelesítésre, még akkor is, ha a rendszerkép nyilvános.

Nyilvános rendszerkép üzembe helyezése a GHCR-ből

Ha a tárolólemezkép nyilvános, hitelesítési hitelesítő adatok megadása nélkül is üzembe helyezheti. Az alábbi példa bemutatja, hogyan helyezhet üzembe nyilvános rendszerképet a GHCR-ből az üzembe helyezési művelet használatával.

A parancs futtatása előtt cserélje le <YOUR-GITHUB-USERNAME> a tényleges GitHub-felhasználónevére.

- name: Deploy public GHCR image to Container App
  uses: azure/container-apps-deploy-action@v1
  with:
    containerAppName: my-container-app
    resourceGroup: my-container-app-rg
    imageToDeploy: ghcr.io/<YOUR-GITHUB-USERNAME>/myimage:latest
    registryServer: ghcr.io

Üzembe helyezés előtt konfigurálja a tárolóalkalmazást a GHCR-ből való lekérésre:

az containerapp registry set \
  --name my-container-app \
  --resource-group my-container-app-rg \
  --server ghcr.io

Privát rendszerkép üzembe helyezése a GHCR-ből

Ha a rendszerkép privát, hitelesítési hitelesítő adatokat kell megadnia a GitHub Actions-munkafolyamatban. Használjon egy GitHub személyes hozzáférési jogkivonatot (PAT) a read:packages hatókörrel. A jogkivonatot és a felhasználónevet titkos kulcsként tárolhatja a GitHub-adattárban.

- name: Deploy private GHCR image to Container App
  uses: azure/container-apps-deploy-action@v1
  with:
    containerAppName: my-container-app
    resourceGroup: my-container-app-rg
    imageToDeploy: ghcr.io/<YOUR-GITHUB-USERNAME>/myimage:${{ github.sha }}
    registryServer: ghcr.io
    registryUsername: ${{ secrets.GHCR_USERNAME }}
    registryPassword: ${{ secrets.GHCR_TOKEN }}

Konfigurálja a tárolóalkalmazást, hogy a kép letöltése a GHCR hitelesítési adataival történjen:

az containerapp registry set \
  --name my-container-app \
  --resource-group my-container-app-rg \
  --server ghcr.io \
  --username <GHCR_USERNAME> \
  --password <GHCR_TOKEN>

Cserélje le a <GHCR_USERNAME>-t a GitHub-felhasználónevére és a <GHCR_TOKEN>-t a személyes hozzáférési tokenjére.

Megjegyzés:

Használjon egyedi címkét, például a Git commit SHA-t (${{ github.sha }}) általános címke helyett, például a legújabbat. Ez segít elkerülni a gyorsítótárazási problémákat, és biztosítja az új változatok megbízható létrehozását.

Konfiguráció

Az alábbi lépésekkel konfigurálhat egy GitHub Actions-munkafolyamatot az Azure Container Appsben való üzembe helyezéshez.

  • GitHub-adattár létrehozása az alkalmazáshoz
  • Tárolóalkalmazás létrehozása engedélyezett felügyelt identitással
  • AcrPull Az Azure Container Registry szerepkörének hozzárendelése a tárolóalkalmazás felügyelt identitásához
  • Titkos kódok konfigurálása a GitHub-adattárban
  • GitHub Actions-munkafolyamat létrehozása

Előfeltételek

Követelmény Utasítások
Azure-fiók Ha nem rendelkezik ilyen fiókkal, hozzon létre ingyenes fiókot. A folytatáshoz az Azure-előfizetés közreműködői vagy tulajdonosi engedélyére van szüksége. Részletekért tekintse meg az Azure-szerepkörök hozzárendelését az Azure Portalon .
GitHub-fiók Regisztráljon ingyenesen.
Azure CLI (Az Azure parancssori felülete) Telepítse az Azure CLI-t.

GitHub-adattár létrehozása és forráskód klónozása

A munkafolyamat létrehozása előtt az alkalmazás forráskódjának egy GitHub-adattárban kell lennie.

  1. Jelentkezzen be az Azure-ba az Azure CLI-vel.

    az login
    
  2. Ezután telepítse a parancssori felület legújabb Azure Container Apps-bővítményét.

    az extension add --name containerapp --upgrade
    
  3. Ha nincs saját GitHub-adattára, hozzon létre egyet egy mintából.

    1. Új adattár létrehozásához lépjen a következő helyre:
    2. Nevezze el az adattárat my-container-app.
  4. Klónozza az adattárat a helyi gépre.

    git clone https://github.com/<YOUR_GITHUB_ACCOUNT_NAME>/my-container-app.git
    

Tárolóalkalmazás létrehozása engedélyezett felügyelt identitással

Hozza létre a tárolóalkalmazást a az containerapp up következő lépésekben található paranccsal. Ez a parancs létrehozza az Azure-erőforrásokat, létrehozza a tárolórendszerképet, tárolja a lemezképet egy beállításjegyzékben, és üzembe helyezi egy tárolóalkalmazásban.

Az alkalmazás létrehozása után hozzáadhat egy felügyelt identitást az alkalmazáshoz, és hozzárendelheti az identitást a AcrPull szerepkörhöz, hogy lehetővé tegye az identitás számára a lemezképek lekérését a beállításjegyzékből.

  1. Váltson a klónozott adattár src mappájára.

    cd my-container-app
    cd src
    
  2. Azure-erőforrások létrehozása és tárolóalkalmazás üzembe helyezése a az containerapp up paranccsal.

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. A parancs kimenetében jegyezze fel az Azure Container Registry nevét.

  4. Kérje le a tárolóregisztrációs adatbázis teljes erőforrás-azonosítóját.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    Cserélje le a <ACR_NAME> elemet a tárolójegyzék nevére.

  5. Felügyelt identitás engedélyezése a tárolóalkalmazáshoz.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned
    

    Jegyezze fel a felügyelt identitás egyszerű azonosítóját a parancs kimenetében.

  6. Rendelje hozzá az AcrPull Azure Container Registry szerepkörét a tárolóalkalmazás felügyelt identitásához.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Cserélje le <MANAGED_IDENTITY_PRINCIPAL_ID> a felügyelt identitás egyszerű azonosítójára és <ACR_RESOURCE_ID> az Azure Container Registry erőforrás-azonosítójára.

  7. Konfigurálja a tárolóalkalmazást úgy, hogy a felügyelt identitás használatával lekérje a rendszerképeket az Azure Container Registryből.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Cserélje le <ACR_NAME> az Azure Container Registry nevére.

Titkos kódok konfigurálása a GitHub-adattárban

A GitHub-munkafolyamathoz egy titkos kódra van szükség, amely az Azure-ral való hitelesítéshez szükséges AZURE_CREDENTIALS . A titkos kód tartalmazza a tárolóalkalmazást és a tárolóregisztrációs adatbázist tartalmazó erőforráscsoport közreműködői szerepkörrel rendelkező szolgáltatásnév hitelesítő adatait.

  1. Hozzon létre egy szolgáltatásnevet a közreműködői szerepkörrel a tárolóalkalmazást és a tárolóregisztrációs adatbázist tartalmazó erőforráscsoporton.

    az ad sp create-for-rbac \
      --name my-app-credentials \
      --role contributor \
      --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/my-container-app-rg \
      --json-auth \
      --output json
    

    Cserélje le <SUBSCRIPTION_ID> az Azure-előfizetés azonosítójára. Ha a tárolóregisztrációs adatbázis egy másik erőforráscsoportban található, adja meg mindkét erőforráscsoportot a --scopes paraméterben.

  2. Másolja ki a JSON-kimenetet a parancsból.

  3. A GitHub-adattárban keresse meg a , és válassza az > lehetőséget.

  4. Adja meg AZURE_CREDENTIALS a nevet, és illessze be a JSON-kimenet tartalmát értékként.

  5. Válassza az Add secret (Titkos kód hozzáadása) lehetőséget.

GitHub Actions-munkafolyamat létrehozása

  1. A GitHub-adattárban lépjen a Műveletek elemre, és válassza az Új munkafolyamat lehetőséget.

  2. Válassza a Munkafolyamat beállítása lehetőséget.

  3. Illessze be a következő YAML-et a szerkesztőbe.

    name: Azure Container Apps Deploy
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
          - uses: actions/checkout@v3
    
          - name: Log in to Azure
            uses: azure/login@v1
            with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
          - name: Build and deploy Container App
            uses: azure/container-apps-deploy-action@v1
            with:
              appSourcePath: ${{ github.workspace }}/src
              acrName: <ACR_NAME>
              containerAppName: my-container-app
              resourceGroup: my-container-app-rg
    

    Cserélje le <ACR_NAME> az Azure Container Registry nevére. Győződjön meg arról, hogy az ág neve és branches értékei megegyeznek appSourcePathcontainerAppNameaz adattár és resourceGroup az Azure-erőforrások értékeivel.

  4. Véglegesítse a főág módosításait.

Egy GitHub Actions-munkafolyamat futtatásának meg kell kezdődnie a tárolóalkalmazás létrehozásához és üzembe helyezéséhez. A folyamat állapotának ellenőrzéséhez lépjen a Műveletek elemre.

Az alkalmazás új változatának üzembe helyezéséhez küldjön le egy új véglegesítést a főágba .