Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 wanneer u een specifieke vertakking in uw opslagplaats doorvoert. 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
- Bouwen vanuit de broncode zonder een Dockerfile en implementeren naar 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.
Afbeeldingen implementeren vanuit niet-ACR-registers
Naast Azure Container Registry (ACR) ondersteunt Azure Container Apps containerinstallatiekopieën die worden gehost in andere registers, zoals GitHub Container Registry (GHCR). In deze sectie wordt getoond hoe u containerafbeeldingen implementeert vanuit GHCR, inclusief openbare en privé-afbeeldingen.
Opmerking
Wanneer u een niet-ACR-register zoals GHCR gebruikt, moet u uw container-app zodanig configureren dat het zich kan verifiëren bij het register, zelfs als de image openbaar is.
Een openbare afbeelding inzetten vanuit GHCR
Als de containerafbeelding openbaar is, kunt u deze uitrollen zonder authenticatiegegevens op te geven. In het volgende voorbeeld ziet u hoe u een openbare image van GHCR implementeert met behulp van de deploy-actie.
Voordat u deze opdracht uitvoert, vervangt u deze door <YOUR-GITHUB-USERNAME> uw werkelijke GitHub-gebruikersnaam.
- 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
Voordat u deze implementeert, configureert u uw container-app om uit GHCR te halen:
az containerapp registry set \
--name my-container-app \
--resource-group my-container-app-rg \
--server ghcr.io
Een privé-image uitrollen vanuit GHCR
Als de afbeelding privé is, moet u authenticatiegegevens opgeven in uw GitHub Actions workflow. Gebruik een persoonlijk GitHub-toegangstoken (PAT) met het read:packages bereik. Sla het token en de gebruikersnaam op als geheimen in uw GitHub-opslagplaats.
- 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 }}
Stel de container-app in om de containerafbeelding op te halen met uw GHCR-inloggegevens.
az containerapp registry set \
--name my-container-app \
--resource-group my-container-app-rg \
--server ghcr.io \
--username <GHCR_USERNAME> \
--password <GHCR_TOKEN>
Vervang <GHCR_USERNAME> respectievelijk <GHCR_TOKEN> uw GitHub-gebruikersnaam en persoonlijke toegangstoken.
Opmerking
Gebruik een unieke tag, zoals de Git Commit SHA (${{ github.sha }}) in plaats van een algemene tag, zoals de meest recente. Zo voorkomt u cachingproblemen en zorgt u ervoor dat nieuwe revisies betrouwbaar worden gemaakt.
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
-
AcrPullDe 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 loginInstalleer vervolgens de nieuwste Azure Container Apps-extensie voor de CLI.
az extension add --name containerapp --upgradeAls 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-appeen 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 srcMaak Azure-resources en implementeer een container-app met de
az containerapp upopdracht.az containerapp up \ --name my-container-app \ --source . \ --ingress externalNoteer 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 tsvVervang
<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-assignedNoteer de principal-id van de beheerde identiteit in de opdrachtuitvoer.
Wijs de
AcrPullrol 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 systemVervang 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 jsonVervang 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--scopesparameter.Kopieer de JSON-uitvoer van de opdracht.
Navigeer in de GitHub-opslagplaats naar Instellingen>geheimenacties> en selecteer Nieuw opslagplaatsgeheim.
Voer
AZURE_CREDENTIALSde 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-rgVervang door
<ACR_NAME>de naam van uw Azure Container Registry. Controleer of de naam van de vertakking onderbranchesen de waarden voorappSourcePath,containerAppNameenresourceGroupovereenkomen 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 .