Tworzenie i kierowanie środowiskami
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
W tym artykule opisano sposób tworzenia i określania docelowych środowisk usługi Azure Pipelines. Środowisko to kolekcja zasobów, na które można kierować przy użyciu wdrożeń z rurociągu.
Środowisko reprezentuje logiczne miejsce docelowe, w którym ciąg zadań wdraża oprogramowanie. Typowe nazwy środowisk to Dev, Test, QA, Staging i Production.
Uwaga
Środowiska usługi Azure DevOps nie są dostępne w potokach klasycznych. W przypadku potoków klasycznych grupy wdrożeń oferują podobne funkcje.
Środowiska zapewniają następujące korzyści:
Historia wdrażania. Nazwa przepływu pracy i szczegóły uruchomienia są rejestrowane dla wdrożeń do środowiska i jego zasobów. W kontekście wielu potoków przeznaczonych dla tego samego środowiska lub zasobu można użyć historii wdrażania środowiska, aby zidentyfikować źródło zmian.
Możliwość śledzenia zatwierdzeń i elementów roboczych. Możesz wyświetlić zadania związane z uruchomieniem potoku, które są przeznaczone dla środowiska. Możesz również wyświetlić commity i elementy robocze, które zostały niedawno wdrożone w środowisku. Śledzenie umożliwia sprawdzenie, czy zatwierdzenie zmiany kodu lub zadanie dotyczące funkcji/popraki błędu dotarło do środowiska.
Kondycja zasobu diagnostycznego. Możesz sprawdzić, czy aplikacja działa w żądanym stanie.
Zabezpieczenia. Możesz zabezpieczyć środowiska, określając, którzy użytkownicy i które potoki mają dostęp do danego środowiska.
Środowisko to grupowanie zasobów, w których same zasoby reprezentują rzeczywiste cele wdrożenia. Środowiska usługi Azure Pipelines obsługują obecnie typy zasobów platformy Kubernetes i maszyny wirtualnej.
Jeśli potok YAML odwołuje się do środowiska, które nie istnieje:
Gdy użytkownik wykonujący operację jest znany i można przypisać uprawnienia, usługa Azure Pipelines automatycznie tworzy środowisko.
Kiedy Azure Pipelines nie ma informacji o użytkowniku wykonującym operację, na przykład w przypadku aktualizacji YAML z zewnętrznego edytora kodu, pipeline kończy się niepowodzeniem.
Wymagania wstępne
Aby dodać środowisko, potrzebne są następujące wymagania wstępne:
- Organizacja i projekt usługi Azure DevOps.
- Rola twórcy środowisk w twoim projekcie.
Utwórz środowisko
Aby stworzyć swoje pierwsze środowisko:
Zaloguj się do organizacji usługi Azure DevOps pod adresem
https://dev.azure.com/{yourorganization}
i otwórz projekt.Wybierz Potoki>Środowiska>Utwórz środowisko.
Wprowadź informacje dotyczące środowiska, a następnie wybierz pozycję Utwórz. Zasoby można dodać do istniejącego środowiska później.
Napiwek
Możesz utworzyć puste środowisko i odnosić się do niego w zadaniach wdrażania, aby móc rejestrować historię wdrażania w odniesieniu do środowiska.
Aby programowo tworzyć środowiska i zarządzać nimi, użyj interfejsu API REST Azure DevOps Environments.
Możesz użyć Azure Pipelines do wdrażania w środowiskach. Aby uzyskać więcej informacji, zobacz Build and deploy to Azure Kubernetes Service with Azure Pipelines (Kompilowanie i wdrażanie w usłudze Azure Kubernetes Service za pomocą usługi Azure Pipelines).
Określ docelowe środowisko w zadaniu wdrożenia
Zadanie wdrożenia to kolekcja kroków, które są uruchamiane sekwencyjnie. Za pomocą zadania wdrażania można kierować całą grupę zasobów środowiska, jak pokazano w poniższym przykładowym fragmencie kodu YAML. Potok jest uruchamiany na maszynie myVM
, ponieważ ta nazwa zasobu jest określona.
- stage: deploy
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment:
name: 'smarthotel-dev'
resourceName: myVM
resourceType: virtualMachine
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
Wybierz określony zasób środowiska w zadaniu wdrożeniowym
Możesz ograniczyć zakres docelowy wdrożenia do określonego zasobu w środowisku, aby można było rejestrować historię wdrażania dla określonego zasobu. Etapy zadania wdrożeniowego automatycznie dziedziczą szczegóły połączenia z usługą z zasobu, na który jest skierowane zadanie wdrożenia.
W poniższym przykładzie wartość dla kubernetesServiceConnection
automatycznie przekazywana jest do zadania z danych wejściowych environment.resource
.
environment:
name: 'smarthotel-dev.bookings'
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Deploy to Kubernetes cluster
inputs:
action: deploy
namespace: $(k8sNamespace)
manifests: $(System.ArtifactsDirectory)/manifests/*
imagePullSecrets: $(imagePullSecret)
containers: $(containerRegistry)/$(imageRepository):$(tag)
Uwaga
Jeśli używasz prywatnego klastra usługi AKS, upewnij się, że masz połączenie z siecią wirtualną klastra, ponieważ punkt końcowy serwera interfejsu API nie jest uwidoczniony za pośrednictwem publicznego adresu IP.
Usługa Azure Pipelines zaleca skonfigurowanie agenta hostowanego samodzielnie w sieci wirtualnej (VNET) z dostępem do sieci wirtualnej klastra. Aby uzyskać szczegółowe informacje, zobacz Opcje nawiązywania połączenia z klastrem prywatnym.
Używaj ręcznych sprawdzeń zatwierdzenia
Aby kontrolować wdrożenia w środowiskach produkcyjnych, usługa Azure Pipelines obsługuje ręczne kontrole zatwierdzeń w środowiskach. Mechanizmy zatwierdzania są dostępne dla właścicieli zasobów, umożliwiając zarządzanie, kiedy etap kanału wykorzystuje zasoby. Właściciele zasobów mogą definiować zatwierdzenia i kontrole, które muszą być spełnione przed rozpoczęciem etapu zużywania tego zasobu.
Role twórcy środowiska, administratora i użytkownika, ale nie czytelnika, mogą zarządzać zatwierdzeniami i sprawdzaniami. Jako właściciel środowiska możesz ręcznie kontrolować, kiedy etap powinien być uruchamiany przy użyciu kontroli zatwierdzenia. Aby uzyskać więcej informacji, zobacz Definiowanie zatwierdzeń i kontroli.
Zobacz środowiska w szczegółach uruchomienia
Na karcie Środowiska szczegółów przebiegu potoku można wyświetlić wszystkie środowiska, które zostały objęte zadaniami wdrażania przebiegu potoku.
Uwaga
Jeśli używasz klastra prywatnego usługi Azure Kubernetes Service (AKS), karta Środowiska nie jest dostępna.
Wyświetlanie historii wdrażania
Możesz wybrać kartę Wdrożenia w sekcji Środowiska usługi Azure Pipelines, aby wyświetlić historię wdrażania.
Wyświetl zadania ze wszystkich potoków przeznaczonych dla określonego środowiska. Na przykład dwie mikrousługi, z własnymi pipeline'ami, mogą być wdrażane do tego samego środowiska. Historia wdrażania pomaga zidentyfikować wszystkie potoki wpływające na środowisko, a także pomaga wizualizować sekwencję wdrożeń dla każdego potoku.
Aby przejść do szczegółów zadania, wybierz karty Zmiany i Elementy robocze na stronie wdrożenia. Na kartach wyświetlane są listy zatwierdzeń i elementów roboczych wdrożonych do określonego środowiska. Każdy element listy reprezentuje nowe elementy w tym wdrożeniu.
Na karcie Zmiany pierwsza lista zawiera wszystkie commity do tego momentu, a poniższe listy obejmują tylko zmiany dla tego zadania. Jeśli wiele zatwierdzeń jest powiązanych z tym samym zadaniem, na karcie Zmiany znajduje się wiele wyników.
Jeśli wiele elementów roboczych jest powiązanych z tym samym zadaniem, na karcie Elementy robocze znajduje się wiele wyników.
Zabezpieczenia
Można zapewnić bezpieczeństwo środowisk, upewniając się, że uprawnienia użytkowników i potoków są odpowiednio ustawione.
Uprawnienia użytkownika
Możesz kontrolować, kto może tworzyć, wyświetlać, używać i zarządzać środowiskami z uprawnieniami użytkownika. Istnieją cztery role: Twórca z zakresem wszystkich środowisk, Czytelnik, Użytkownik i Administrator.
Aby dodać użytkownika przy użyciu panelu uprawnień użytkownika środowiska, przejdź do określonego środowiska, które chcesz autoryzować, wybierz ikonę Więcej akcji i wybierz pozycję Zabezpieczenia.
W panelu Uprawnienia użytkownika na stronie Zabezpieczenia wybierz pozycję Dodaj, a następnie wybierz użytkownika lub grupę i odpowiednią rolę.
W panelu uprawnień użytkownika można również ustawić uprawnienia, które są dziedziczone, i zastąpić role w swoim środowisku.
Rola | opis |
---|---|
Twórca | Globalna rola dostępna z opcji zabezpieczeń w centrum zasobów. Członkowie tej roli mogą tworzyć środowisko w projekcie. Kontrybutorzy są domyślnie dodawani jako członkowie. Wymagane do uruchomienia przepływu pracy YAML, gdy środowisko jeszcze nie istnieje. |
Czytelnik | Członkowie tej funkcji mogą wyświetlać środowisko. |
Użytkownik | Członkowie tej roli mogą używać środowiska podczas tworzenia lub edytowania potoków YAML. |
Administrator | Członkowie tej roli mogą administrować uprawnieniami, tworzyć i wyświetlać środowiska oraz zarządzać nimi. W przypadku określonego środowiska jego twórca jest domyślnie dodawany jako administrator. Administratorzy mogą również zapewnić dostęp do środowiska dla wszystkich pipeline'ów. |
Ważne
Podczas tworzenia środowiska tylko twórca ma rolę administratora.
Rola | opis |
---|---|
Twórca | Rola globalna dostępna z opcji zabezpieczeń centrum środowisk. Członkowie w tej roli mogą tworzyć środowisko w projekcie. Kontrybutorzy są domyślnie dodawani jako członkowie. Wymagane do uruchomienia przepływu pracy YAML, gdy środowisko jeszcze nie istnieje. |
Czytelnik | Członkowie tej funkcji mogą wyświetlać środowisko. |
Użytkownik | Członkowie tej roli mogą używać środowiska podczas tworzenia lub edytowania potoków YAML. |
Administrator | Oprócz korzystania ze środowiska członkowie tej roli mogą zarządzać członkostwem wszystkich innych ról tego środowiska. Twórcy są domyślnie dodawani jako członkowie. |
Uprawnienia rurociągu
Użyj panelu Uprawnień potoków na stronie Zabezpieczenia, aby autoryzować wszystkie lub wybrane potoki do wdrożenia w środowisku.
Aby usunąć otwarty dostęp na środowisku lub zasobie, wybierz Ogranicz uprawnienia w Uprawnienia potoku.
Jeśli uprawnienia są ograniczone, możesz zezwolić określonym potokom na wdrażanie w środowisku lub w określonym zasobie. Wybierz + i wybierz z listy rurociągów, które mają być dozwolone.
Często zadawane pytania
Dlaczego podczas próby utworzenia środowiska pojawia się komunikat o błędzie?
Jeśli zobaczysz komunikat Odmowa dostępu: {User} musi mieć uprawnienia do tworzenia, aby wykonać tę akcję, przejdź do Ustawienia organizacji>Użytkownicy, aby sprawdzić, czy masz rolę interesariusz. Rola uczestnika projektu nie może tworzyć środowisk, ponieważ uczestnicy projektu nie mają dostępu do repozytorium.
Zmień swój poziom dostępu, a następnie sprawdź, czy możesz tworzyć środowiska. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące zarządzania użytkownikami i uprawnieniami.
Dlaczego występuje błąd mówiący, że nie można odnaleźć środowiska?
Jeśli zostanie wyświetlony komunikat Job XXXX: Environment XXXX nie można odnaleźć. Środowisko nie istnieje lub nie zostało autoryzowane do użycia. Istnieje kilka możliwych przyczyn awarii.
Parametry środowiska uruchomieniowego nie działają podczas tworzenia środowisk, ponieważ parametry są rozszerzane tylko w czasie wykonywania. Możesz użyć zmiennych, aby utworzyć środowisko lub użyć templateContext, aby przekazać właściwości do szablonów.
Usługa Azure Pipelines może nie zawierać informacji o użytkowniku tworzącym środowisko.
Gdy odwołujesz się do środowiska, które nie istnieje w pliku potoku YAML, usługa Azure Pipelines w następujących przypadkach automatycznie tworzy środowisko:
- Używasz kreatora tworzenia potoku YAML w interfejsie webowym Azure Pipelines i odwołujesz się do środowiska, które jeszcze nie zostało utworzone.
- Aktualizujesz plik YAML za pomocą edytora internetowego Azure Pipelines i zapisujesz pipeline po dodaniu odwołania do środowiska.
W następujących przypadkach usługa Azure Pipelines nie ma informacji o użytkowniku tworzącym środowisko, w związku z czym potok kończy się niepowodzeniem.
- Aktualizujesz plik YAML przy użyciu innego zewnętrznego edytora kodu.
- Dodajesz odwołanie do środowiska, które nie istnieje, a następnie uruchamiasz potok integracji ręcznej lub ciągłej.
Wcześniej usługa Azure Pipelines radziła sobie z tymi przypadkami tak, że dodawała wszystkich współautorów projektu do roli administratora środowiska. Każdy członek projektu mógł wtedy zmieniać te uprawnienia i uniemożliwiać innym dostęp do środowiska. Aby zapobiec temu wynikowi, usługa Azure Pipelines teraz kończy te zadania niepowodzeniem.