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.
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.
Meld u aan bij Azure met de Azure CLI.
az login
Installeer vervolgens de nieuwste Azure Container Apps-extensie voor de CLI.
az extension add --name containerapp --upgrade
Als u geen eigen GitHub-opslagplaats hebt, maakt u er een op basis van een voorbeeld.
- Navigeer naar de volgende locatie om een nieuwe opslagplaats te maken:
- Geef uw opslagplaats
my-container-app
een naam.
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.
Ga naar de src-map van de gekloonde opslagplaats.
cd my-container-app cd src
Maak Azure-resources en implementeer een container-app met de
az containerapp up
opdracht.az containerapp up \ --name my-container-app \ --source . \ --ingress external
Noteer in de uitvoer van de opdracht de naam van het Azure Container Registry.
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.Schakel beheerde identiteit in voor de container-app.
az containerapp identity assign \ --name my-container-app \ --resource-group my-container-app-rg \ --system-assigned
Noteer de principal-id van de beheerde identiteit in de opdrachtuitvoer.
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.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.
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.Kopieer de JSON-uitvoer van de opdracht.
Navigeer in de GitHub-opslagplaats naar Instellingen>geheimenacties> en selecteer Nieuw opslagplaatsgeheim.
Voer
AZURE_CREDENTIALS
de naam in en plak de inhoud van de JSON-uitvoer als de waarde.Selecteer Geheim toevoegen.
Een GitHub Actions-werkstroom maken
Navigeer in de GitHub-opslagplaats naar Acties en selecteer Nieuwe werkstroom.
Selecteer Zelf een werkstroom instellen.
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 onderbranches
en de waarden voorappSourcePath
,containerAppName
enresourceGroup
overeenkomen met de waarden voor uw opslagplaats en Azure-resources.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 .