Ćwiczenie — konfigurowanie środowiska usługi Azure DevOps
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.
- Utwórz zmienne potoku w usłudze Azure Pipelines.
- Utwórz połączenie usługi, aby uwierzytelnić się w 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, który konfiguruje organizację usługi Azure DevOps.
Ważne
Generator demonstracyjny usługi Azure DevOps nie jest już obsługiwany, ale nadal można go używać do tworzenia środowisk demonstracyjnych. Obecnie nie ma zastąpienia, a jego funkcje lub dostępność mogą ulec zmianie w przyszłości.
Pobierz i uruchom projekt ADOGenerator w programie Visual Studio lub wybranym środowisku IDE.
pl-PL: Po wyświetleniu monitu o wprowadzenie numeru szablonu z listy szablonów wprowadź 40 dla Automatyzowanie wdrożeń wielu kontenerów w usługach Azure Kubernetes Services za pomocą usługi Azure Pipelines, i naciśnij Enter.
Wybierz metodę uwierzytelniania. Możesz skonfigurować i użyć osobistego tokenu dostępu (PAT) lub zalogować się za pomocą urządzenia.
Uwaga / Notatka
W przypadku skonfigurowania Osobistego Tokenu Dostępu (PAT), upewnij się, że autoryzujesz niezbędne zakresy. W tym module możesz użyć pełnego dostępu, ale w rzeczywistej sytuacji należy upewnić się, że udzielasz tylko niezbędnych zakresów.
Wprowadź nazwę organizacji usługi Azure DevOps, a następnie naciśnij Enter.
Jeśli zostanie wyświetlony monit, wprowadź swój PAT usługi Azure DevOps, a następnie naciśnij Enter.
Wprowadź nazwę projektu, taką jak Space Game — web — Kubernetes, a następnie naciśnij Enter.
Po utworzeniu projektu przejdź do organizacji usługi Azure DevOps w przeglądarce (pod adresem
https://dev.azure.com/<your-organization-name>/) i wybierz projekt.
Rozwidlenie repozytorium
Jeśli jeszcze tego nie zrobiłeś, utwórz odgałęzienie repozytorium mslearn-tailspin-spacegame-web-kubernetes.
Przejdź do repozytorium mslearn-tailspin-spacegame-web-kubernetes na witrynie GitHub.
Wybierz Fork w prawym górnym rogu ekranu.
Wybierz swoje konto GitHub jako właściciela, a następnie wybierz Utwórz fork.
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 rozgałęzienie repozytorium Space Game w usłudze GitHub jest ustawione jako publiczne, podczas gdy projekt utworzony przez szablon usługi Azure DevOps jest ustawiony jako 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:
- Korzystanie z projektów prywatnych i publicznych
- Zmień widoczność projektu na publiczny lub prywatny
- Ustawianie widoczności repozytorium
Przenieś element roboczy do robienia
W tym kroku przypiszesz element roboczy do siebie w usłudze Azure Boards i przeniesiesz go do stanu Wykonywanie . W rzeczywistych scenariuszach wy i wasz zespół tworzycie zadania na początku każdego sprintu lub iteracji.
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.
Przejdź do obszaru Boards w usłudze Azure DevOps, a następnie wybierz pozycję Boards z menu.
Przypisz do siebie element roboczy Utwórz wersję wielu kontenerów witryny internetowej orkiestruje z Kubernetes, wybierając strzałkę w dół znajdującą się w dolnej części karty.
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.
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 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.
Uruchamianie usługi Cloud Shell
Przejdź do witryny Azure Portal i zaloguj się.
Wybierz opcję Cloud Shell z menu, a następnie wybierz środowisko Bash po wyświetleniu monitu.
Uwaga / Notatka
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 zostaniesz poproszony o utworzenie grupy zasobów, konta magazynowego i udziału 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.
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 tableWybierz region z kolumny Nazwa w danych wyjściowych, które są geograficznie blisko Ciebie. Możesz na przykład wybrać eastasia lub westus2.
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
westus2domyślny region.az configure --defaults location=westus2
Tworzenie zmiennych Bash
Użycie zmiennych Bash może sprawić, że proces konfiguracji będzie wygodniejszy i mniej podatny na błędy. Takie podejście pomaga uniknąć przypadkowych literówek poprzez zdefiniowanie udostępnionych ciągów tekstowych jako zmiennych, które mogą być używane w całym skrypcie.
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=$RANDOMUtwórz unikalne globalnie nazwy dla usług Azure Container Registry i Azure Kubernetes Service. Należy pamiętać, że te polecenia używają podwójnych cudzysłowów, które nakazują powłoce Bash interpolację zmiennych przy użyciu składni inline.
registryName="tailspinspacegame${resourceSuffix}" aksName="tailspinspacegame-${resourceSuffix}"Utwórz inną zmienną Bash, aby przechowywać nazwę grupy zasobów.
rgName='tailspin-space-game-rg'Znajdź najnowszą wersję usługi AKS.
az aks get-versionsZanotuj najnowszą wersję.
Tworzenie zasobów platformy Azure
Uwaga / Notatka
W tym samouczku domyślne ustawienia sieciowe zostały użyte za celów szkoleniowych. Te ustawienia umożliwiają uzyskiwanie dostępu do witryny internetowej z Internetu. Jednak w praktyce można skonfigurować sieć wirtualną na platformie Azure, która umieszcza Twoją witrynę w sieci, która nie jest routowana za pośrednictwem internetu 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.
Uruchom następujące polecenie, aby utworzyć grupę zasobów o zdefiniowanej wcześniej nazwie:
az group create --name $rgNameUruchom polecenie ,
az acr createaby utworzyć usługę Azure Container Registry o zdefiniowanej wcześniej nazwie:az acr create \ --name $registryName \ --resource-group $rgName \ --sku StandardUruchom polecenie
az aks create, aby utworzyć wystąpienie usługi AKS o wcześniej zdefiniowanej nazwie. Zastąp<latest-AKS-version>wersją, którą zanotowałeś wcześniej.az aks create \ --name $aksName \ --resource-group $rgName \ --enable-addons monitoring \ --kubernetes-version <latest-AKS-version> \ --generate-ssh-keysUwaga / Notatka
Ukończenie wdrażania usługi AKS może potrwać od 10 do 15 minut.
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)Utwórz zmienną do przechowywania identyfikatora usługi Azure Container Registry:
acrId=$(az acr show \ --name $registryName \ --resource-group $rgName \ --query "id" \ --output tsv)Uruchom polecenie
az acr listaby pobrać adres URL serwera uwierzytelniającego dla wystąpienia usługi Azure Container Registry (ACR).az acr list \ --resource-group $rgName \ --query "[].{loginServer: loginServer}" \ --output tablePamiętaj, aby zapamiętać serwer logowania się dla rejestru kontenerów. Te informacje będą potrzebne później podczas konfigurowania potoku. Oto przykład:
LoginServer -------------------------------- tailspinspacegame4692.azurecr.ioUruchom polecenie
az role assignment create, aby utworzyć przypisanie roli, które autoryzuje klaster AKS do 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 przepływu pracy, aby przechowywać nazwę Azure Container Registry. Zaleca się zdefiniowanie nazwy wystąpienia usługi Azure Container Registry jako zmiennej w konfiguracji potoku zamiast kodowania go na stałe. Dzięki temu konfiguracja stanie się bardziej uniwersalna, a w przypadku zmiany nazwy wystąpienia można łatwo zaktualizować zmienną i uruchomić potok bez potrzeby modyfikowania konfiguracji.
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Potoki, a następnie wybierz pozycję Biblioteka w okienku nawigacji po lewej stronie.
Wybierz pozycję Grupy zmiennych, a następnie wybierz pozycję + Grupa zmiennych , aby dodać nową grupę zmiennych.
W sekcji Właściwości wprowadź Release jako nazwę grupy zmiennych.
W sekcji Zmienne wybierz pozycję Dodaj.
Wprowadź RegistryName jako nazwę zmiennej, a jako wartość wprowadź serwer logowania usługi Azure Container Registry, taki jak tailspinspacegame4692.azurecr.io.
Na górze strony wybierz pozycję Zapisz, aby zapisać zmienną pipeline. Jest to przykład tego, jak może wyglądać grupa zmiennych
Utwórz połączenia usług
Następnym krokiem jest utworzenie połączeń, które umożliwiają narzędziu Azure Pipelines dostęp do instancji usług Azure Container Registry i Azure Kubernetes Service. Tworząc te połączenia usług, usługa Azure Pipelines może przesyłać kontenery i instruować klaster usługi AKS, aby pobrał 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.
Utwórz połączenie usługi Rejestru Docker
Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.
Wybierz pozycję Ustawienia projektu w dolnym rogu strony.
Wybierz Połączenia serwisowe w sekcji Potoki.
Wybierz pozycję Nowe połączenie z usługą, a następnie wybierz pozycję Rejestr platformy Docker, a następnie wybierz pozycję Dalej.
W górnej części strony wybierz pozycję Azure Container Registry, a następnie wybierz pozycję Jednostka usługi dla typu uwierzytelniania.
Wprowadź następujące wartości dla każdego ustawienia:
Ustawienia Wartość Subskrypcja Twoja subskrypcja platformy Azure Rejestr kontenerów platformy Azure Wybierz utworzony wcześniej Nazwa połączenia z usługą Połączenie z rejestrem kontenerów Upewnij się, że zaznaczono pole wyboru Udostępnij uprawnienia dostępu do wszystkich potoków.
Wybierz Zapisz, gdy skończysz.
Tworzenie połączenia z usługą ARM
Teraz utworzysz połączenie usługi Azure Resource Manager, aby uwierzytelnić się z klastrem AKS. Używamy połączenia usługi ARM zamiast połączenia serwisowego platformy Kubernetes, ponieważ długotrwałe tokeny nie są już tworzone domyślnie od wersji Kubernetes 1.24. Zapoznaj się z tym wpisem w blogu DevOps, aby uzyskać więcej informacji: Wskazówki dotyczące połączeń z usługą dla klientów usługi AKS korzystających z zadań platformy Kubernetes.
Wybierz pozycję Nowe połączenie z usługą, wybierz pozycję Azure Resource Manager, a następnie wybierz pozycję Dalej.
Wybierz pozycję Jednostka usługi (automatyczna), a następnie wybierz pozycję Dalej.
Wybierz pozycję Subskrypcja dla poziomu zakresu.
Wprowadź następujące wartości dla każdego ustawienia.
Ustawienia Wartość Subskrypcja Twoja subskrypcja platformy Azure Grupa zasobów Wybierz utworzony wcześniej Nazwa połączenia z usługą Połączenie klastra Kubernetes Upewnij się, że zaznaczono pole wyboru Udostępnij uprawnienia dostępu do wszystkich potoków.
Wybierz Zapisz, gdy skończysz.
Utwórz środowisko pipeline
Wybierz pozycję Potoki, a następnie wybierz pozycję Środowiska.
Wybierz pozycję Utwórz środowisko , aby utworzyć nowe środowisko.
W polu Nazwa wprowadź wartość Dev.
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.
Przejdź do swojego konta GitHub i wybierz repozytorium, które rozwidliłeś dla tego modułu: mslearn-tailspin-spacegame-web-kubernetes.
Otwórz plik manifestów/deployment.yml w trybie edytowania.
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: 80Zatwierdź zmiany w
mainodgałęzieniu.