Sdílet prostřednictvím


Nasazení do Azure Container Apps pomocí nástroje GitHub Actions

Azure Container Apps umožňuje použít GitHub Actions k publikování revizí do vaší aplikace kontejneru. Při odesílání potvrzení do úložiště GitHub se aktivuje pracovní postup, který aktualizuje image kontejneru v registru kontejneru. Azure Container Apps vytvoří novou revizi na základě aktualizované image kontejneru.

Změny v úložišti GitHubu aktivují akci, která vytvoří novou revizi.

Pracovní postup GitHub Actions se spustí při provedení potvrzení do konkrétní větve ve vašem úložišti. Při vytváření pracovního postupu se rozhodnete, která větev pracovní postup aktivuje.

V tomto článku se dozvíte, jak vytvořit plně přizpůsobitelný pracovní postup. Pokud chcete vygenerovat úvodní pracovní postup GitHub Actions pomocí Azure CLI, přečtěte si téma Generování pracovního postupu GitHub Actions pomocí Azure CLI.

Akce GitHubu pro Azure Container Apps

Pokud chcete sestavit a nasadit aplikaci kontejneru, přidejte azure/container-apps-deploy-action akci do pracovního postupu GitHub Actions.

Akce podporuje následující scénáře:

  • Sestavení ze souboru Dockerfile a nasazení do kontejnerových aplikací
  • Sestavte ze zdrojového kódu bez souboru Dockerfile a nasaďte do Container Apps. Mezi podporované jazyky patří .NET, Java, Node.js, PHP a Python.
  • Nasazení existující image kontejneru do Container Apps

Příklady použití

Tady jsou některé běžné scénáře použití operace. Další informace najdete na stránce GitHub Marketplace akce.

Sestavení a nasazení do kontejnerových aplikací

Následující fragment kódu ukazuje, jak sestavit image kontejneru ze zdrojového kódu a nasadit ji do Container Apps.

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

Akce používá k sestavení image kontejneru soubor Dockerfile appSourcePath . Pokud se nenajde žádný soubor Dockerfile, akce se pokusí sestavit image kontejneru ze zdrojového kódu v appSourcePathsouboru .

Nasazení existující image kontejneru do Container Apps

Následující fragment kódu ukazuje, jak nasadit existující image kontejneru do Container Apps.

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 }}

Důležité

Pokud vytváříte image kontejneru v samostatném kroku, ujistěte se, že používáte jedinečný tag, například SHA hash potvrzení, místo stabilního tagu, jako je latest. Další informace najdete v tématu Osvědčené postupy pro značkování obrázků.

Ověřování pomocí služby Azure Container Registry

Aby se image kontejneru odeslala, musí se akce Azure Container Apps ověřit ve službě Azure Container Registry. Aplikace kontejneru se také musí ověřit ve službě Azure Container Registry, aby si stáhla image kontejneru.

Pro nasazení image se akce automaticky autentizuje u registru kontejneru uvedeném v acrName s použitím přihlašovacích údajů poskytnutých pro danou azure/login akci.

Služba Azure Container Apps používá ke stažení obrazů pro ověřování v Azure Container Registry buď spravovanou identitu (doporučeno), nebo přihlašovací údaje správce. Pokud chcete použít spravovanou identitu, musí být aplikace kontejneru, na které se akce nasazuje, nakonfigurovaná tak, aby používala spravovanou identitu. Pokud se chcete ověřit pomocí přihlašovacích údajů správce registru, nastavte acrUsername akce a acrPassword vstupy.

Nasazení obrazů z registrů jiných než ACR

Kromě služby Azure Container Registry (ACR) služba Azure Container Apps podporuje image kontejnerů hostované v jiných registrech, jako je GitHub Container Registry (GHCR). Tato část ukazuje, jak nasadit kontejnerové image z GHCR, včetně veřejných a soukromých image.

Poznámka:

Při použití registru jiného typu než ACR, jako je GHCR, musíte aplikaci kontejneru nakonfigurovat tak, aby se ověřila v registru, i když je image veřejná.

Nasazení veřejné image z GHCR

Pokud je image kontejneru veřejná, můžete ji nasadit bez zadání přihlašovacích údajů pro ověřování. Následující příklad ukazuje, jak nasadit veřejnou image z GHCR pomocí akce nasazení.

Před spuštěním tohoto příkazu nahraďte <YOUR-GITHUB-USERNAME> skutečným uživatelským jménem GitHubu.

- 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

Před nasazením nakonfigurujte aplikaci kontejneru tak, aby načítá z GHCR:

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

Nasazení privátní image z GHCR

Pokud je image soukromá, musíte v pracovním postupu GitHub Actions zadat ověřovací přihlašovací údaje. Použijte osobní přístupový token (PAT) GitHubu s oborem read:packages . Uložte token a uživatelské jméno jako tajné kódy v úložišti GitHub.

- 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 }}

Nakonfigurujte aplikaci kontejneru tak, aby stáhla obraz pomocí přihlašovacích údajů GHCR.

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

Nahraďte <GHCR_USERNAME> svým uživatelským jménem na GitHubu a <GHCR_TOKEN> svým osobním přístupovým tokenem.

Poznámka:

Místo obecné značky, jako je nejnovější, použijte jedinečnou značku, například SHA potvrzení Gitu (${{ github.sha }}). To pomáhá vyhnout se problémům s ukládáním do mezipaměti a zajistit spolehlivé vytváření nových revizí.

Konfigurace

