ASP.NET appcontainerisering och migrering till Azure Kubernetes Service

I den här artikeln får du lära dig hur du containeriserar ASP.NET program och migrerar dem till Azure Kubernetes Service (AKS) med hjälp av verktyget Azure Migrate: App Containerization. Containerinkapsningsprocessen kräver inte åtkomst till din kodbas och ger ett enkelt sätt att containerisera befintliga program. Verktyget fungerar genom att använda körningstillståndet för programmen på en server för att fastställa programkomponenterna och hjälper dig att paketera dem i en containeravbildning. Det containerbaserade programmet kan sedan distribueras i Azure Kubernetes Service (AKS).

Verktyget Azure Migrate: App Containerization stöder för närvarande:

  • Containerisera ASP.NET appar och distribuera dem i Windows-containrar i Azure Kubernetes Service.
  • Containerisera ASP.NET appar och distribuera dem i Windows-containrar i Azure App Service. Läs mer.
  • Containerisera Java-webbappar på Apache Tomcat (på Linux-servrar) och distribuera dem i Linux-containrar på AKS. Läs mer.
  • Containerisera Java-webbappar på Apache Tomcat (på Linux-servrar) och distribuera dem i Linux-containrar i App Service. Läs mer.

Verktyget Azure Migrate: App Containerization hjälper dig att:

  • Identifiera ditt program: Verktyget ansluter via fjärranslutning till de programservrar som kör ditt ASP.NET program och identifierar programkomponenterna. Verktyget skapar en Dockerfile som kan användas för att skapa en containeravbildning för programmet.
  • Skapa containeravbildningen: Du kan inspektera och ytterligare anpassa Dockerfile enligt dina programkrav och använda den för att skapa din programcontaineravbildning. Programcontaineravbildningen skickas till ett Azure Container Registry som du anger.
  • Distribuera till Azure Kubernetes Service: Verktyget genererar sedan de Kubernetes-resursdefinitions-YAML-filer som behövs för att distribuera det containerbaserade programmet till ditt Azure Kubernetes Service-kluster. Du kan anpassa YAML-filerna och använda dem för att distribuera programmet på AKS.

Kommentar

Verktyget Azure Migrate: App Containerization hjälper dig att identifiera specifika programtyper (ASP.NET och Java-webbappar på Apache Tomcat) och deras komponenter på en programserver. Om du vill identifiera servrar och inventeringen av appar, roller och funktioner som körs på lokala datorer använder du Azure Migrate: Identifierings- och utvärderingsfunktioner. Läs mer

Även om alla program inte drar nytta av en rak övergång till containrar utan betydande omarbetning, inkluderar några av fördelarna med att flytta befintliga appar till containrar utan att skriva om:

  • Förbättrad infrastrukturanvändning – Med containrar kan flera program dela resurser och finnas i samma infrastruktur. Detta kan hjälpa dig att konsolidera infrastrukturen och förbättra användningen.
  • Förenklad hantering – Genom att vara värd för dina program på en modern hanterad plattform som AKS och App Service kan du förenkla dina hanteringsmetoder. Du kan uppnå detta genom att dra tillbaka eller minska de infrastrukturunderhålls- och hanteringsprocesser som du traditionellt utför med ägd infrastruktur.
  • Programportabilitet – Med ökad implementering och standardisering av containerspecifikationsformat och plattformar är programportabilitet inte längre ett problem.
  • Anta modern hantering med DevOps – Hjälper dig att införa och standardisera moderna metoder för hantering och säkerhet och övergång till DevOps.

I den här självstudien får du lära dig att:

  • Konfigurera ett Azure-konto.
  • Installera verktyget Azure Migrate: App Containerization.
  • Identifiera ditt ASP.NET program.
  • Skapa containeravbildningen.
  • Distribuera det containerbaserade programmet på AKS.

Kommentar

Självstudier visar den enklaste distributionsvägen för ett scenario så att du snabbt kan konfigurera ett konceptbevis. Självstudierna använder standardalternativ där så är möjligt och visar inte alla möjliga inställningar och sökvägar.

Förutsättningar

Innan du börjar de här självstudierna bör du:

Krav Detaljer
Identifiera en dator som ska installera verktyget En Windows-dator för att kunna installera och köra verktyget Azure Migrate: Containerinkapsling för program. Windows-datorn kan vara en server (Windows Server 2016 eller senare) eller en klientdator (operativsystemet Windows 10), vilket innebär att du även kan köra verktyget på din stationära dator.

