Cvičení – nastavení prostředí Azure DevOps

Dokončeno

V této části nakonfigurujete organizaci Azure DevOps tak, aby pokračovala ve zbývající části tohoto modulu, a vytvoříte prostředí Azure Kubernetes Service (AKS) pro nasazení aplikace.

Abyste dosáhli těchto cílů, budete:

  • Přidejte uživatele do vaší organizace Azure DevOps.
  • Nastavte projekt Azure DevOps.
  • Spravujte pracovní postup pomocí Azure Boards.
  • Vytváření prostředků Azure pomocí Azure CLI
  • Vytvořte proměnné kanálu v Azure Pipelines.
  • Vytvořte připojení ke službě a ověřte se v Azure.
  • Aktualizujte manifest nasazení Kubernetes.

Přidání uživatele do organizace

K dokončení tohoto modulu se vyžaduje předplatné Azure. S Azure můžete začít zdarma.

I když není nutné pracovat s Azure DevOps, předplatné Azure je nezbytné k nasazení do prostředků Azure prostřednictvím Azure DevOps. Pokud chcete proces usnadnit, přihlaste se ke svému předplatnému Azure i k organizaci Azure DevOps pomocí stejného účtu Microsoft.

Pokud se přihlásíte k Azure a Azure DevOps pomocí různých účtů Microsoft, můžete pokračovat přidáním uživatele do vaší organizace DevOps pod účtem Microsoft přidruženým k vašemu předplatnému Azure. Další podrobnosti najdete v tématu Přidání uživatelů do organizace nebo projektu . Při přidávání uživatele vyberte úroveň základního přístupu.

Po přidání uživatele s úrovní základního přístupu se odhlaste z Azure DevOps a znovu se přihlaste pomocí účtu Microsoft přidruženého k vašemu předplatnému Azure.

Získání projektu Azure DevOps

V této části spustíte šablonu pro vytvoření projektu v Azure DevOps.

Spustit šablonu

Spuštěním šablony nastavte projekt Azure DevOps pro tento modul:

Na portálu Azure DevOps Demo Generator spusťte šablonu pomocí následujícího postupu:

  1. Vyberte Přihlásit se a odsouhlaste podmínky použití.

  2. Na stránce Vytvořit nový projekt vyberte svoji organizaci Azure DevOps a zadejte název projektu, například Space Game – web – Kubernetes.

    Screenshot of the Azure DevOps Demo Generator showing the process to create the project.

  3. Vyberte Ano, chci vytvořit fork tohoto úložiště a pak autorizovat. Pokud se zobrazí okno, udělte oprávnění pro přístup k vašemu účtu GitHub.

    Důležité

    Výběrem této možnosti je potřeba, aby se šablona připojila k úložišti GitHub. Zvolte ho, i když jste už vytvořili fork úložiště Space Game , protože šablona bude používat váš stávající fork.

  4. Vyberte Vytvořit projekt a počkejte, až se šablona dokončí, což může trvat několik minut.

  5. Výběrem možnosti Přejít k projektu získáte přístup k projektu v Azure DevOps.

Důležité

Lekce Vyčištění prostředí Azure DevOps v tomto modulu zahrnuje zásadní kroky pro vyčištění. Doporučujeme provést tyto kroky, abyste se vyhnuli volnému počtu minut sestavení. I když tento modul nedokončíte, je důležité postupovat podle kroků čištění.

Nastavení viditelnosti projektu

Na začátku je váš fork úložiště Space Game na GitHubu nastavený na veřejný, zatímco projekt vytvořený šablonou Azure DevOps je nastavený na privátní. K veřejnému úložišti na GitHubu může přistupovat kdokoli, zatímco soukromé úložiště je přístupné jenom vám a lidem, se kterými ho chcete sdílet. Podobně veřejné projekty v Azure DevOps poskytují přístup jen pro čtení neověřených uživatelům, zatímco soukromé projekty vyžadují, aby měli uživatelé udělený přístup a ověřili přístup ke službám.

V tuto chvíli není nutné upravovat žádná z těchto nastavení pro účely tohoto modulu. U vašich osobních projektů však musíte určit viditelnost a přístup, který chcete udělit ostatním. Pokud je váš projekt například opensourcový, můžete se rozhodnout, že své úložiště GitHub i projekt Azure DevOps zveřejníte. Pokud je váš projekt proprietární, obvykle byste své úložiště GitHub i projekt Azure DevOps mohli nastavit jako soukromé.

