Delen via


Kan geen installatiekopieën ophalen van Azure Container Registry naar Azure Web App

Dit artikel bevat richtlijnen voor het oplossen van de meest voorkomende fouten die kunnen optreden wanneer u installatiekopieën ophaalt uit een Azure-containerregister naar Azure Web App.

Symptomen en eerste probleemoplossing

U kunt het beste beginnen met het oplossen van problemen door de status van het containerregister te controleren.

Voer de volgende opdracht uit om de status van het containerregister te controleren:

az acr check-health --name <myregistry> --ignore-errors --yes

Als er een probleem wordt gedetecteerd, bevatten de resultaten een foutcode en beschrijving. Zie de naslaginformatie over statuscontrole voor meer informatie over deze fouten en mogelijke oplossingen.

Notitie

Als u helm-gerelateerde of notary-gerelateerde fouten ontvangt, betekent dit niet dat uw Container Registry of AKS niet werkt of een probleem heeft. Het geeft alleen aan dat Helm of Notary niet is geïnstalleerd of dat Azure CLI niet compatibel is met de momenteel geïnstalleerde versie van Helm of Notary.

Identificeer vervolgens het pull-gerelateerde foutbericht dat essentieel is voor het oplossen van problemen:

  1. Meld u aan bij het Azure-portaal.
  2. Selecteer in uw web-app het implementatiecentrumlogboek>. Selecteer de doorvoering om de logboekdetails weer te geven. U kunt de logboeken voor het pull-proces voor afbeeldingen ook in realtime bekijken door de logboekstream in de sectie Bewaking te controleren.

De volgende secties helpen u bij het oplossen van de meest voorkomende fouten die worden weergegeven in de web-app-logboeken.

Fout 1: Niet geautoriseerd

Head \" https://<acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": unauthorized

Oplossing voor verificatie op basis van beheerders

De fout 'niet geautoriseerd' kan worden veroorzaakt door onjuiste beheerdersreferenties. Dit omvat de aanmeldingsserver, gebruikersnaam of wachtwoord die u hebt geconfigureerd in de omgevingsvariabelen van de web-app.

Volg deze stappen om het probleem op te lossen:

  1. Navigeer in Azure Portal naar uw registercontainer. Selecteer toegangssleutels in de sectie Instellingen. Controleer de beheerdersreferentieinstellingen van de aanmeldingsserver, gebruikersnaam en wachtwoord.
  2. Navigeer naar uw web-app. Selecteer omgevingsvariabelen in de sectie Instellingen.
  3. Zorg ervoor dat de drie variabelen die zijn geconfigureerd voor het containerregister (aanmeldingsserver, gebruikersnaam, wachtwoord) overeenkomen met de instellingen voor beheerdersreferenties in de registercontainer.

Oplossing voor verificatie op basis van beheerde identiteit

Wanneer u de verificatie op basis van beheerde identiteiten van Azure Web App gebruikt, moet de Microsoft.ContainerRegistry/registries/pull/read machtiging worden toegewezen aan de beheerde identiteit om de pull-actie uit te voeren.

De ingebouwde Azure-rollen die de Microsoft.ContainerRegistry/registries/pull/read machtiging bevatten, zijn het volgende:

  • AcrPull
  • AcrPush
  • ReaderContributor
  • Eigenaar

Zie Azure Container Registry-rollen en -machtigingen voor meer informatie.

Wanneer u een pull-bewerking start vanuit het containerregister, wordt de rol AcrPull automatisch toegewezen aan de beheerde identiteit van Azure Web App. U hoeft geen machtigingen handmatig toe te voegen. U moet er echter voor zorgen dat het maken van de roltoewijzing niet wordt geblokkeerd door bijvoorbeeld een Azure-beleid. Controleer ook of de roltoewijzing niet is verwijderd.

Fout 2: Manifest getagd op <tag> is niet gevonden

DockerApiException : Docker API responded with status code=NotFound, response={"message":"manifest for <acr-name>.azurecr.io/<repository>:<tag> not found: manifest unknown: manifest tagged by \"<tag>\" is not found"}

Oplossing: Zorg ervoor dat de tag bestaat

Het foutbericht geeft aan dat de tag die is gekoppeld aan de afbeelding die u probeert op te halen, niet is gevonden. Zorg ervoor dat de tag bestaat in de bijbehorende opslagplaats en het bijbehorende register.

Als u Azure CLI wilt gebruiken om de tags in de bijbehorende opslagplaats en het register te vinden, voert u de volgende opdracht uit:

az acr repository show-tags -n <ContainerRegistryName> --repository <RepositoryName>