När verktyget körs på en Windows-dator måste den ha en nätverksanslutning till servern/den virtuella datorn som ska vara värd för de ASP.NET-program som ska inkapslas i en container.

Se till att det finns 6 GB ledigt utrymme på Windows-datorn som kör verktyget Azure Migrate: Containerinkapsling för program för att lagra programartefakter.

Windows-datorn måste ha åtkomst till Internet, antingen direkt eller via en proxy.

Installera Microsoft Web Deploy-verktyget på datorn som kör containerinkapsling för program och programservern, om dessa inte redan är installerade. Du kan ladda ned verktyget härifrån.
Programservrar Aktivera PowerShell-fjärrkommunikation på programservrarna: Logga in på programservern och följ dessa instruktioner för att aktivera PowerShell-fjärrkommunikation.

Kontrollera att PowerShell version 5.1 eller senare är installerat på programservern. Följ anvisningarna i Installera och konfigurera WMF 5.1 för att ladda ned och installera PowerShell 5.1 på programservern.

Installera Microsoft Web Deploy-verktyget på datorn som kör containerinkapsling för program och programservern, om dessa inte redan är installerade. Du kan ladda ned verktyget härifrån.
ASP.NET program Verktyget stöder för närvarande:
– ASP.NET program som använder Microsoft .NET Framework 3.5 eller senare.
– Programservrar som kör Windows Server 2012 R2 eller senare (programservrar bör köra PowerShell version 5.1).
– Program som körs på Internet Information Services (IIS) 7.5 eller senare.

Verktyget stöder för närvarande inte:
– Program som kräver Windows-autentisering (verktyget för containerinkapsling för program stöder för närvarande inte gMSA).
– Program som är beroende av andra Windows-tjänster som finns utanför IIS.

Förbereda ett Azure-användarkonto

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

När din prenumeration har konfigurerats behöver du ett Azure-användarkonto med:

  • Ägarbehörigheter för Azure-prenumerationen.
  • Behörigheter för att registrera Microsoft Entra-appar.

Om du nyligen skapade ett kostnadsfritt Azure-konto är du ägare av prenumerationen. Om du inte är prenumerationsägare arbetar du med ägaren för att tilldela behörigheterna på följande sätt:

  1. I Azure-portalen söker du efter "prenumerationer" och under Tjänster väljer du Prenumerationer.

    Screenshot of search box to search for the Azure subscription.

  2. På sidan Prenumerationer väljer du den prenumeration där du vill skapa ett Azure Migrate-projekt.

  3. Välj Åtkomstkontroll (IAM) .

  4. Välj Lägg till>rolltilldelning för att öppna sidan Lägg till rolltilldelning.

  5. Tilldela följande roll. Detaljerade steg finns i Tilldela Azure-roller med hjälp av Azure-portalen.

    Inställning Värde
    Roll Ägare
    Tilldela åtkomst till User
    Medlemmar azmigrateuser (i det här exemplet)

    Screenshot of add role assignment page in Azure portal.

  6. Ditt Azure-konto behöver också behörigheter för att registrera Microsoft Entra-appar.

  7. I Azure-portalen går du till Användare av Microsoft Entra-ID>>användare Inställningar.

  8. I Användarinställningar kontrollerar du att Microsoft Entra-användare kan registrera program (inställt på Ja som standard).

    Screenshot of verification in User Settings if users can register Active Directory apps.

  9. Om inställningarna "Appregistreringar" är inställda på "Nej" ber du klientorganisationen/den globala administratören att tilldela den behörighet som krävs. Alternativt kan klientorganisationen/den globala administratören tilldela rollen Programutvecklare till ett konto för att tillåta registrering av Microsoft Entra-appen. Läs mer.

Ladda ned och installera Azure Migrate: Verktyg för appcontainerisering

  1. Ladda ned installationsprogrammet för Azure Migrate: Containerinkapsling för program på en Windows-dator.

  2. Starta PowerShell i administratörsläge och ändra PowerShell-katalogen till mappen som innehåller installationsprogrammet.

  3. Kör installationsskriptet med kommandot

    .\AppContainerizationInstaller.ps1
    

Kommentar

För Windows Server 2022 redigerar du rad 135 och tar bort PowerShell-ISE från funktionslistan eftersom den inte längre stöds.