Pomocí následujících kroků nakonfigurujete pracovní postup GitHub Actions pro nasazení do Azure Container Apps.

  • Vytvoření úložiště GitHub pro vaši aplikaci
  • Vytvořte aplikaci kontejneru s povolenou spravovanou identitou
  • AcrPull Přiřazení role služby Azure Container Registry ke spravované identitě aplikace kontejneru
  • Konfigurace tajných kódů v úložišti GitHub
  • Vytvoření pracovního postupu GitHub Actions

Požadavky

Požadavek Pokyny
Účet Azure Pokud ho nemáte, vytvořte si účet zdarma. K pokračování potřebujete oprávnění přispěvatele nebo vlastníka předplatného Azure. Podrobnosti najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal .
Účet GitHubu Zaregistrujte se zdarma.
Azure CLI (příkazový řádek nástroje Azure) Nainstalujte rozhraní příkazového řádku Azure CLI.

Vytvoření úložiště GitHub a klonování zdrojového kódu

Před vytvořením pracovního postupu musí být zdrojový kód aplikace v úložišti GitHub.

  1. Přihlaste se k Azure pomocí Azure CLI.

    az login
    
  2. Dále nainstalujte nejnovější rozšíření Azure Container Apps pro rozhraní příkazového řádku.

    az extension add --name containerapp --upgrade
    
  3. Pokud nemáte vlastní úložiště GitHub, vytvořte si ho z ukázky.

    1. Přejděte do následujícího umístění a vytvořte nové úložiště:
    2. Pojmenujte své úložiště my-container-app.
  4. Naklonujte si úložiště na místní počítač.

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

Vytvořte aplikaci kontejneru s povolenou spravovanou identitou

Pomocí příkazu az containerapp up vytvořte kontejnerovou aplikaci v následujícím postupu. Tento příkaz vytvoří prostředky Azure, sestaví image kontejneru, uloží image do registru a nasadí do aplikace kontejneru.

Po vytvoření aplikace můžete do aplikace přidat spravovanou identitu a přiřadit jí identitu AcrPull , aby identita mohla načítat image z registru.

  1. Přepněte do složky src klonovaného úložiště:

    cd my-container-app
    cd src
    
  2. Pomocí příkazu vytvořte prostředky Azure a nasaďte aplikaci kontejneruaz containerapp up:

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    

    Návod

    Pokud sestavení selže s chybou úložiště Debian, ujistěte se, že používáte nejnovější verzi Azure CLI a rozšíření containerapp spuštěním příkazu az extension add --name containerapp --upgrade. Případně přidejte do projektu soubor Dockerfile, abyste mohli mít větší kontrolu nad sestavením.

  3. Ve výstupu příkazu si poznamenejte název registru kontejneru Azure.

  4. Získejte úplné ID prostředku registru kontejneru:

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

    <ACR_NAME> nahraďte názvem vašeho registru.

  5. Povolení spravované identity pro aplikaci kontejneru:

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

    Poznamenejte si principální ID spravované identity ve výstupu příkazu.

  6. AcrPull Přiřaďte roli služby Container Registry spravované identitě aplikace kontejneru:

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

    Nahraďte <MANAGED_IDENTITY_PRINCIPAL_ID> ID hlavního objektu spravované identity a <ACR_RESOURCE_ID> ID prostředku služby Container Registry.

  7. Nakonfigurujte aplikaci kontejneru tak, aby používala spravovanou identitu k načtení imagí z registru kontejneru:

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

    Nahraďte <ACR_NAME> názvem vašeho registru kontejneru Azure.

Konfigurace tajných kódů v úložišti GitHub

Pracovní postup GitHubu vyžaduje tajný kód pojmenovaný AZURE_CREDENTIALS k ověření v Azure. Tajemství obsahuje přihlašovací údaje pro služební účet s rolí Přispěvatel ve skupině prostředků, která zahrnuje aplikaci kontejneru a registr kontejneru.

  1. Vytvořte služební objekt s rolí Přispěvatel ve skupině prostředků, která obsahuje kontejnerovou aplikaci a registr kontejnerů.

    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
    

    Nahraďte <SUBSCRIPTION_ID> ID vašeho předplatného Azure. Pokud je registr kontejneru v jiné skupině prostředků, zadejte obě skupiny prostředků v parametru --scopes .

  2. Zkopírujte výstup JSON z příkazu.

  3. V úložišti GitHub přejděte do Nastavení>Tajné klíče>Akce a vyberte Nové tajemství úložiště.

  4. Jako název zadejte AZURE_CREDENTIALS název a jako hodnotu vložte obsah výstupu JSON.

  5. Vyberte Add secret (Přidat tajný kód).

Vytvoření pracovního postupu GitHub Actions

  1. V úložišti GitHub přejděte na Akce a vyberte Nový pracovní postup.

  2. Vyberte Nastavit pracovní postup sami.

  3. Do editoru vložte následující YAML.

    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
    

    Nahraďte <ACR_NAME> názvem služby Azure Container Registry. Potvrďte, že název větve v části branches a hodnoty pro appSourcePath, containerAppNamea resourceGroup odpovídá hodnotám pro vaše úložiště a prostředky Azure.

  4. Potvrďte změny do hlavní větve.

Kroky pracovního postupu GitHub Actions by měly začít sestavovat a nasazovat vaši kontejnerovou aplikaci. Pokud chcete zkontrolovat jeho průběh, přejděte na Akce.

Pokud chcete nasadit novou revizi aplikace, nasdílejte do hlavní větve nové potvrzení.