Wdrażanie efemerycznych środowisk na potrzeby przeglądów
Linting kodu Bicep daje pewne wskazanie, czy wdrożenie platformy Azure może zakończyć się powodzeniem. Pomocne jest również wdrożenie kodu Bicep w dowolnym miejscu, aby zobaczyć, jak środowisko będzie wyglądać po scaleniu żądania ściągnięcia i zakończeniu wdrażania.
W tej lekcji dowiesz się, jak wdrożyć kod w środowisku tymczasowym z poziomu żądania ściągnięcia.
Dlaczego warto wdrożyć kod z poziomu żądania ściągnięcia?
Podczas przeglądania żądania ściągnięcia zawierającego kod Bicep warto wdrożyć kod Bicep w rzeczywistym środowisku platformy Azure. Dzięki temu możesz zwiększyć pewność, że zmiany będą działać, gdy dotrą do środowiska produkcyjnego. Jeśli występuje problem, chcesz szybko go odnaleźć. Żądania ściągnięcia zapewniają doskonałą okazję do odnajdywania i wyróżniania problemów, ponieważ otrzymujesz natychmiastową opinię od recenzentów.
Do tej pory dowiesz się, jak wdrożyć zmiany w co najmniej jednym środowisku nieprodukcyjnym, takim jak Test, QA i Staging, przed wdrożeniem ich w środowisku produkcyjnym. W wielu organizacjach te środowiska są długotrwałe, co oznacza, że są aktualizowane po wdrożeniu zmian, a środowiska zwykle nie są usuwane.
Natomiast środowisko efemeryczne to środowisko tworzone dynamicznie, a także środowisko, które jest wygodne w usuwaniu, gdy nie jest już przydatne. Środowiska efemeryczne mają istnieć tylko przez krótki czas (na przykład wystarczająco długo, aby można było przejrzeć zmiany).
Środowiska efemeryczne są dobrym wyborem podczas wdrażania środowisk dla żądań ściągnięcia, ponieważ w danym momencie może istnieć wiele oddzielnych żądań ściągnięcia reprezentujących różne typy zmian. Jeśli masz otwarte kilka żądań ściągnięcia, udostępnianie długotrwałych środowisk nieprodukcyjnych oznacza, że można wyświetlić podgląd tylko jednej zmiany naraz.
Tworzenie środowisk efemerycznych
Ponieważ używasz do tworzenia infrastruktury platformy Azure jako kodu i zainwestowano w tworzenie plików Bicep w celu wdrożenia zasobów, możesz ponownie użyć tych samych zasobów, aby wdrożyć środowisko efemeryczne. Możesz nawet wdrożyć wiele efemerycznych środowisk naraz, jeśli zajdzie taka potrzeba. Wystarczy upewnić się, że wdrożenia są wystarczająco sparametryzowane i uogólnione , aby można było łatwo tworzyć niezależne środowiska. Na przykład należy upewnić się, że niektóre zasoby platformy Azure mają globalnie unikatowe nazwy, które nie mogą być takie same jak nazwy zasobów w żadnym innym środowisku efemerycznym lub długotrwałym.
Środowiska efemeryczne oferują wiele korzyści:
- Możesz bezpiecznie przetestować nowe funkcje i możliwości w izolowanym środowisku, które nie ma wpływu na inne obciążenia produkcyjne lub nieprodukcyjne.
- Możesz wyświetlić zmiany we własnej gałęzi, co pozwala łatwo zaprezentować swoją pracę współpracownikom lub zapewnić dostęp do recenzentów.
- W tym samym czasie można przetestować oddzielne zmiany przez wielu członków zespołu, nawet jeśli zmiany są niezgodne.
- Ponieważ obejmują regularne uruchamianie plików Bicep, efemeryczne środowiska pomagają stale testować dokładność i kompletność kodu Bicep i innych skryptów. W związku z tym możesz mieć pewność, że kod będzie działał doskonale w środowisku produkcyjnym.
W tym module utworzysz środowiska efemeryczne, aby ułatwić budowanie pewności co do zmian w żądaniach ściągnięcia. Każdy, kto przegląda żądanie ściągnięcia, może uzyskać dostęp do środowiska efemerycznego, w tym wszelkich nowych dodatków i aktualizacji, przed zatwierdzeniem i scaleniem żądania ściągnięcia.
Wdrożenie
Podczas pracy ze środowiskami efemerycznym najlepiej utworzyć oddzielną grupę zasobów platformy Azure dla każdego żądania ściągnięcia tworzonego przez zespół. Jeśli jeden autor ma otwarte dwa oddzielne żądania ściągnięcia, każdy z nich będzie miał własne efemeryczne środowisko. Dzięki temu każda zmiana jest oddzielona od innych i może pomóc uniknąć nieporozumień lub przypadkowo zastąpić zasoby.
Aby to podejście działało, przepływ pracy weryfikacji żądania ściągnięcia musi dynamicznie tworzyć grupy zasobów. Grupy zasobów wymagają unikatowych nazw, a także muszą być w stanie łatwo znaleźć grupę zasobów, aby przetestować zasoby i usunąć je po zamknięciu żądania ściągnięcia. Aby efektywnie obsługiwać nazwy grup zasobów, możesz użyć numeru żądania ściągnięcia w nazwie grupy zasobów. Zobaczysz, jak to zrobić w następnym ćwiczeniu.
Gdy nadszedł czas na usunięcie efemerycznego środowiska, można łatwo znaleźć i usunąć całą grupę zasobów. Wszystkie zasoby używane w środowisku efemerycznym są usuwane w tym samym czasie.
Uprawnienia
Tworzenie grup zasobów wymaga uprawnień na poziomie subskrypcji i zazwyczaj wymaga przypisania roli Współautor do tożsamości obciążenia przepływu pracy.
Dobrym rozwiązaniem jest użycie dedykowanej subskrypcji platformy Azure w środowiskach efemerycznych. Korzystając z tego podejścia, możesz udzielić dostępu do tożsamości obciążenia przepływu pracy i członkom zespołu bez przypadkowego zapewnienia dostępu do innych środowisk.
Ważne
Współautorzy z zakresem subskrypcji są zaawansowani, dlatego musisz mieć pewność, że masz odpowiedni nadzór wokół tożsamości obciążenia przepływu pracy i zmian, które może wdrożyć. Korzystając z dedykowanej subskrypcji dla środowisk efemerycznych, zmniejszasz ryzyko innych środowisk.
Tożsamość przepływu pracy
Przepływ pracy wdrażania używa tożsamości obciążenia i poświadczeń federacyjnych do uwierzytelniania na platformie Azure. W przypadku korzystania z przepływów pracy weryfikacji żądania ściągnięcia należy skonfigurować poświadczenia federacyjne do pracy z żądaniami ściągnięcia.
W poprzednim ćwiczeniu w tym module uruchomiono polecenie w celu utworzenia poświadczeń federacyjnych. Ciąg zasad wyglądał podobnie do następującego:
repo:my-github-user/my-repo:pull_request
Na pull_request
końcu ciągu określono, że poświadczenie federacyjne działa z przepływami pracy weryfikacji żądania ściągnięcia.
Zarządzanie kosztami
Podczas dynamicznego tworzenia środowisk efemerycznych istnieje ryzyko, że koszty platformy Azure mogą wzrosnąć. Jeśli twój zespół ma otwartą dużą liczbę żądań ściągnięcia, możesz wdrożyć dużą liczbę kosztownych zasobów na platformie Azure.
Napiwek
Jeśli twój zespół szybko zamknie żądania ściągnięcia, zwiększone koszty będą mniej niepokojące, ponieważ środowisko efemeryczne zostanie usunięte po zamknięciu odpowiedniego żądania ściągnięcia.
Korzystając z dedykowanej subskrypcji platformy Azure, można również łatwo monitorować koszty środowisk efemerycznych. Można również zastosować zasady obejmujące całą subskrypcję, które ograniczają jednostki SKU zasobów efemerycznych, co może pomóc uniknąć przekroczeń kosztów.
Ponadto platforma Azure oferuje wiele sposobów kontrolowania kosztów środowisk efemerycznych, w tym:
- Usługa Microsoft Cost Management umożliwia ustawianie budżetów dla subskrypcji. Budżety wyzwalają powiadomienia, aby twój zespół wiedział, że koszt zbliża się do określonego progu.
- Wiele typów zasobów platformy Azure zapewnia tańsze, a nawet bezpłatne warstwy dla obciążeń nieprodukcyjnych. Zastanów się, czy możesz użyć tych warstw cenowych i jednostek SKU.
- Cennik tworzenia i testowania platformy Azure jest dostępny dla niektórych klientów, którzy mogą korzystać z subskrypcji nieprodukcyjnych.
- Tagi zasobów mogą pomóc zidentyfikować zasoby skojarzone z każdym efemerycznym środowiskiem i obliczyć koszt każdego środowiska efemerycznego.
- Skrypty automatyzacji można tworzyć, aby usuwać zasoby efemeryczne po określonym przedziale czasu, a nawet w nocy po godzinach pracy.
Możesz również rozważyć udostępnianie niektórych zasobów między środowiskami efemerycznym. Na przykład kod Bicep może definiować wiele zasobów, z których kilka jest kosztownych lub które zajmują dużo czasu na aprowizację. Możesz utworzyć jedną udostępnioną, długotrwałą grupę zasobów dla wszystkich żądań ściągnięcia w celu udostępnienia kosztownych zasobów i utworzyć oddzielne efemeryczne grupy zasobów dla innych zasobów. Jednak takie podejście utrudnia zarządzanie środowiskami efemerycznym i podatne na błędy oraz utrzymywanie ich na tyle oddzielone, aby były przydatne podczas procesu przeglądu. Najlepiej jest unikać tego podejścia, chyba że koszt środowisk efemerycznych staje się zbyt wysoki.