Starta verktyget AppContainerisering

  1. Öppna en webbläsare på alla datorer som kan ansluta till Windows-datorn som kör verktyget AppContainerisering och öppna verktygets URL: https:// maskinnamn eller IP-adress: 44369.

    Alternativt kan du öppna appen från skrivbordet genom att välja appens genväg.

  2. Om du ser en varning om att anslutningen inte är privat väljer du Avancerat och väljer att gå vidare till webbplatsen. Den här varningen visas eftersom webbgränssnittet använder ett självsignerat TLS/SSL-certifikat.

  3. På skärmen Logga in använder du det lokala administratörskontot på datorn för att logga in.

  4. Välj ASP.NET webbappar som den typ av program som du vill behålla.

  5. Om du vill ange azure-måltjänsten väljer du Containrar i Azure Kubernetes Service.

    Screenshot of default load-up for App Containerization tool.

Kompletta verktygskrav

  1. Godkänn licensvillkoren och läs informationen från tredje part.
  2. Gör följande i verktygswebbappen >Konfigurera förutsättningar:
    • Anslut ivity: Verktyget kontrollerar att Windows-datorn har internetåtkomst. Om datorn använder en proxy:
      • Välj Konfigurera proxy för att ange proxyadressen (i formuläret IP-adress eller FQDN) och lyssnarport.
      • Ange autentiseringsuppgifter om proxyn kräver autentisering.
      • Endast HTTP-proxy stöds.
      • Om du har lagt till proxyinformation eller inaktiverat proxyn och/eller autentiseringen väljer du Spara för att utlösa anslutningskontrollen igen.
    • Installera uppdateringar: Verktyget söker automatiskt efter de senaste uppdateringarna och installerar dem. Du kan också installera den senaste versionen av verktyget manuellt härifrån.
    • Installera Microsoft Web Deploy-verktyget: Verktyget kontrollerar att verktyget Microsoft Web Deploy är installerat på Windows-datorn som kör verktyget Azure Migrate: App Containerization.
    • Aktivera PowerShell-fjärrkommunikation: Verktyget informerar dig om att PowerShell-fjärrkommunikation är aktiverat på de programservrar som kör ASP.NET program som ska containeriseras.

Logga in på Azure

  1. Välj Logga in för att logga in på ditt Azure-konto.

  2. Du behöver en enhetskod för att autentisera med Azure. Om du väljer Logga in öppnas en modal med enhetskoden.

  3. Välj Kopiera kod och logga in för att kopiera enhetskoden och öppna en Azure-inloggningsprompt på en ny webbläsarflik. Om den inte visas kontrollerar du att du har inaktiverat popup-blockeraren i webbläsaren.

    Screenshot of modal showing device code.

  4. På den nya fliken klistrar du in enhetskoden och slutför inloggningen med dina autentiseringsuppgifter för Azure-kontot. Du kan stänga webbläsarfliken när inloggningen är klar och återgå till verktygsskärmen För appcontainerisering.

  5. Välj den Azure-klientorganisation som du vill använda.

  6. Ange den Azure-prenumeration som du vill använda.

Identifiera ASP.NET program

Hjälpverktyget för appcontainerisering ansluter till programservrarna via de angivna autentiseringsuppgifterna och försöker identifiera ASP.NET program som finns på programservrarna.

  1. Ange IP-adressen/FQDN och autentiseringsuppgifterna för den server som kör ASP.NET-programmet som ska användas för fjärranslutning till servern för programidentifiering.

    • De autentiseringsuppgifter som anges måste vara för en lokal administratör (Windows) på programservern.
    • För domänkonton (användaren måste vara administratör på programservern) prefixet användarnamnet med domännamnet i formatet <domän\användarnamn>.
    • Du kan köra programidentifiering för upp till fem servrar i taget.
  2. Välj Verifiera för att kontrollera att programservern kan nås från den dator som kör verktyget och att autentiseringsuppgifterna är giltiga. När valideringen har slutförts visar statuskolumnen statusen Mappad.

    Screenshot for server IP and credentials.

  3. Välj Fortsätt för att starta programidentifiering på de valda programservrarna.

  4. När programidentifieringen har slutförts kan du välja listan över program som ska containeriseras.

    Screenshot for discovered ASP.NET application.

  5. Använd kryssrutan för att välja de program som ska containeriseras.

  6. Ange containernamn: Ange ett namn för målcontainern för varje valt program. Containernamnet ska anges som <name:tag> där taggen används för containeravbildningen. Du kan till exempel ange målcontainerns namn som appname:v1.

Parametrisera programkonfigurationer

Om konfigurationen parameteriseras blir den tillgänglig som en tidsparameter för distributionen. På så sätt kan du konfigurera den här inställningen när du distribuerar programmet i stället för att hårdkoda det till ett specifikt värde i containeravbildningen. Det här alternativet är till exempel användbart för parametrar som databas anslutningssträng.

  1. Välj appkonfigurationer för att granska identifierade konfigurationer.

  2. Markera kryssrutan för att parameterisera de identifierade programkonfigurationerna.

  3. Välj Använd när du har valt de konfigurationer som ska parameteriseras.

    Screenshot for app configuration parameterization ASP.NET application.

