Ćwiczenie — konfigurowanie środowiska usługi Azure DevOps

Ukończone

W tej sekcji skonfigurujesz organizację usługi Azure DevOps, aby kontynuować elementy tego modułu i utworzyć środowisko usługi Azure Kubernetes Service (AKS) w celu wdrożenia aplikacji.

Aby osiągnąć te cele, wykonasz następujące czynności:

  • Dodaj użytkownika do organizacji usługi Azure DevOps.
  • Konfigurowanie projektu usługi Azure DevOps.
  • Zarządzanie przepływem pracy za pomocą usługi Azure Boards.
  • Tworzenie zasobów platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
  • Tworzenie zmiennych potoku w usłudze Azure Pipelines.
  • Utwórz połączenie usługi tto uwierzytelniania za pomocą platformy Azure.
  • Zaktualizuj manifest wdrożenia platformy Kubernetes.

Dodawanie użytkownika do organizacji

Do ukończenia tego modułu wymagana jest subskrypcja platformy Azure. Możesz bezpłatnie rozpocząć pracę z platformą Azure.

Chociaż nie jest to konieczne do pracy z usługą Azure DevOps, subskrypcja platformy Azure jest niezbędna do wdrożenia w zasobach platformy Azure za pośrednictwem usługi Azure DevOps. Aby ułatwić proces, użyj tego samego konta Microsoft, aby zalogować się zarówno do subskrypcji platformy Azure, jak i organizacji usługi Azure DevOps.

Jeśli logujesz się do platformy Azure i usługi Azure DevOps przy użyciu różnych kont Microsoft, nadal możesz kontynuować, dodając użytkownika do organizacji DevOps w ramach konta Microsoft skojarzonego z subskrypcją platformy Azure. Aby uzyskać więcej informacji, zobacz Dodawanie użytkowników do organizacji lub projektu . Podczas dodawania użytkownika wybierz poziom dostępu Podstawowe .

Po dodaniu użytkownika z poziomem dostępu Podstawowe wyloguj się z usługi Azure DevOps i zaloguj się ponownie przy użyciu konta Microsoft skojarzonego z subskrypcją platformy Azure.

Pobieranie projektu usługi Azure DevOps

W tej sekcji uruchomisz szablon, aby utworzyć projekt w usłudze Azure DevOps.

Uruchamianie szablonu

Uruchom szablon, aby skonfigurować projekt usługi Azure DevOps dla tego modułu:

W portalu generatora demonstracyjnego usługi Azure DevOps wykonaj następujące kroki, aby uruchomić szablon:

  1. Wybierz pozycję Zaloguj i zaakceptuj warunki użytkowania.

  2. Na stronie Tworzenie nowego projektu wybierz organizację usługi Azure DevOps i podaj nazwę projektu, taką jak Space Game — web — Kubernetes.

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

  3. Wybierz pozycję Tak, chcę utworzyć rozwidlenie tego repozytorium, a następnie pozycję Autoryzuj. Jeśli zostanie wyświetlone okno, przyznaj uprawnienie dostępu do konta usługi GitHub.

    Ważne

    Wybranie tej opcji jest niezbędne, aby szablon łączył się z repozytorium GitHub. Wybierz go, nawet jeśli repozytorium Space Game zostało już rozwidlenia, ponieważ szablon będzie używać istniejącego rozwidlenia.

  4. Wybierz pozycję Utwórz projekt i poczekaj na zakończenie działania szablonu, co może potrwać kilka minut.

  5. Wybierz pozycję Przejdź do projektu , aby uzyskać dostęp do projektu w usłudze Azure DevOps.

Ważne

Lekcja Czyszczenie środowiska usługi Azure DevOps w tym module obejmuje kluczowe kroki oczyszczania. Zaleca się wykonanie tych kroków, aby uniknąć braku bezpłatnych minut kompilacji. Nawet jeśli nie ukończysz tego modułu, ważne jest, aby wykonać kroki oczyszczania.

