Share via


Azure Container Apps implementeren met GitHub-acties

Met Azure Container Apps kunt u GitHub Actions gebruiken om revisies naar uw container-app te publiceren. Wanneer doorvoeringen naar uw GitHub-opslagplaats worden gepusht, wordt er een werkstroom geactiveerd waarmee de containerinstallatiekopieën in het containerregister worden bijgewerkt. Azure Container Apps maakt een nieuwe revisie op basis van de bijgewerkte containerinstallatiekopieën.

Wijzigingen in een GitHub-opslagplaats activeren een actie om een nieuwe revisie te maken.

De GitHub Actions-werkstroom wordt geactiveerd door doorvoeringen naar een specifieke vertakking in uw opslagplaats. Wanneer u de werkstroom maakt, bepaalt u welke vertakking de werkstroom activeert.

In dit artikel leest u hoe u een volledig aanpasbare werkstroom maakt. Zie GitHub Actions-werkstroom genereren met Azure CLI om een eenvoudige GitHub Actions-werkstroom te genereren met Azure CLI.

GitHub-actie Azure Container Apps

Als u uw container-app wilt bouwen en implementeren, voegt u de azure/container-apps-deploy-action actie toe aan uw GitHub Actions-werkstroom.

De actie ondersteunt de volgende scenario's:

  • Bouwen vanuit een Dockerfile en implementeren in Container Apps
  • Build from source code without a Dockerfile and deploy to Container Apps. Ondersteunde talen zijn .NET, Java, Node.js, PHP en Python
  • Een bestaande containerinstallatiekopieën implementeren in Container Apps

Voorbeelden van gebruik

Hier volgen enkele veelvoorkomende scenario's voor het gebruik van de actie. Zie de GitHub Marketplace-pagina van de actie voor meer informatie.

Bouwen en implementeren in Container Apps

In het volgende codefragment ziet u hoe u een containerinstallatiekopieën bouwt op basis van broncode en implementeert in 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

De actie maakt gebruik van het Dockerfile om appSourcePath de containerinstallatiekopieën te bouwen. Als er geen Dockerfile wordt gevonden, probeert de actie de containerinstallatiekopieën te bouwen vanuit de broncode in appSourcePath.

Een bestaande containerinstallatiekopieën implementeren in Container Apps

In het volgende fragment ziet u hoe u een bestaande containerinstallatiekopieën implementeert in 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 }}

Belangrijk

Als u een containerinstallatiekopieën in een afzonderlijke stap bouwt, moet u ervoor zorgen dat u een unieke tag zoals de doorvoer-SHA gebruikt in plaats van een stabiele tag, zoals latest. Zie Best practices voor afbeeldingstags voor meer informatie.

Verifiëren met Azure Container Registry

De actie Azure Container Apps moet worden geverifieerd met uw Azure Container Registry om de containerinstallatiekopieën te pushen. De container-app moet ook worden geverifieerd met uw Azure Container Registry om de containerinstallatiekopie op te halen.

Als u installatiekopieën wilt pushen, wordt de actie automatisch geverifieerd met het containerregister dat is opgegeven met acrName behulp van de referenties die zijn opgegeven voor de azure/login actie.

Voor het ophalen van installatiekopieën gebruikt Azure Container Apps beheerde identiteiten (aanbevolen) of beheerdersreferenties voor verificatie met Azure Container Registry. Als u een beheerde identiteit wilt gebruiken, moet de container-app die de actie implementeert, worden geconfigureerd voor het gebruik van een beheerde identiteit. Als u wilt verifiëren met de beheerdersreferenties van het register, stelt u de actie acrUsername en acrPassword invoer in.

Configuratie

U voert de volgende stappen uit om een GitHub Actions-werkstroom te configureren voor implementatie in Azure Container Apps.

  • Een GitHub-opslagplaats voor uw app maken
  • Een container-app maken waarvoor beheerde identiteit is ingeschakeld
  • AcrPull De rol voor Azure Container Registry toewijzen aan de beheerde identiteit van de container-app
  • Geheimen configureren in uw GitHub-opslagplaats
  • Een GitHub Actions-werkstroom maken

Vereisten

Vereiste Instructies
Azure-account Als u nog geen account hebt, maakt u gratis een account. U hebt de machtiging Inzender of Eigenaar voor het Azure-abonnement nodig om door te gaan. Raadpleeg Azure-rollen toewijzen met behulp van Azure Portal voor meer informatie.
GitHub-account Meld u gratis aan.
Azure-CLI Installeer de Azure CLI.