Později můžete najít následující zdroje informací, které vám pomůžou určit, která možnost je pro váš projekt nejvhodnější:

Přesunutí pracovní položky do stavu Doing (Probíhá)

V tomto kroku přiřadíte pracovní položku sami sobě v Azure Boards a přesunete ji do stavu Probíhá . V reálných scénářích byste vy a váš tým vytvořili pracovní položky na začátku každého sprintu nebo iterace práce.

Přiřazení pracovních položek vám poskytne kontrolní seznam, ze kterého můžete pracovat, a ostatním členům týmu poskytne přehled o průběhu a zbývající práci. Pomáhá také vynucovat limity probíhající práce (WIP), aby se týmu zabránilo v tom, aby najednou převzal příliš mnoho práce.

  1. Přejděte na Boards v Azure DevOps a pak v nabídce vyberte Boards .

    Screenshot of Azure DevOps showing the location of the Boards menu.

  2. Přiřaďte sobě pracovní položku Vytvořit vícekontenerovou verzi webu orchestrovanou pomocí pracovní položky Kubernetes tak, že vyberete šipku dolů umístěnou v dolní části karty.

    Screenshot of Azure Boards showing the location of the down arrow.

  3. Přetáhněte pracovní položku ze sloupce Úkolů do sloupce Probíhá . Úkol přesunete na konec tohoto modulu na konec tohoto modulu.

    Screenshot of Azure Boards showing the card in the Doing column.

Vytvoření prostředí Azure Kubernetes Service

V tomto kroku vytvoříte potřebné prostředky služby Azure Kubernetes Service k nasazení nové verze kontejneru webu.

V předchozím modulu vytvořte kanál verze s Azure Pipelines a pomocí webu Azure Portal jste vytvořili prostředky Azure. I když je portál užitečný pro zkoumání možností Azure a provádění základních úloh, vytváření komponent, jako je Azure Kubernetes Service, může být časově náročný proces.

V tomto modulu pomocí Azure CLI vytvoříte prostředky potřebné k nasazení a spuštění aplikace ve službě Azure Kubernetes Service. Azure CLI je možné získat přístup z terminálu nebo přes Visual Studio Code. V tomto modulu ale přistupujete k Azure CLI z Azure Cloud Shellu. Cloud Shell je prostředí založené na prohlížeči hostované v cloudu, které je předem nakonfigurované pomocí Azure CLI pro použití s vaším předplatným Azure.

Důležité

K dokončení cvičení v tomto modulu potřebujete vlastní předplatné Azure.

Spustit Cloud Shell

  1. Přejděte na Web Azure Portal a přihlaste se.

  2. V nabídce vyberte možnost Cloud Shell a po zobrazení výzvy zvolte prostředí Bash .

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

Poznámka:

Cloud Shell vyžaduje, aby prostředek úložiště Azure uchovával všechny soubory, které vytvoříte v Cloud Shellu. Při prvním otevření Cloud Shellu se zobrazí výzva k vytvoření skupiny prostředků, účtu úložiště a sdílené složky Azure Files. Toto nastavení se automaticky použije pro všechny budoucí relace Cloud Shellu.

Výběr oblasti Azure

Oblast odkazuje na jedno nebo více datacenter Azure umístěných v geografické oblasti. Příkladem takových oblastí jsou oblasti, jako jsou USA – východ, USA – západ a Severní Evropa. Každý prostředek Azure, včetně instance služby App Service, je přidružený k oblasti.

Pokud chcete zjednodušit provádění příkazů, začněte nastavením výchozí oblasti. Jakmile nastavíte výchozí oblast, následující příkazy tuto oblast ve výchozím nastavení použijí, pokud explicitně nezadáte jinou oblast.

  1. Spuštěním následujícího příkazu v Cloud Shellu zobrazte seznam oblastí dostupných ve vašem předplatném Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Ve výstupu, který je geograficky blízko vás, vyberte oblast ze sloupce Název. Můžete například zvolit eastasia nebo westus2.

  3. Spuštěním následujícího příkazu nastavte výchozí oblast. Oblast nahraďte názvem oblasti, kterou jste zvolili dříve.

    az configure --defaults location=<REGION>
    

    Tento příklad nastaví westus2 jako výchozí oblast.

    az configure --defaults location=westus2
    

Vytvoření proměnných Bash