Ustawianie widoczności projektu

Początkowo rozwidlenie repozytorium Space Game w usłudze GitHub jest ustawione na publiczne, podczas gdy projekt utworzony przez szablon usługi Azure DevOps jest ustawiony na prywatny. Do repozytorium publicznego w usłudze GitHub można uzyskać dostęp dowolnej osobie, natomiast prywatne repozytorium jest dostępne tylko dla Ciebie i osób, którym chcesz je udostępnić. Podobnie w usłudze Azure DevOps publiczne projekty zapewniają dostęp tylko do odczytu użytkownikom nieuwierzytelnionemu, podczas gdy projekty prywatne wymagają od użytkowników udzielenia dostępu i uwierzytelnienia w celu uzyskania dostępu do usług.

W tej chwili nie jest konieczne zmodyfikowanie żadnego z tych ustawień na potrzeby tego modułu. Jednak w przypadku projektów osobistych musisz określić widoczność i dostęp, który chcesz udzielić innym osobom. Jeśli na przykład projekt jest projektem typu open source, możesz zdecydować się na upublicznienie zarówno repozytorium GitHub, jak i projektu usługi Azure DevOps. Jeśli projekt jest zastrzeżony, zazwyczaj zarówno repozytorium GitHub, jak i projekt usługi Azure DevOps są prywatne.

W dalszej części możesz znaleźć następujące zasoby pomocne podczas określania, która opcja jest najlepsza dla projektu:

Przenoszenie elementu roboczego do stanu Doing (Wykonywanie)

W tym kroku przypiszesz element roboczy do siebie w usłudze Azure Boards i przeniesiesz go do stanu Wykonywanie . W rzeczywistych scenariuszach ty i Twój zespół utworzyliby elementy robocze na początku każdego przebiegu lub iteracji pracy.

Przypisywanie elementów roboczych zapewnia listę kontrolną do pracy i zapewnia innym członkom zespołu wgląd w postęp i pozostałą pracę. Pomaga również wymusić limity pracy w toku (WIP), aby uniemożliwić zespołowi wykonywanie zbyt dużej ilości pracy jednocześnie.

  1. Przejdź do obszaru Boards w usłudze Azure DevOps, a następnie wybierz pozycję Boards z menu.

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

  2. Przypisz do siebie wersję witryny internetowej Utwórz wersję wielu kontenerów z elementem roboczym platformy Kubernetes, wybierając strzałkę w dół znajdującą się w dolnej części karty.

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

  3. Przeciągnij i upuść element roboczy z kolumny Do wykonania do kolumny Robi . Po zakończeniu tego modułu przeniesiesz zadanie do kolumny Done (Gotowe ) na końcu tego modułu.

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

Tworzenie środowiska usługi Azure Kubernetes Service

W tym kroku utworzysz niezbędne zasoby usługi Azure Kubernetes Service w celu wdrożenia nowej wersji kontenera witryny internetowej.

W poprzednim module tworzenie potoku wydania za pomocą usługi Azure Pipelines zostało użyte w witrynie Azure Portal do utworzenia zasobów platformy Azure. Chociaż portal jest przydatny do eksplorowania możliwości platformy Azure i wykonywania podstawowych zadań, tworzenie składników, takich jak usługa Azure Kubernetes Service, może być czasochłonnym procesem.

W tym module użyjesz interfejsu wiersza polecenia platformy Azure, aby utworzyć zasoby wymagane do wdrożenia i uruchomienia aplikacji w usłudze Azure Kubernetes Service. Dostęp do interfejsu wiersza polecenia platformy Azure można uzyskać z poziomu terminalu lub za pośrednictwem programu Visual Studio Code. Jednak w tym module uzyskujesz dostęp do interfejsu wiersza polecenia platformy Azure z poziomu usługi Azure Cloud Shell. Usługa Cloud Shell to środowisko powłoki oparte na przeglądarce hostowane w chmurze, które jest wstępnie skonfigurowane przy użyciu interfejsu wiersza polecenia platformy Azure do użycia z subskrypcją platformy Azure.