Een GitHub-opslagplaats maken en broncode klonen

Voordat u de werkstroom maakt, moet de broncode voor uw app zich in een GitHub-opslagplaats bevindt.

  1. Meld u aan bij Azure met de Azure CLI.

    az login
    
  2. Installeer vervolgens de nieuwste Azure Container Apps-extensie voor de CLI.

    az extension add --name containerapp --upgrade
    
  3. Als u geen eigen GitHub-opslagplaats hebt, maakt u er een op basis van een voorbeeld.

    1. Navigeer naar de volgende locatie om een nieuwe opslagplaats te maken:
    2. Geef uw opslagplaats my-container-appeen naam.
  4. Kloon de opslagplaats naar uw lokale computer.

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

Een container-app maken waarvoor beheerde identiteit is ingeschakeld

Maak uw container-app met behulp van de az containerapp up opdracht in de volgende stappen. Met deze opdracht maakt u Azure-resources, bouwt u de containerinstallatiekopieën, slaat u de installatiekopieën op in een register en implementeert u deze in een container-app.

Nadat u uw app hebt gemaakt, kunt u een beheerde identiteit toevoegen aan de app en de identiteit toewijzen aan de AcrPull rol, zodat de identiteit installatiekopieën uit het register kan ophalen.

  1. Ga naar de src-map van de gekloonde opslagplaats.

    cd my-container-app
    cd src
    
  2. Maak Azure-resources en implementeer een container-app met de az containerapp up opdracht.

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Noteer in de uitvoer van de opdracht de naam van het Azure Container Registry.

  4. Haal de volledige resource-id van het containerregister op.

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

    Vervang <ACR_NAME> door de naam van uw register.

  5. Schakel beheerde identiteit in voor de container-app.

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

    Noteer de principal-id van de beheerde identiteit in de opdrachtuitvoer.

  6. Wijs de AcrPull rol voor Azure Container Registry toe aan de beheerde identiteit van de container-app.

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

    Vervang door <MANAGED_IDENTITY_PRINCIPAL_ID> de principal-id van de beheerde identiteit en <ACR_RESOURCE_ID> door de resource-id van Azure Container Registry.

  7. Configureer de container-app om de beheerde identiteit te gebruiken om installatiekopieën op te halen uit Azure Container Registry.

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

    Vervang door <ACR_NAME> de naam van uw Azure Container Registry.

Geheimen configureren in uw GitHub-opslagplaats

Voor de GitHub-werkstroom is een geheim AZURE_CREDENTIALS vereist voor verificatie bij Azure. Het geheim bevat de referenties voor een service-principal met de rol Inzender voor de resourcegroep die de container-app en het containerregister bevat.

  1. Maak een service-principal met de rol Inzender in de resourcegroep die de container-app en het containerregister bevat.

    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
    

    Vervang door <SUBSCRIPTION_ID> de id van uw Azure-abonnement. Als uw containerregister zich in een andere resourcegroep bevindt, geeft u beide resourcegroepen op in de --scopes parameter.

  2. Kopieer de JSON-uitvoer van de opdracht.

  3. Navigeer in de GitHub-opslagplaats naar Instellingen> Secrets>Actions en selecteer Nieuw opslagplaatsgeheim.

  4. Voer AZURE_CREDENTIALS de naam in en plak de inhoud van de JSON-uitvoer als de waarde.

  5. Selecteer Geheim toevoegen.

Een GitHub Actions-werkstroom maken

  1. Navigeer in de GitHub-opslagplaats naar Acties en selecteer Nieuwe werkstroom.

  2. Selecteer Zelf een werkstroom instellen.

  3. Plak de volgende YAML in de editor.

    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
    

    Vervang door <ACR_NAME> de naam van uw Azure Container Registry. Controleer of de naam van de vertakking onder branches en de waarden voor appSourcePath, containerAppNameen resourceGroup overeenkomen met de waarden voor uw opslagplaats en Azure-resources.

  4. Voer de wijzigingen door in de hoofdbranch .

Een GitHub Actions-werkstroomuitvoering moet beginnen met het bouwen en implementeren van uw container-app. Als u de voortgang wilt controleren, gaat u naar Acties.

Als u een nieuwe revisie van uw app wilt implementeren, pusht u een nieuwe doorvoering naar de hoofdbranch .