Použití proměnných Bash může usnadnit proces instalace a méně náchylný k chybám. Tento přístup pomáhá vyhnout se náhodným překlepům definováním sdílených textových řetězců jako proměnných, které je možné použít ve vašem skriptu.

  1. V Cloud Shellu vygenerujte náhodné číslo, které v dalším kroku zjednodušuje vytváření globálně jedinečných názvů pro určité služby.

    resourceSuffix=$RANDOM
    
  2. Vytvořte globálně jedinečné názvy pro vaši instanci služby Azure Container Registry a Azure Kubernetes Service. Všimněte si, že tyto příkazy používají dvojité uvozovky, které Bash dávají Bash pokyn k interpolaci proměnných pomocí vložené syntaxe.

    registryName="tailspinspacegame${resourceSuffix}"
    aksName="tailspinspacegame-${resourceSuffix}"
    
  3. Vytvořte další proměnnou Bash pro uložení názvu vaší skupiny prostředků.

    rgName='tailspin-space-game-rg'
    
  4. Vyhledejte nejnovější verzi AKS.

    az aks get-versions
    

    Poznamenejte si nejnovější verzi.

Vytvoření zdrojů Azure

Poznámka:

V tomto kurzu se pro účely výuky používají výchozí nastavení sítě. Tato nastavení umožňují přístup k vašemu webu z internetu. V praxi se ale můžete rozhodnout nakonfigurovat virtuální síť Azure, která umístí váš web do sítě, která není směrovatelná internetem a je přístupná jenom vámi a vaším týmem. Později můžete síť překonfigurovat tak, aby byl web dostupný uživatelům.

  1. Spuštěním následujícího příkazu vytvořte skupinu prostředků s názvem, který jste definovali dříve:

    az group create --name $rgName
    
  2. Spuštěním az acr create příkazu vytvořte službu Azure Container Registry s názvem, který jste definovali dříve:

    az acr create \
      --name $registryName \
      --resource-group $rgName \
      --sku Standard
    
  3. Spuštěním az aks create příkazu vytvořte instanci AKS s názvem, který jste definovali dříve. Nahraďte <latest-AKS-version> verzí, kterou jste si poznamenali dříve.

    az aks create \
      --name $aksName \
      --resource-group $rgName \
      --enable-addons monitoring \
      --kubernetes-version <latest-AKS-version> \
      --generate-ssh-keys
    

    Poznámka:

    Dokončení nasazení AKS může trvat 10 až 15 minut.

  4. Vytvořte proměnnou pro uložení ID instančního objektu nakonfigurovaného pro instanci AKS:

    clientId=$(az aks show \
      --resource-group $rgName \
      --name $aksName \
      --query "identityProfile.kubeletidentity.clientId" \
      --output tsv)
    
  5. Vytvořte proměnnou pro uložení ID služby Azure Container Registry:

    acrId=$(az acr show \
      --name $registryName \
      --resource-group $rgName \
      --query "id" \
      --output tsv)
    
  6. Spuštěním az acr list příkazu načtěte adresu URL přihlašovacího serveru pro instanci služby Azure Container Registry (ACR):

    az acr list \
     --resource-group $rgName \
     --query "[].{loginServer: loginServer}" \
     --output table
    

    Nezapomeňte si pro registr kontejneru poznamenat přihlašovací server. Tyto informace budete potřebovat později při konfiguraci kanálu. Tady je příklad:

    LoginServer                      
    --------------------------------
    tailspinspacegame4692.azurecr.io
    
  7. Spuštěním az role assignment create příkazu vytvořte přiřazení role pro autorizaci clusteru AKS pro připojení ke službě Azure Container Registry:

    az role assignment create \
      --assignee $clientId \
      --role AcrPull \
      --scope $acrId
    

Důležité

Lekce Vyčištění prostředí Azure DevOps v tomto modulu zahrnuje zásadní kroky pro vyčištění. Doporučujeme provést tyto kroky, abyste se vyhnuli volnému počtu minut sestavení. I když tento modul nedokončíte, je důležité postupovat podle kroků čištění.

Vytvoření skupiny proměnných