Ważne

Do wykonania ćwiczeń w tym module potrzebna jest własna subskrypcja platformy Azure.

Uruchom usługę Cloud Shell

  1. Przejdź do witryny Azure Portal i zaloguj się.

  2. Wybierz opcję Cloud Shell z menu, a następnie wybierz środowisko powłoki Bash po wyświetleniu monitu.

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

Uwaga

Usługa Cloud Shell wymaga, aby zasób magazynu platformy Azure utrwalał wszystkie pliki utworzone w usłudze Cloud Shell. Po pierwszym otwarciu usługi Cloud Shell zostanie wyświetlony monit o utworzenie grupy zasobów, konta magazynu i udziału usługi Azure Files. Ta konfiguracja jest automatycznie używana dla wszystkich przyszłych sesji usługi Cloud Shell.

Wybieranie regionu platformy Azure

Region odnosi się do co najmniej jednego centrum danych platformy Azure znajdującego się w obszarze geograficznym. Regiony takie jak Wschodnie stany USA, Zachodnie stany USA i Europa Północna to przykłady takich obszarów. Każdy zasób platformy Azure, w tym wystąpienie usługi App Service, jest skojarzony z regionem.

Aby uprościć wykonywanie poleceń, zacznij od ustawienia domyślnego regionu. Po ustawieniu regionu domyślnego kolejne polecenia domyślnie używają tego regionu, chyba że jawnie określisz inny region.

  1. W usłudze Cloud Shell uruchom następujące polecenie, aby wyświetlić listę regionów dostępnych w subskrypcji platformy Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Wybierz region z kolumny Nazwa w danych wyjściowych, które są geograficznie blisko Ciebie. Możesz na przykład wybrać eastasia lub westus2.

  3. Uruchom następujące polecenie, aby ustawić domyślny region. Zastąp ciąg REGION nazwą wybranego wcześniej regionu.

    az configure --defaults location=<REGION>
    

    W tym przykładzie ustawiono westus2 domyślny region.

    az configure --defaults location=westus2
    

Tworzenie zmiennych powłoki Bash

Użycie zmiennych powłoki Bash może sprawić, że proces konfiguracji będzie wygodniejszy i mniej podatny na błędy. Takie podejście pomaga uniknąć przypadkowych literówek przez zdefiniowanie udostępnionych ciągów tekstowych jako zmiennych, które mogą być używane w całym skrytecie.

  1. W usłudze Cloud Shell wygeneruj liczbę losową, aby uprościć tworzenie globalnie unikatowych nazw dla niektórych usług w następnym kroku.

    resourceSuffix=$RANDOM
    
  2. Utwórz globalnie unikatowe nazwy dla wystąpienia usługi Azure Container Registry i usługi Azure Kubernetes Service. Należy pamiętać, że te polecenia używają podwójnych cudzysłowów, co instruuje powłokę Bash, aby interpolować zmienne przy użyciu składni wbudowanej.

    registryName="tailspinspacegame${resourceSuffix}"
    aksName="tailspinspacegame-${resourceSuffix}"
    
  3. Utwórz inną zmienną powłoki Bash, aby przechowywać nazwę grupy zasobów.

    rgName='tailspin-space-game-rg'
    
  4. Znajdź najnowszą wersję usługi AKS.

    az aks get-versions
    

    Zanotuj najnowszą wersję.

Tworzenie zasobów platformy Azure

Uwaga

