Övning – Konfigurera din Azure DevOps-miljö
I det här avsnittet konfigurerar du din Azure DevOps-organisation så att den fortsätter med resten av den här modulen och skapar en Azure Kubernetes Service-miljö (AKS) som du vill distribuera ditt program till.
För att uppnå dessa mål kommer du att:
- Lägg till en användare i din Azure DevOps-organisation.
- Konfigurera ditt Azure DevOps-projekt.
- Hantera arbetsflödet med Azure Boards.
- Skapa Azure-resurser med Hjälp av Azure CLI.
- Skapa pipelinevariabler i Azure Pipelines.
- Skapa en tjänstanslutning för att autentisera med Azure.
- Uppdatera kubernetes-distributionsmanifestet.
Lägga till en användare i din organisation
För att slutföra den här modulen krävs en Azure-prenumeration. Du kan komma igång med Azure kostnadsfritt.
Även om det inte är nödvändigt att arbeta med Azure DevOps är en Azure-prenumeration nödvändig för att distribuera till Azure-resurser via Azure DevOps. Om du vill göra processen enklare använder du samma Microsoft-konto för att logga in på både din Azure-prenumeration och din Azure DevOps-organisation.
Om du loggar in på Azure och Azure DevOps med olika Microsoft-konton kan du fortfarande fortsätta genom att lägga till en användare i din DevOps-organisation under det Microsoft-konto som är associerat med din Azure-prenumeration. Mer information finns i Lägga till användare i din organisation eller projekt. När du lägger till användaren väljer du åtkomstnivån Grundläggande.
När du har lagt till användaren med grundläggande åtkomstnivå loggar du ut från Azure DevOps och loggar in igen med det Microsoft-konto som är associerat med din Azure-prenumeration.
Hämta Azure DevOps-projektet
I det här avsnittet kör du en mall för att skapa projektet i Azure DevOps.
Kör mallen
Kör en mall som konfigurerar din Azure DevOps-organisation.
Viktig
Demogeneratorn för Azure DevOps stöds inte längre, men du kan fortfarande använda den för att skapa demomiljöer. Det finns för närvarande ingen ersättning, och dess funktioner eller tillgänglighet kan ändras på vägen.
Hämta och kör ADOGenerator-projektet i Visual Studio eller valfri IDE.
När du uppmanas att ange mallnumret i listan med mallar anger du 40 för Automatisera distributioner med flera containrar till Azure Kubernetes Services med Azure Pipelines och trycker sedan på Retur.
Välj din autentiseringsmetod. Du kan konfigurera och använda en personlig åtkomsttoken (PAT) eller använda enhetsinloggning.
Observera
Om du konfigurerar en PAT måste du auktorisera de nödvändiga omfången. För den här modulen kan du använda Fullständig åtkomst, men i en verklig situation bör du se till att du endast beviljar de nödvändiga omfången.
Ange ditt Azure DevOps-organisationsnamn och tryck sedan på Retur.
Om du uppmanas till det anger du din Azure DevOps PAT och trycker sedan på Retur.
Ange ett projektnamn som Space Game – web – Kubernetes och tryck sedan på Retur.
När projektet har skapats går du till din Azure DevOps-organisation i webbläsaren (på
https://dev.azure.com/<your-organization-name>/) och väljer projektet.
Förgrena lagringsplatsen
Om du inte redan har gjort det, skapa en förgrening av projektet mslearn-tailspin-spacegame-web-kubernetes.
På GitHub går du till lagringsplatsen mslearn-tailspin-spacegame-web-kubernetes .
Välj Fork längst upp till höger på skärmen.
Välj ditt GitHub-konto som ägare och välj sedan Skapa förgrening.
Viktig
Enheten Rensa din Azure DevOps-miljö i den här modulen innehåller viktiga steg för rensning. Vi rekommenderar att du utför de här stegen för att undvika att det tar slut på lediga byggminuter. Även om du inte slutför den här modulen är det viktigt att följa rensningsstegen.
Ange projektets synlighet
Ursprungligen är din förgrening av Space Game-lagringsplatsen på GitHub inställd på offentlig medan projektet som skapats av Azure DevOps-mallen är inställt på privat. En offentlig lagringsplats på GitHub kan nås av vem som helst, medan en privat lagringsplats endast är tillgänglig för dig och de personer som du väljer att dela den med. På samma sätt ger offentliga projekt i Azure DevOps skrivskyddad åtkomst till icke-autentiserade användare, medan privata projekt kräver att användarna beviljas åtkomst och autentiseras för att få åtkomst till tjänsterna.
För närvarande är det inte nödvändigt att ändra någon av dessa inställningar i den här modulen. För dina personliga projekt måste du dock fastställa den synlighet och åtkomst som du vill bevilja andra. Om projektet till exempel är öppen källkod kan du välja att göra både din GitHub-lagringsplats och ditt Azure DevOps-projekt offentliga. Om projektet är proprietärt skulle du vanligtvis göra både din GitHub-lagringsplats och ditt Azure DevOps-projekt privata.
Senare kan följande resurser vara användbara för att avgöra vilket alternativ som är bäst för projektet:
- Använd privata och offentliga projekt
- Ändra projektsynlighet till offentlig eller privat
- Ställa in lagringsplatsens synlighet
Flytta arbetsobjektet till Pågående
I det här steget tilldelar du en arbetsuppgift till dig själv i Azure Boards och flyttar den till tillståndet Doing. I verkliga scenarier skulle du och ditt team skapa arbetsobjekt i början av varje sprint eller arbetst iteration.
När du tilldelar arbetsobjekt får du en checklista att arbeta från och ger andra teammedlemmar insyn i dina framsteg och återstående arbete. Det hjälper också till att upprätthålla begränsningar för pågående arbete (WIP) för att förhindra att teamet tar på sig för mycket arbete samtidigt.
Gå till Boards i Azure DevOps och välj sedan Boards på menyn.
Tilldela arbetsobjektet Skapa flercontainerversion av webbplatsen, som samordnats med Kubernetes, till dig själv genom att välja nedåtpilen längst ned på kortet.
Dra och släpp arbetsobjektet från kolumnen Att göra till kolumnen Doing . Du flyttar uppgiften till kolumnen Klar i slutet av den här modulen när du har slutfört den.
Skapa Azure Kubernetes Service-miljön
I det här steget skapar du nödvändiga Azure Kubernetes Service-resurser för att distribuera den nya containerversionen av webbplatsen.
I den här modulen använder du Azure CLI för att skapa de resurser som krävs för att distribuera och köra ditt program på Azure Kubernetes Service. Azure CLI kan nås från en terminal eller via Visual Studio Code. I den här modulen får du dock åtkomst till Azure CLI från Azure Cloud Shell. Cloud Shell är en webbläsarbaserad gränssnittsupplevelse som finns i molnet och som är förkonfigurerad med Azure CLI för användning med din Azure-prenumeration.
Viktig
För att slutföra övningarna i den här modulen behöver du en egen Azure-prenumeration.
Starta Cloud Shell
Gå till Azure-portalen och logga in.
Välj alternativet 'Cloud Shell' i menyn och välj sedan upplevelse 'Bash' när du blir tillfrågad.
Observera
Cloud Shell kräver att en Azure Storage-resurs bevarar alla filer som du skapar i Cloud Shell. När du först öppnar Cloud Shell uppmanas du att skapa en resursgrupp, ett lagringskonto och en Azure Files-resurs. Den här konfigurationen används automatiskt för alla framtida Cloud Shell-sessioner.
Välj en Azure-region
En region refererar till ett eller flera Azure-datacenter som finns i ett geografiskt område. Regioner som östra USA, västra USA och norra Europa är exempel på sådana områden. Varje Azure-resurs, inklusive en App Service-instans, är associerad med en region.
För att förenkla körningen av kommandon börjar du med att ange en standardregion. När du har angett en standardregion använder efterföljande kommandon den regionen som standard, såvida du inte uttryckligen anger en annan region.
Kör följande kommando från Cloud Shell för att visa de regioner som är tillgängliga i din Azure-prenumeration:
az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output tableVälj en region från kolumnen Namn i utdata som är geografiskt nära dig. Du kan till exempel välja eastasia eller westus2.
Kör följande kommando för att ange din standardregion. Ersätt REGION med namnet på den region som du valde tidigare.
az configure --defaults location=<REGION>I det här exemplet anges
westus2som standardregion.az configure --defaults location=westus2
Skapa Bash-variabler
Om du använder Bash-variabler kan konfigurationsprocessen bli enklare och mindre felbenägen. Den här metoden hjälper till att undvika oavsiktliga skrivfel genom att definiera delade textsträngar som variabler som kan användas i hela skriptet.
Generera ett slumptal från Cloud Shell för att förenkla skapandet av globalt unika namn för vissa tjänster i nästa steg.
resourceSuffix=$RANDOMSkapa globalt unika namn för azure containerregistret och Azure Kubernetes Service-instansen. Observera att dessa kommandon använder dubbla citattecken, vilket instruerar Bash att interpolera variablerna med hjälp av den infogade syntaxen.
registryName="tailspinspacegame${resourceSuffix}" aksName="tailspinspacegame-${resourceSuffix}"Skapa en annan Bash-variabel för att lagra namnet på resursgruppen.
rgName='tailspin-space-game-rg'Hitta den senaste AKS-versionen.
az aks get-versionsNotera den senaste versionen.
Skapa Azure-resurser
Observera
I den här handledningen används standardnätverksinställningar i utbildningssyfte. De här inställningarna gör att din webbplats kan nås från Internet. I praktiken kan du dock välja att konfigurera ett virtuellt Azure-nätverk som placerar din webbplats i ett nätverk som inte är internetroutningsbart och endast är tillgängligt för dig och ditt team. Senare kan du konfigurera om nätverket så att webbplatsen blir tillgänglig för användarna.
Kör följande kommando för att skapa en resursgrupp med det namn som du definierade tidigare:
az group create --name $rgNameKör kommandot
az acr createför att skapa ett Azure Container Registry med det namn som du definierade tidigare:az acr create \ --name $registryName \ --resource-group $rgName \ --sku StandardKör kommandot
az aks createför att skapa en AKS-instans med det namn som du definierade tidigare. Ersätt<latest-AKS-version>med den version som du antecknade tidigare.az aks create \ --name $aksName \ --resource-group $rgName \ --enable-addons monitoring \ --kubernetes-version <latest-AKS-version> \ --generate-ssh-keysObservera
Det kan ta 10–15 minuter att slutföra AKS-distributionen.
Skapa en variabel för att lagra ID:t för tjänstens huvudnamn som konfigurerats för AKS-instansen:
clientId=$(az aks show \ --resource-group $rgName \ --name $aksName \ --query "identityProfile.kubeletidentity.clientId" \ --output tsv)Skapa en variabel för att lagra ID:t för Azure Container Registry:
acrId=$(az acr show \ --name $registryName \ --resource-group $rgName \ --query "id" \ --output tsv)Kör kommandot
az acr listför att hämta inloggningsserverns URL för din Azure Container Registry-instans (ACR):az acr list \ --resource-group $rgName \ --query "[].{loginServer: loginServer}" \ --output tableSe till att anteckna inloggningsservern för containerregistret. Du behöver den här informationen senare när du konfigurerar din pipeline. Här är ett exempel:
LoginServer -------------------------------- tailspinspacegame4692.azurecr.ioKör kommandot
az role assignment createför att skapa en rolltilldelning för att auktorisera AKS-klustret att ansluta till Azure Container Registry:az role assignment create \ --assignee $clientId \ --role AcrPull \ --scope $acrId
Viktig
Enheten Rensa din Azure DevOps-miljö i den här modulen innehåller viktiga steg för rensning. Vi rekommenderar att du utför de här stegen för att undvika att det tar slut på lediga byggminuter. Även om du inte slutför den här modulen är det viktigt att följa rensningsstegen.
Skapa en variabelgrupp
I det här avsnittet lägger du till en variabel i pipelinen för att lagra namnet på ditt Azure Container Registry. Du bör definiera namnet på din Azure Container Registry-instans som en variabel i pipelinekonfigurationen istället för att hårdkoda det. Detta gör konfigurationen mer återanvändbar och om namnet på instansen ändras kan du enkelt uppdatera variabeln och utlösa pipelinen utan att behöva ändra konfigurationen.
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Pipelinesoch välj sedan Bibliotek i det vänstra navigeringsfönstret.
Välj variabelgrupperoch välj sedan + variabelgrupp för att lägga till en ny variabelgrupp.
I avsnittet Egenskaper anger du Release för variabelgruppens namn.
Under avsnittet Variabler väljer du Lägg till.
Ange RegistryName som variabelnamn, och ange inloggningsservern för ditt Azure Container Registry som värde, till exempel tailspinspacegame4692.azurecr.io.
Längst upp på sidan väljer du Spara för att spara pipelinevariabeln. Det här är ett exempel på hur din variabelgrupp kan se ut
Skapa tjänstanslutningar
Nästa steg är att skapa tjänstanslutningar som gör att Azure Pipelines kan komma åt dina Azure Container Registry- och Azure Kubernetes Service-instanser. Genom att skapa dessa tjänstanslutningar kan Azure Pipelines skicka dina containrar och instruera AKS-klustret att hämta dem för att uppdatera den distribuerade tjänsten.
Viktig
Kontrollera att du är inloggad på Azure-portalen och Azure DevOps med samma Microsoft-konto.
Skapa en Docker Registry-tjänstanslutning
Logga in på din Azure DevOps-organisation och navigera sedan till projektet.
Välj Projektinställningar i det nedre hörnet på sidan.
Välj Tjänstanslutningar under avsnittet Pipelines.
Välj Ny tjänstanslutningoch välj sedan Docker Registryoch välj sedan Nästa.
Längst upp på sidan väljer du Azure Container Registryoch väljer sedan tjänstens huvudnamn för autentiseringstyp.
Ange följande värden för varje inställning:
Inställning Värde Abonnemang Din Azure-prenumeration Azure-containerregister Välj den du skapade tidigare Namn på tjänstanslutning containerregisteranslutning Kontrollera att kryssrutan för Bevilja åtkomstbehörighet till alla pipelines är markerad.
Välj Spara när du är klar.
Skapa ARM-tjänstanslutning
Nu ska du skapa en Azure Resource Manager-tjänstanslutning för att autentisera med ditt AKS-kluster. Vi använder en ARM-tjänstanslutning i stället för Kubernetes eftersom långlivade token inte längre skapas som standard sedan Kubernetes 1.24. Mer information finns i det här DevOps-blogginlägget: Vägledning för tjänstanslutning för AKS-kunder som använder Kubernetes-uppgifter.
Välj Ny tjänstanslutning, välj Azure Resource Manageroch välj sedan Nästa.
Välj tjänstens huvudnamn (automatiskt)och välj sedan Nästa.
Välj Prenumeration för omfångsnivå.
Ange följande värden för varje inställning.
Inställning Värde Abonnemang Din Azure-prenumeration Resursgrupp Välj den du skapade tidigare Namn på tjänstanslutning Kubernetes-klusteranslutning Kontrollera att kryssrutan för Bevilja åtkomstbehörighet till alla pipelines är markerad.
Välj Spara när du är klar.
Skapa en flödesmiljö
Välj Pipelinesoch välj sedan Miljöer.
Välj Skapa miljö för att skapa en ny miljö.
I fältet Namn anger du Dev.
Välj Ingen i avsnittet Resurs och välj sedan Skapa för att skapa din pipelinemiljö.
Uppdatera Kubernetes-distributionsmanifestet
I det här avsnittet uppdaterar du Kubernetes-manifestet deployment.yml så att det pekar på containerregistret som du skapade tidigare.
Gå till ditt GitHub-konto och välj den lagringsplats som du förgrenade för den här modulen: mslearn-tailspin-spacegame-web-kubernetes.
Öppna filen manifest/deployment.yml i redigeringsläge.
Ändra containeravbildningsreferenserna så att du använder ACR-inloggningsservern. Följande manifest använder tailspinspacegame2439.azurecr.io som exempel.
apiVersion : apps/v1 kind: Deployment metadata: name: web spec: replicas: 1 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web image: tailspinspacegame4692.azurecr.io/web ports: - containerPort: 80 apiVersion : apps/v1 kind: Deployment metadata: name: leaderboard spec: replicas: 1 selector: matchLabels: app: leaderboard template: metadata: labels: app: leaderboard spec: containers: - name: leaderboard image: tailspinspacegame4692.azurecr.io/leaderboard ports: - containerPort: 80Begå ändringarna till din
main-gren.