Als u Azure Portal wilt gebruiken om de tags te vinden die zich in de bijbehorende opslagplaats en het register bevinden, voert u de volgende stappen uit:

Navigeer naar de registercontainer. Onder Services selecteert u Opslagplaatsen, opent u de bijbehorende opslagplaats en controleert u de lijst met tags.

Notitie

De opdracht az acr repository show-tags of het controleren van de opslagplaatsen uit Azure Portal werkt alleen als de netwerkregels van het containerregister dit toestaan.

Fout 3: Client met IP is geen toegang toegestaan

DockerApiException: Docker API responded with status code=InternalServerError, response={"message":"Head \"https:// <acr-name>.azurecr.io/v2/<repository>/manifests/<tag>\": denied: client with IP '<web-app-outbound-ip>' is not allowed access. Refer https://aka.ms/acr/firewall to grant access."}

Oplossing 1: Zorg ervoor dat de ingebouwde firewall van het containerregister het IP-adres van uw apparaat toestaat

Standaard accepteert een containerregister verbindingen via internet vanuit alle netwerken. Het containerregister heeft een ingebouwde firewall die de toegang tot specifieke IP-adressen of CIDR's kan beperken of de toegang tot openbare netwerken volledig kan uitschakelen.

Dit probleem kan optreden als de IP-adressen van uw web-app worden geblokkeerd door de ingebouwde firewall van het containerregister.

U kunt dit probleem oplossen door ervoor te zorgen dat de ingebouwde firewall de uitgaande IP-adressen van de web-app toestaat die de installatiekopie moet ophalen.

Voer de volgende stappen uit om de uitgaande IP-adressen van de web-app te vinden:

  1. Navigeer in Azure Portal naar uw web-app.
  2. Zoek op de pagina Overzicht het uitgaande IP-adres en selecteer Meer weergeven om de volledige lijst met uitgaande IP-adressen op te halen

Zie Uitgaande IP-adressen zoeken in Azure-app Service om azure CLI te gebruiken om de uitgaande IP-adressen van de web-app te vinden.

Oplossing 2: Integratie van virtuele netwerken configureren voor de web-app

Als u de openbare netwerktoegang volledig moet uitschakelen of alleen geselecteerde netwerken in het containerregister wilt toestaan zonder de IP-adressen van de web-app handmatig toe te voegen, kunt u de installatiekopie ook privé ophalen. Als u privéinstallatiekopieën wilt ophalen, moet u het containerregister configureren met behulp van een privé-eindpunt en virtuele netwerkintegratie inschakelen voor de web-app.

U kunt de integratie van virtuele netwerken naast de web-app configureren door de volgende stappen uit te voeren:

  1. Navigeer in Azure Portal naar uw web-app en selecteer Netwerken.

  2. Configureer onder De configuratie van uitgaand verkeer de optie Integratie van virtueel netwerk toevoegen, en geef vervolgens het abonnement, het virtuele netwerk en het subnet op.

  3. Controleer op de pagina Configuratie van het virtuele netwerk of de pull-optie containerinstallatiekopie is geselecteerd.

    Schermopname van de pull-optie containerinstallatiekopie.

Als u de installatiekopie via het virtuele netwerk wilt ophalen, moet u pull-installatiekopie via VNet inschakelen in het Implementatiecentrum van de web-app. Als het containerregister de openbare toegang heeft uitgeschakeld of is ingesteld op specifieke netwerken, ontvangt u mogelijk het bericht 'Kan ACR-tags niet laden - mislukt', zoals wordt weergegeven in het volgende voorbeeld. Deze fout wordt verwacht in dit scenario. Als dit gebeurt, zijn de vervolgkeuzelijsten voor Afbeelding en Tag niet beschikbaar. U moet de afbeelding en tag handmatig invoeren.

Schermopname van het foutbericht ACR-tags kan niet worden geladen.

Volgende stappen

Als dit probleem niet wordt opgelost met deze richtlijnen voor probleemoplossing, kunt u het volgende overwegen:

Controleer de netwerkbeveiligingsgroepen en routetabellen die zijn gekoppeld aan uw subnetten. Als een virtueel apparaat, zoals een firewall, het verkeer tussen subnetten beheert, controleert u de firewall en de bijbehorende toegangsregels.

Gebruik de Kudu-service voor aanvullende probleemoplossing. U kunt verbinding maken met de Kudu-service. Gebruik bijvoorbeeld Bash om DNS-omzetting te testen door deze uit te voeren nslookup <acr-name>.azurecr.ioof de connectiviteit te controleren met behulp van tcpping <acr-name>.azurecr.io.

Contacteer ons voor hulp

Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.