V této části přidáte do kanálu proměnnou pro uložení názvu služby Azure Container Registry. Definování názvu instance služby Azure Container Registry jako proměnné v konfiguraci kanálu se doporučuje před pevným kódováním. Díky tomu je konfigurace opakovaně použitelná a v případě změn instance můžete snadno aktualizovat proměnnou a aktivovat kanál, aniž byste museli měnit konfiguraci.

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Kanály a pak v levém navigačním podokně vyberte Knihovna .

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Vyberte skupiny proměnných a pak vyberte + Skupina proměnných a přidejte novou skupinu proměnných.

  4. V části Vlastnosti zadejte release pro název skupiny proměnných.

  5. V části Proměnné vyberte Přidat.

  6. Zadejte Název registru pro název proměnné a jako hodnotu zadejte přihlašovací server služby Azure Container Registry, například tailspinspacegame4692.azurecr.io.

  7. V horní části stránky vyberte Uložit a uložte proměnnou kanálu. Toto je příklad toho, jak může vaše skupina proměnných vypadat.

    Screenshot of Azure Pipeline showing the variable group. The group contains one variable.

Vytvoření připojení služeb

Dalším krokem je vytvoření připojení služeb, která službě Azure Pipelines umožní přístup k vašim instancím služby Azure Container Registry a Azure Kubernetes Service. Vytvořením těchto připojení služeb může Azure Pipelines odesílat kontejnery a instruovat cluster AKS, aby je načítá, aby aktualizoval nasazenou službu.

Důležité

Ujistěte se, že jste přihlášení k webu Azure Portal a Azure DevOps pomocí stejného účtu Microsoft.

Vytvoření připojení služby Registru Dockeru

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. V dolním rohu stránky vyberte nastavení projektu.

  3. V části Pipelines (Kanály) vyberte připojeníslužby.

  4. Vyberte Nové připojení služby, pak vyberte Registr Dockeru a pak vyberte Další.

  5. V horní části stránky vyberte Azure Container Registry a pak jako typ ověřování vyberte Instanční objekt .

  6. Pro každé nastavení zadejte následující hodnoty:

    Nastavení Hodnota
    Předplatné Vaše předplatné Azure.
    Azure Container Registry Vyberte ten, který jste vytvořili dříve.
    Název připojení služby Připojení container Registry
  7. Ujistěte se, že je zaškrtnuté políčko Udělit přístup všem kanálům .

  8. Až budete hotovi, zvolte tlačítko Uložit.

Vytvoření připojení služby ARM

Teď vytvoříte připojení služby Azure Resource Manager k ověření pomocí clusteru AKS. Místo Kubernetes používáme připojení služby ARM, protože dlouhodobé tokeny se už od Kubernetes 1.24 nevytvořily ve výchozím nastavení. Další podrobnosti najdete v tomto blogovém příspěvku DevOps: Pokyny pro Připojení služby pro zákazníky AKS, kteří používají úlohy Kubernetes.

  1. Vyberte Nové připojení služby, vyberte Azure Resource Manager a pak vyberte Další.

  2. Vyberte Instanční objekt (automatický) a pak vyberte Další.

  3. Vyberte Předplatné pro úroveň rozsahu.

  4. Pro každé nastavení zadejte následující hodnoty.

    Nastavení Hodnota
    Předplatné Vaše předplatné Azure.
    Skupina prostředků Vyberte ten, který jste vytvořili dříve.
    Název připojení služby Připojení clusteru Kubernetes
  5. Ujistěte se, že je zaškrtnuté políčko Udělit přístup všem kanálům .

  6. Až budete hotovi, zvolte tlačítko Uložit.

Vytvoření prostředí kanálu

  1. Vyberte Kanály a pak vyberte Prostředí.

    Screenshot of Azure Pipelines showing the Environments menu option.

  2. Vyberte Vytvořit prostředí a vytvořte nové prostředí.

  3. Do pole Název zadejte Dev.

  4. V části Prostředek vyberte Žádné a pak vyberte Vytvořit a vytvořte prostředí kanálu.

Aktualizace manifestu nasazení Kubernetes

V této části aktualizujete manifest Kubernetes deployment.yml tak, aby odkazovat na registr kontejneru, který jste vytvořili dříve.

  1. Přejděte ke svému účtu GitHub a vyberte úložiště, které jste pro tento modul rozvětvovali: mslearn-tailspin-spacegame-web-kubernetes.

  2. Otevřete soubor manifestů/deployment.yml v režimu úprav.

    Screenshot of GitHub showing the location of the edit mode icon.

  3. Změňte odkazy na image kontejneru tak, aby používaly přihlašovací server ACR. Následující manifest používá jako příklad tailspinspacegame2439.azurecr.io .

    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
    
  4. Potvrďte změny ve vaší main větvi.