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 aktivuje potvrzením 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 je 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í akce. 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čnou značku, jako je sha potvrzení, místo stabilní značky, jako je latest. Další informace najdete v tématu Osvědčené postupy pro značky 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.

Pokud chcete nasdílit image, akce se automaticky ověří v registru kontejneru zadaném pomocí acrName přihlašovacích údajů zadaných pro danou azure/login akci.

K vyžádání imagí používá Služba Azure Container Apps k ověření ve službě Azure Container Registry 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 vstupy a acrPassword akce.

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ření aplikace 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 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ření aplikace kontejneru s povolenou spravovanou identitou

Pomocí příkazu v následujícím postupu vytvořte aplikaci az containerapp up kontejneru. 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řejděte do složky src klonovaného úložiště.

    cd my-container-app
    cd src
    
  2. Vytvořte prostředky Azure a pomocí příkazu nasaďte aplikaci kontejneru.az containerapp up

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Ve výstupu příkazu si poznamenejte název služby Azure Container Registry.

  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. Povolte spravovanou identitu pro aplikaci kontejneru.

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

    Poznamenejte si ID objektu zabezpečení spravované identity ve výstupu příkazu.

  6. AcrPull Přiřaďte roli služby Azure 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 objektu zabezpečení spravované identity a <ACR_RESOURCE_ID> ID prostředku služby Azure Container Registry.

  7. Nakonfigurujte aplikaci kontejneru tak, aby používala spravovanou identitu k načtení imagí ze služby Azure Container Registry.

    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 služby Azure Container Registry.

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. Tajný klíč obsahuje přihlašovací údaje pro instanční objekt s rolí Přispěvatel ve skupině prostředků obsahující aplikaci kontejneru a registr kontejneru.

  1. Vytvořte instanční objekt s rolí Přispěvatel ve skupině prostředků, která obsahuje aplikaci kontejneru a registr kontejneru.

    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 Části Akce tajných kódů> nastavení>a vyberte Nový tajný klíč ú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.

Spuštění pracovního postupu GitHub Actions by mělo začít sestavovat a nasazovat aplikaci kontejneru. 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í.