W tym samouczku domyślne ustawienia sieciowe są używane do celów szkoleniowych. Te ustawienia umożliwiają uzyskiwanie dostępu do witryny internetowej z Internetu. Jednak w praktyce można skonfigurować sieć wirtualną platformy Azure, która umieszcza witrynę internetową w sieci, która nie jest routingiem internetowym i jest dostępna tylko dla Ciebie i Twojego zespołu. Później możesz ponownie skonfigurować sieć, aby udostępnić witrynę internetową użytkownikom.

  1. Uruchom następujące polecenie, aby utworzyć grupę zasobów o zdefiniowanej wcześniej nazwie:

    az group create --name $rgName
    
  2. Uruchom polecenie , az acr create aby utworzyć usługę Azure Container Registry o zdefiniowanej wcześniej nazwie:

    az acr create \
      --name $registryName \
      --resource-group $rgName \
      --sku Standard
    
  3. Uruchom polecenie , az aks create aby utworzyć wystąpienie usługi AKS o zdefiniowanej wcześniej nazwie. Zastąp <latest-AKS-version> wartość zanotowaną wcześniej wersją.

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

    Uwaga

    Ukończenie wdrażania usługi AKS może potrwać od 10 do 15 minut.

  4. Utwórz zmienną do przechowywania identyfikatora jednostki usługi skonfigurowanej dla wystąpienia usługi AKS:

    clientId=$(az aks show \
      --resource-group $rgName \
      --name $aksName \
      --query "identityProfile.kubeletidentity.clientId" \
      --output tsv)
    
  5. Utwórz zmienną do przechowywania identyfikatora usługi Azure Container Registry:

    acrId=$(az acr show \
      --name $registryName \
      --resource-group $rgName \
      --query "id" \
      --output tsv)
    
  6. Uruchom polecenie , az acr list aby pobrać adres URL serwera logowania dla wystąpienia usługi Azure Container Registry (ACR):

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

    Pamiętaj, aby zanotować serwer logowania dla rejestru kontenerów. Te informacje będą potrzebne później podczas konfigurowania potoku. Oto przykład:

    LoginServer                      
    --------------------------------
    tailspinspacegame4692.azurecr.io
    
  7. Uruchom polecenie , az role assignment create aby utworzyć przypisanie roli, aby autoryzować klaster usługi AKS w celu nawiązania połączenia z usługą Azure Container Registry:

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

Ważne

Lekcja Czyszczenie środowiska usługi Azure DevOps w tym module obejmuje kluczowe kroki oczyszczania. Zaleca się wykonanie tych kroków, aby uniknąć braku bezpłatnych minut kompilacji. Nawet jeśli ten moduł nie zostanie ukończony, należy wykonać kroki oczyszczania.

Tworzenie grupy zmiennych

W tej sekcji dodasz zmienną do potoku, aby przechowywać nazwę usługi Azure Container Registry. Zdefiniowanie nazwy wystąpienia usługi Azure Container Registry jako zmiennej w konfiguracji potoku jest zalecane w przypadku kodowania go na stałe. Dzięki temu konfiguracja będzie bardziej wielokrotnego użytku i w przypadku zmiany nazwy wystąpienia można łatwo zaktualizować zmienną i wyzwolić potok bez konieczności modyfikowania konfiguracji.

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Potoki, a następnie wybierz pozycję Biblioteka w okienku nawigacji po lewej stronie.

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Wybierz pozycję Grupy zmiennych, a następnie wybierz pozycję + Grupa zmiennych, aby dodać nową grupę zmiennych.

  4. W sekcji Właściwości wprowadź wartość Release dla nazwy grupy zmiennych.

  5. W sekcji Zmienne wybierz pozycję Dodaj.

  6. Wprowadź wartość RegistryName jako nazwę zmiennej, a jako wartość wprowadź serwer logowania usługi Azure Container Registry, na przykład tailspinspacegame4692.azurecr.io.

  7. W górnej części strony wybierz pozycję Zapisz , aby zapisać zmienną potoku. Jest to przykład tego, jak może wyglądać grupa zmiennych

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

Tworzenie połączeń usług

Następnym krokiem jest utworzenie połączeń usług, które umożliwiają usłudze Azure Pipelines dostęp do wystąpień usługi Azure Container Registry i Azure Kubernetes Service. Tworząc te połączenia usług, usługa Azure Pipelines może wypychać kontenery i instruować klaster usługi AKS, aby ściągnął je w celu zaktualizowania wdrożonej usługi.

