Ö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 ditt projekt . När du lägger till användaren väljer du grundläggande åtkomstnivå.
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 mallen för att konfigurera ditt Azure DevOps-projekt för den här modulen:
Från Azure DevOps Demo Generator-portalen följer du dessa steg för att köra mallen:
Välj Logga in och godkänn användningsvillkoren.
På sidan Skapa nytt projekt väljer du din Azure DevOps-organisation och anger ett projektnamn, till exempel Space Game – web – Kubernetes.
Välj Ja, jag vill förgrena den här lagringsplatsen och sedan Auktorisera. Om ett fönster öppnas beviljar du behörighet att komma åt ditt GitHub-konto.
Viktigt!
Du måste välja det här alternativet för att mallen ska kunna ansluta till din GitHub-lagringsplats. Välj det även om du redan har förgrenat lagringsplatsen Space Game eftersom mallen använder din befintliga förgrening.
Välj Skapa projekt och vänta tills mallen har körts klart, vilket kan ta några minuter.
Välj Navigera till projektet för att komma åt projektet i Azure DevOps.
Viktigt!
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 offentligt. 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ända privata och offentliga projekt
- Snabbstart: Gör ditt privata projekt offentligt
- Ange lagringsplatsens synlighet
Flytta arbetsuppgiften till Doing (Utför nu)
I det här steget tilldelar du en arbetsuppgift till dig själv i Azure Boards och flyttar den till tillståndet Doing (Gör). 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 framtvinga pågående arbetsgränser (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 (Tavlor ) på menyn.
Tilldela skapa flercontainerversionen av webbplatsen orkestrerad med Kubernetes-arbetsobjektet 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 (Gör). 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 föregående modul, Skapa en versionspipeline med Azure Pipelines, använde du Azure-portalen för att skapa Azure-resurser. Även om portalen är användbar för att utforska Azure-funktioner och utföra grundläggande uppgifter kan det vara tidskrävande att skapa komponenter som Azure Kubernetes Service.
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.
Viktigt!
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 på menyn och välj sedan Bash-upplevelsen när du uppmanas att göra det.
Kommentar
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 USA, östra, USA, västra och Europa, norra ä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 table
Välj en region i kolumnen Namn i utdata som ligger 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
westus2
som 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=$RANDOM
Skapa 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-versions
Anteckna den senaste versionen.
Skapa Azure-resurser
Kommentar
I den här självstudien 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 $rgName
az acr create
Kör kommandot för att skapa ett Azure Container Registry med det namn som du definierade tidigare:az acr create \ --name $registryName \ --resource-group $rgName \ --sku Standard
az aks create
Kör kommandot fö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-keys
Kommentar
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)
az acr list
Kör kommandot för att hämta inloggningsserverns URL för din Azure Container Registry-instans (ACR):az acr list \ --resource-group $rgName \ --query "[].{loginServer: loginServer}" \ --output table
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.io
az role assignment create
Kör kommandot fö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
Viktigt!
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 för hårdkodning. 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 Pipelines och välj sedan Bibliotek i det vänstra navigeringsfönstret.
Välj Variabelgrupper och välj sedan + Variabelgrupp för att lägga till en ny variabelgrupp.
I avsnittet Egenskaper anger du Version för variabelgruppens namn.
Under avsnittet Variabler väljer du Lägg till.
Ange RegistryName som variabelnamn och för värdet anger du inloggningsservern för Azure Container Registry, till exempel tailspinspacegame4692.azurecr.io.
Överst 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.
Viktigt!
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änstanslutning, välj sedan Docker Registry och välj sedan Nästa.
Längst upp på sidan väljer du Azure Container Registry och sedan Tjänstens huvudnamn som autentiseringstyp.
Ange följande värden för varje inställning:
Inställning Värde Prenumeration Din Azure-prenumeration Azure-containerregister Välj den som du skapade tidigare Namn på tjänstanslutning Container Registry Anslut ion 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 om tjänst Anslut ion för AKS-kunder som använder Kubernetes-uppgifter.
Välj Ny tjänstanslutning, välj Azure Resource Manager och 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 Prenumeration Din Azure-prenumeration Resursgrupp Välj den som du skapade tidigare Namn på tjänstanslutning Kubernetes-kluster Anslut ion Kontrollera att kryssrutan för Bevilja åtkomstbehörighet till alla pipelines är markerad.
Välj Spara när du är klar.
Skapa en pipelinemiljö
Välj Pipelines och 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. I följande manifest används 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: 80
Checka in ändringarna i din
main
gren.