Externalisera filsystemberoenden

Du kan lägga till andra mappar som programmet använder. Ange om de ska ingå i containeravbildningen eller ska externaliseras via beständiga volymer på Azure-filresursen. Att använda beständiga volymer fungerar bra för tillståndskänsliga program som lagrar tillstånd utanför containern eller har annat statiskt innehåll lagrat i filsystemet. Läs mer.

  1. Välj Redigera under Appmappar för att granska de identifierade programmapparna. De identifierade programmapparna har identifierats som obligatoriska artefakter som krävs av programmet och kopieras till containeravbildningen.

  2. Välj Lägg till mappar och ange de mappsökvägar som ska läggas till.

  3. Om du vill lägga till flera mappar till samma volym anger du kommaavgränsade värden (,).

  4. Välj Beständiga volymer som lagringsalternativ om du vill att mapparna ska lagras utanför containern på en beständig volym.

  5. Välj Spara när du har granskat programmapparna. Screenshot for app volumes storage selection.

  6. Välj Fortsätt för att gå vidare till containeravbildningsfasen.

Skapa containeravbildning

Viktigt!

Om du använder AKS 1.23+ redigerar du skripten enligt nedan innan du skapar Docker-avbildningen för att säkerställa en sömlös migrering.

Ändra skriptet nedan

# Run entrypoint script.
COPY ./Entryscript.ps1 c:/Entryscript.ps1
ENTRYPOINT powershell c:/Entryscript.ps1

to

# Run entrypoint script.
COPY ["./Entryscript.ps1", "c:/Entryscript.ps1"]
ENTRYPOINT ["powershell", "c:/Entryscript.ps1"]

Följ dessa steg för att skapa en containeravbildning:

  1. Välj Azure Container Registry: Använd listrutan för att välja ett Azure Container Registry som ska användas för att skapa och lagra containeravbildningarna för apparna. Du kan använda ett befintligt Azure Container Registry eller välja att skapa ett nytt med alternativet Skapa nytt register.

    Screenshot for app ACR selection.

  2. Granska Dockerfile: Den Dockerfile som behövs för att skapa containeravbildningarna för varje valt program genereras i början av byggsteget. Välj Granska för att granska Dockerfile. Du kan också lägga till nödvändiga anpassningar i Dockerfile i granskningssteget och spara ändringarna innan du påbörjar byggprocessen.

  3. Utlösargenereringsprocess: Välj de program som du vill skapa avbildningar för och välj Skapa. Om du väljer build startas containeravbildningsversionen för varje program. Verktyget fortsätter att övervaka byggstatusen kontinuerligt och låter dig gå vidare till nästa steg när bygget har slutförts.

  4. Spåra byggstatus: Du kan också övervaka förloppet för byggsteget genom att välja länken Skapa i pågår under statuskolumnen. Länken tar några minuter att vara aktiv när du har utlöst byggprocessen.

  5. När bygget är klart väljer du Fortsätt för att ange distributionsinställningar.

    Screenshot for app container image build completion.

Distribuera den containerbaserade appen i AKS