Ważne

Upewnij się, że zalogowaliśmy się do witryny Azure Portal i usługi Azure DevOps przy użyciu tego samego konta Microsoft.

Tworzenie połączenia usługi Rejestru platformy Docker

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Ustawienia projektu w dolnym rogu strony.

  3. Wybierz pozycję Połączenia usługi w sekcji Potoki .

  4. Wybierz pozycję Nowe połączenie z usługą, a następnie wybierz pozycję Rejestr platformy Docker, a następnie wybierz pozycję Dalej.

  5. W górnej części strony wybierz pozycję Azure Container Registry, a następnie wybierz pozycję Jednostka usługi dla typu uwierzytelniania.

  6. Wprowadź następujące wartości dla każdego ustawienia:

    Ustawienie Wartość
    Subskrypcja Subskrypcja platformy Azure
    Rejestr kontenerów platformy Azure Wybierz utworzony wcześniej
    Nazwa połączenia z usługą Połączenie ion usługi Container Registry
  7. Upewnij się, że zaznaczono pole wyboru Udzielanie uprawnień dostępu do wszystkich potoków .

  8. Wybierz Zapisz, gdy skończysz.

Tworzenie połączenia z usługą ARM

Teraz utworzysz połączenie usługi Azure Resource Manager w celu uwierzytelniania za pomocą klastra usługi AKS. Używamy połączenia usługi ARM zamiast platformy Kubernetes, ponieważ długotrwałe tokeny nie są już tworzone domyślnie od czasu utworzenia rozwiązania Kubernetes 1.24. Zapoznaj się z tym wpisem w blogu DevOps, aby uzyskać więcej informacji: Wskazówki dotyczące usługi Service Połączenie ion dla klientów usługi AKS korzystających z zadań platformy Kubernetes.

  1. Wybierz pozycję Nowe połączenie z usługą, wybierz pozycję Azure Resource Manager, a następnie wybierz pozycję Dalej.

  2. Wybierz pozycję Jednostka usługi (automatyczna), a następnie wybierz pozycję Dalej.

  3. Wybierz pozycję Subskrypcja dla poziomu zakresu.

  4. Wprowadź następujące wartości dla każdego ustawienia.

    Ustawienie Wartość
    Subskrypcja Subskrypcja platformy Azure
    Grupa zasobów Wybierz utworzony wcześniej
    Nazwa połączenia z usługą Połączenie ion klastra Kubernetes
  5. Upewnij się, że zaznaczono pole wyboru Udzielanie uprawnień dostępu do wszystkich potoków .

  6. Wybierz Zapisz, gdy skończysz.

Tworzenie środowiska potoku

  1. Wybierz pozycję Potoki, a następnie wybierz pozycję Środowiska.

    Screenshot of Azure Pipelines showing the Environments menu option.

  2. Wybierz pozycję Utwórz środowisko , aby utworzyć nowe środowisko.

  3. W polu Nazwa wprowadź wartość Dev.

  4. Wybierz pozycję Brak w sekcji Zasób , a następnie wybierz pozycję Utwórz , aby utworzyć środowisko potoku.

Aktualizowanie manifestu wdrożenia platformy Kubernetes

W tej sekcji zaktualizujesz manifest Kubernetes deployment.yml , aby wskazać utworzony wcześniej rejestr kontenerów.

  1. Przejdź do konta usługi GitHub i wybierz rozwidlenie rozwidlenia dla tego modułu: mslearn-tailspin-spacegame-web-kubernetes.

  2. Otwórz plik manifestów/deployment.yml w trybie edycji.

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

  3. Zmień odwołania do obrazu kontenera, aby używać serwera logowania usługi ACR. Poniższy manifest używa tailspinspacegame2439.azurecr.io jako przykładu.

    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. Zatwierdź zmiany w main gałęzi.