När containeravbildningen har skapats är nästa steg att distribuera programmet som en container i Azure Kubernetes Service (AKS).

  1. Välj Azure Kubernetes Service Cluster: Ange det AKS-kluster som programmet ska distribueras till.

    • Det valda AKS-klustret måste ha en Windows-nodpool.
    • Klustret måste konfigureras för att tillåta dragning av avbildningar från Azure Container Registry som har valts för att lagra avbildningarna.
      • Kör följande kommando i Azure CLI för att koppla AKS-klustret till ACR.
        az aks update -n <cluster-name> -g <cluster-resource-group> --attach-acr <acr-name>
        
    • Om du inte har något AKS-kluster eller vill skapa ett nytt AKS-kluster att distribuera programmet till kan du välja att skapa på från verktyget genom att välja Skapa nytt AKS-kluster.
      • AKS-klustret som skapas med verktyget skapas med en Windows-nodpool. Klustret konfigureras så att det kan hämta avbildningar från Azure Container Registry som skapades tidigare (om du valde alternativet skapa nytt register).
    • Välj Fortsätt när du har valt AKS-klustret.
  2. Ange hemligt arkiv: Om du hade valt att parametrisera programkonfigurationer anger du det hemliga arkiv som ska användas för programmet. Du kan välja Azure Key Vault- eller App Service-programinställningar för att hantera dina programhemligheter. Läs mer

    • Om du har valt App Service-programinställningar för att hantera hemligheter väljer du Fortsätt.
    • Om du vill använda ett Azure Key Vault för att hantera dina programhemligheter anger du det Azure Key Vault som du vill använda.
      • Om du inte har ett Azure Key Vault eller vill skapa ett nytt Key Vault kan du välja att skapa på från verktyget genom att välja Skapa nytt Azure Key Vault.
      • Verktyget tilldelar automatiskt de behörigheter som krävs för att hantera hemligheter via Key Vault.
  3. Ange Azure-filresurs: Om du hade lagt till fler mappar och valt alternativet Beständiga volymer anger du den Azure-filresurs som ska användas av verktyget Azure Migrate: AppContainerisering under distributionsprocessen. Verktyget skapar nya kataloger i den här Azure-filresursen som ska kopieras över de programmappar som har konfigurerats för beständiga volymlagringar. När programdistributionen är klar rensar verktyget Azure-filresursen genom att ta bort de kataloger som skapats.

    • Om du inte har någon Azure-filresurs eller vill skapa en ny Azure-filresurs kan du välja att skapa på från verktyget genom att välja Skapa nytt lagringskonto och filresurs.
  4. Konfiguration av programdistribution: När du har slutfört stegen ovan måste du ange distributionskonfigurationen för programmet. Välj Konfigurera för att anpassa distributionen för programmet. I konfigurationssteget kan du ange följande anpassningar:

    • Prefixsträng: Ange en prefixsträng som ska användas i namnet för alla resurser som skapas för det containerbaserade programmet i AKS-klustret.
    • SSL-certifikat: Om programmet kräver en https-platsbindning anger du den PFX-fil som innehåller certifikatet som ska användas för bindningen. PFX-filen ska inte vara lösenordsskyddad och den ursprungliga webbplatsen ska inte ha flera bindningar.
    • Replikuppsättningar: Ange antalet programinstanser (poddar) som ska köras i containrarna.
    • Typ av lastbalanserare: Välj Extern om det containerbaserade programmet ska kunna nås från offentliga nätverk.
    • Programkonfiguration: För alla programkonfigurationer som parametriserades anger du de värden som ska användas för den aktuella distributionen.
    • Lagring: För alla programmappar som har konfigurerats för lagring av beständiga volymer anger du om volymen ska delas mellan programinstanser eller bör initieras individuellt med varje instans i containern. Som standard konfigureras alla programmappar på beständiga volymer som delade.
    • Välj Använd för att spara distributionskonfigurationen.
    • Välj Fortsätt för att distribuera programmet.

    Screenshot for deployment app configuration.

  5. Distribuera programmet: När distributionskonfigurationen för programmet har sparats genererar verktyget Kubernetes-distributionens YAML för programmet.

    • Välj Granska för att granska och anpassa Kubernetes-distributionens YAML för programmen.

    • Välj det program som ska distribueras.

    • Välj Distribuera för att starta distributioner för de valda programmen

      Screenshot for app deployment configuration.

    • När programmet har distribuerats kan du välja kolumnen Distributionsstatus för att spåra de resurser som har distribuerats för programmet.

Ladda ned genererade artefakter

Alla artefakter som används för att skapa och distribuera programmet till AKS, inklusive Dockerfile- och Kubernetes YAML-specifikationsfilerna, lagras på den dator som kör verktyget. Artefakterna finns i C:\ProgramData\Microsoft Azure Migrate App Containerization.

En enda mapp skapas för varje programserver. Du kan visa och ladda ned alla mellanliggande artefakter som används i containerprocessen genom att navigera till den här mappen. Mappen, som motsvarar programservern, rensas i början av varje körning av verktyget för en viss server.

Felsöka problem

Om du vill felsöka eventuella problem med verktyget kan du titta på loggfilerna på Windows-datorn som kör verktyget AppContainerisering. Verktygsloggfiler finns i mappen C:\ProgramData\Microsoft Azure Migrate App Containerization\Logs .

Nästa steg

  • Containerisera ASP.NET webbappar och distribuera dem i Windows-containrar i App Service. Läs mer.
  • Containerisera Java-webbappar på Apache Tomcat (på Linux-servrar) och distribuera dem på Linux-containrar i AKS. Läs mer.
  • Containerisera Java-webbappar på Apache Tomcat (på Linux-servrar) och distribuera dem i Linux-containrar i App Service. Läs mer.