Zalecenia dotyczące włączania automatyzacji

Dotyczy tego zalecenia listy kontrolnej dotyczącej doskonałości operacji platformy Azure Well-Architected Framework:

OE:10 Projektuj i implementuj automatyzację z góry dla operacji, takich jak zagadnienia związane z cyklem życia, uruchamianie i stosowanie barier ochrony ładu i zgodności. Nie próbuj później przeprowadzić modernizacji automatyzacji. Wybierz funkcje automatyzacji zapewniane przez platformę.

W tym przewodniku opisano zalecenia dotyczące projektowania i implementowania obciążenia w celu umożliwienia automatyzacji. Zaprojektuj obciążenie za pomocą automatyzacji, aby zapewnić szybkie i niezawodne wykonywanie rutynowych zadań, takich jak aprowizowanie zasobów, skalowanie i wdrożenia. Automatyzacja upraszcza zadania konserwacji i umożliwia wydajniejsze aktualizowanie, poprawianie i uaktualnianie systemów.

Kluczowe strategie projektowania

Projekt obciążenia

Obciążenie można zaprojektować tak, aby obsługiwało automatyzację z fazy ideacji do trwającej fazy ulepszania. Najpierw zastanów się, jak chcesz zastosować automatyzację w obciążeniu, aby upewnić się, że umieszczasz niezbędne elementy. Pomyśl o obciążeniu pod względem filarów platformy Well-Architected Framework, aby ułatwić planowanie typów automatyzacji, których będziesz używać. Można zautomatyzować wiele funkcji zabezpieczeń, niezawodności, wydajności, operacji i kontroli kosztów.

Projektowanie z myślą o automatyzacji w celu zminimalizowania refaktoryzacji po uruchomieniu obciążenia. Podczas podejmowania decyzji o narzędziach automatyzacji do użycia należy wziąć pod uwagę wymagania dotyczące obciążenia. Mogą istnieć gotowe narzędzia do automatyzacji, które twój zespół już zna. Wdrożenie tych narzędzi może ułatwić automatyzację obciążenia, ale należy pamiętać o ich ograniczeniach i zgodności z platformą w chmurze. Na przykład niektóre narzędzia automatyzacji mogą być dobrze zintegrowane z narzędziami interfejsu wiersza polecenia platformy Azure, a inne mogą wymagać interfejsów REST. Zawsze badaj narzędzia zapewniane przez platformę w chmurze, aby upewnić się, że są one zgodne i zapewniają wymagane funkcje. Przykłady sposobów aktywnego planowania automatyzacji:

  • Wdrażanie: zautomatyzuj wdrożenia aplikacji i infrastruktury, aby zapewnić przewidywalny standard. Zaplanuj wdrożenie automatyczne, opracowując standardy wdrażania, szkoląc zespół w narzędziach, których będziesz używać, i wdrażając niezbędną infrastrukturę.

  • Walidacja: Automatyczne weryfikowanie wymagań dotyczących zgodności z obciążeniem przy użyciu narzędzi do orkiestracji lub zasad. Zidentyfikuj odpowiednie narzędzie do sprawdzania poprawności obciążenia i zaplanuj wdrożenie wymaganych systemów, na przykład serwerów aranżacji.

  • Automatyczne skalowanie: użyj automatycznego skalowania w całej infrastrukturze, aby ułatwić osiągnięcie wymagań dotyczących niezawodności i wydajności. Przed upływem czasu należy przydzielić przestrzeń adresów IP i podsieci w obciążeniu, aby uwzględnić operacje skalowania, oprócz planowania nadmiarowości i naturalnego wzrostu.

Kompromis: podczas projektowania obciążenia w celu włączenia automatyzacji należy wziąć pod uwagę stopień kontroli, który chcesz zachować w porównaniu z wydajnością, jaką można uzyskać dzięki automatyzacji. W niektórych przypadkach obciążenie może nie być wystarczająco dojrzałe, aby zautomatyzować niektóre funkcje lub może być potrzebny poziom elastyczności, który nie zapewnia automatyzacja.

Podczas projektowania obciążenia należy również wziąć pod uwagę zestaw umiejętności zespołu. Jeśli wysoki stopień automatyzacji wymaga narzędzi, których zespół nie jest wyposażony w obsługę, może być konieczne użycie mniej kompleksowego projektu jako etapu pośredniego.

Ciągłe ulepszenia obciążeń

Po uruchomieniu obciążenia w chmurze ważne jest, aby określić priorytety ciągłego ulepszania. Obserwuj obciążenie w działaniu, analizuj wzorce użycia i przejrzyj zachowania klientów związane z obciążeniem, aby zidentyfikować obszary, w których można ulepszyć automatyzację. Poszukaj sposobów ulepszenia istniejącej automatyzacji lub wprowadzenia nowej automatyzacji w celu ulepszenia środowiska klienta. Na przykład może być włączone automatyczne skalowanie, ale wzrost obciążenia jest krótkotrwały. Automatyzację skalowania w poziomie można zintegrować, aby zmniejszyć użycie procesora CPU, gdy obciążenie spadnie poniżej progu.

Poniższe sekcje tego przewodnika zawierają zalecenia dotyczące określonych obszarów automatyzacji, które mogą pomóc w projektowaniu i wdrażaniu obciążeń.

Bootstrap

Bootstrapping odwołuje się do aktualizacji konfiguracji zasobu, który należy wprowadzić po jego aprowizacji, ale zanim będzie dostępny w ramach puli obciążeń. Bootstrapping jest często kojarzony z maszynami wirtualnymi, ale wiele innych zasobów należy skonfigurować jako część procesu wdrażania, w tym technologie platformy jako usługi (PaaS) i technologie hostingu kontenerów, takie jak Azure Kubernetes Service (AKS).

Platforma w chmurze może udostępniać rozwiązania do uruchamiania, których należy używać tam, gdzie to możliwe. Na przykład za pomocą rozszerzeń maszyn wirtualnych na platformie Azure można wprowadzać wstępnie zdefiniowane zmiany konfiguracji podczas procesu wdrażania i dostosowywać zmiany konfiguracji przez wstrzyknięcie skryptów programu PowerShell.

Uwierzytelnianie i autoryzacja

Weź pod uwagę automatyzację podczas projektowania strategii uwierzytelniania i autoryzacji. Ważne jest zachowanie najwyższego poziomu zabezpieczeń w obciążeniach produkcyjnych, ale może to mieć wpływ na automatyzację. Na przykład użycie uwierzytelniania biometrycznego lub wieloskładnikowego zwiększa złożoność, którą należy uwzględnić w projekcie automatyzacji. Używaj nieludzkich, bezpiecznych kont do automatycznego uwierzytelniania, takich jak tożsamości zarządzane, tożsamości obciążeń lub certyfikaty. Upewnij się, że w automatyzacji włączono zarządzanie wpisami tajnymi i kluczami w celu zwiększenia bezpieczeństwa uwierzytelniania.

Projektowanie zmienności w obciążeniu

Unikaj niepotrzebnego wdrażania nowej infrastruktury, gdy wprowadzane są małe zmiany, tworząc elastyczność w artefaktach. Na przykład zamiast ponownego wdrażania infrastruktury po zmianie flagi funkcji można użyć parametrów ustawionych do aktualizowania składników, takich jak konfiguracje aplikacji. Pamiętaj, aby jasno zdefiniować i udokumentować sposób użycia zmienności, aby uniknąć nadmiernego użycia i dryfu konfiguracji.

Tworzenie płaszczyzny sterowania

Płaszczyzna sterowania to system zaplecza lub zestaw narzędzi używanych do zarządzania aplikacją i jej zależnościami za pośrednictwem ujednoliconego interfejsu. Utwórz płaszczyznę sterowania, jak interfejs REST, interfejs wiersza polecenia lub element webhook, aby obsługiwać automatyzację za pomocą narzędzi zewnętrznych.

Uwidacznianie operacji konserwacji za pomocą płaszczyzny sterowania, które umożliwiają koordynowanie składników obciążenia, na przykład uporządkowaną kopię zapasową i przywracanie, uruchamianie, konfigurację, importowanie/eksportowanie i operacje dzielenia na partie. Należy zachować ostrożność podczas wybierania odpowiedniego poziomu szczegółowości podczas podejmowania decyzji o operacjach uwidocznianych za pośrednictwem płaszczyzny sterowania.

Monitorowanie i rejestrowanie

Opracuj strategię monitorowania, aby przechwycić metryki, które napędzają wymagany typ automatyzacji. Użyj rejestrowania strukturalnego i metryk niestandardowych, aby udostępnić informacje wymagane przez automatyzację w formacie łatwym do rozpoznania za pomocą narzędzi automatyzacji. Przechwycone metryki powinny być sparowane z progami zdefiniowanymi w systemie monitorowania, które wyzwalają alerty i zautomatyzowane akcje, takie jak powiadomienia lub mechanizmy samonaprawiania, w razie potrzeby. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące samonaprawiania i samozachowawczego.

Cykl życia użytkownika

Zaprojektuj aplikację i infrastrukturę, aby umożliwić automatyczne dołączanie i odłączanie użytkowników dla użytkowników indywidualnych lub wielodostępnych klientów. Zaplanuj automatyczne aktualizacje bazy danych za pośrednictwem skryptów, aprowizacji infrastruktury i anulowania aprowizacji oraz zarządzania poświadczeniami i wpisami tajnymi.

Orkiestracja i użycie zasad

W ramach ciągłego zarządzania obciążeniami możesz zautomatyzować Desired State Configuration (DSC) w zasobach, aby zapewnić zgodność i wymagania biznesowe. Automatyzacja DSC pomaga zagwarantować, że dryf konfiguracji zostanie przechwycony i szybko skorygowany. Rozszerzenie DSC można zautomatyzować przy użyciu narzędzi orkiestracji lub narzędzi do zarządzania zasadami. Pomyśl o narzędziach orkiestracji, takich jak usługi Azure DevOps lub Jenkins, jako mechanizmach opartych na wypychaniach. Narzędzia orkiestracji umożliwiają wypychanie aktualizacji konfiguracji za pośrednictwem zdarzenia przepływu pracy, takiego jak wdrożenie ręczne lub automatyczne. Te aktualizacje są uruchamiane w ramach sekwencji zadań zdefiniowanej w skry skryptie wdrażania. Narzędzia do zarządzania zasadami używają mechanizmów opartych na ściąganiu, co oznacza, że system działa na podstawowym poziomie obciążenia, który okresowo sonduje obciążenie, aby sprawdzić jego stan względem zdefiniowanej konfiguracji DSC. Jeśli sonda zidentyfikuje niedopasowanie lub dryf konfiguracji, narzędzie podejmuje działania naprawcze. Podczas podejmowania decyzji o orkiestracji i narzędziach do zarządzania zasadami należy wziąć pod uwagę następujące czynniki:

  • Narzędzia orkiestracji nie mają wbudowanych możliwości proaktywnego sondowania obciążenia pod kątem dryfu konfiguracji. Narzędzia orkiestracji powinny być zintegrowane z potokiem ciągłej integracji i ciągłego dostarczania (CI/CD), aby zachować standard wdrażania infrastruktury jako kodu (IaC) i zarządzania nim. Zaletą korzystania z narzędzi orkiestracji jest to, że zasoby są zawsze w pełni skonfigurowane podczas wdrażania.

  • Narzędzia do zarządzania zasadami umożliwiają definiowanie zasad wpływających na co najmniej jedną grupę zasobów. Te zasady są wymuszane, gdy zasób jest zaewidencjonowany w systemie zarządzania zasadami. Zaletą zarządzania zasadami jest to, że te systemy nie są sterowane kodem, więc mogą być łatwiejsze dla operatorów w zespole do wdrożenia.

Podczas podejmowania decyzji o orkiestracji lub narzędziach zasad należy wziąć pod uwagę, czy aktualizacje konfiguracji, które planujesz wprowadzić w nowych zasobach, muszą zostać wprowadzone w czasie wdrażania. Należy również rozważyć, czy definiowanie aktualizacji w kodzie pasuje do praktyk operacyjnych i liczby typów zasobów, które planujesz wdrożyć. Jeśli istnieje wiele różnych konfiguracji w różnych typach zasobów, narzędzia zasad mogą być łatwiejszym sposobem zarządzania aktualizacjami.

Ułatwienia dla platformy Azure

Zarządzanie zasadami

Azure Policy: przy użyciu Azure Policy można wymusić standardy i ocenić zgodność na dużą skalę. Azure Policy zapewnia zagregowany widok umożliwiający ocenę ogólnego stanu środowiska obciążenia na pulpicie nawigacyjnym zgodności. Możesz też użyć Azure Policy do oceny poszczególnych zasobów i zasad na poziomie szczegółowym. Można również użyć Azure Policy do automatycznego korygowania nowych zasobów lub korygowania istniejących zasobów zbiorczo.

Kompromis: odciążanie automatyzacji z potoku ciągłej integracji/ciągłego wdrażania do narzędzi lub usług platformy, takich jak Azure Policy, może uprościć potok, ale ma wady, takie jak dodatkowe obciążenie związane z zarządzaniem użyciem wielu systemów. Na przykład błędy wykonywania w usłudze platformy nie zostaną przechwycone w dziennikach potoku i będą musiały być przekazywane do platformy wglądu inteligentnie, aby odpowiednie strony zostały powiadomione.

Automatyzacja uruchamiania

Rozszerzenia usługi Azure Virtual Machines: rozszerzenia Virtual Machines to małe pakiety, które uruchamiają konfigurację po wdrożeniu i automatyzację na maszynach wirtualnych. Kilka rozszerzeń jest dostępnych dla różnych zadań konfiguracji, takich jak uruchamianie skryptów, konfigurowanie rozwiązań chroniących przed złośliwym oprogramowaniem i konfigurowanie rozwiązań do rejestrowania. Zainstaluj i uruchom te rozszerzenia na maszynach wirtualnych przy użyciu szablonu usługi Azure Resource Manager, interfejsu wiersza polecenia platformy Azure, modułu Azure PowerShell lub Azure Portal. Każda maszyna wirtualna ma zainstalowanego agenta maszyny wirtualnej, który zarządza cyklem życia rozszerzenia.

Zazwyczaj rozszerzenia maszyn wirtualnych używają niestandardowego rozszerzenia skryptu do instalowania oprogramowania, uruchamiania poleceń i wykonywania konfiguracji na maszynie wirtualnej lub w usłudze Azure Virtual Machine Scale Sets. Możesz skonfigurować te rozszerzenia do uruchomienia w ramach wdrożeń IaC, aby były uruchamiane na nowych maszynach wirtualnych przy użyciu agenta maszyny wirtualnej platformy Azure. Rozszerzenia można również uruchamiać poza wdrożeniem platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure, modułu Programu PowerShell lub Azure Portal.

Cloud-init: Cloud-init to narzędzie branżowe do konfigurowania maszyn wirtualnych z systemem Linux podczas pierwszego rozruchu. Podobnie jak rozszerzenia skryptów niestandardowych platformy Azure, pakiet cloud-init umożliwia instalowanie pakietów i uruchamianie poleceń na maszynach wirtualnych z systemem Linux. Możesz użyć pakietu cloud-init na potrzeby instalacji oprogramowania, konfiguracji systemu i przemieszczania zawartości. Platforma Azure obejmuje wiele obrazów maszyn wirtualnych z obsługą chmury w dobrze znanych dystrybucjach systemu Linux. Aby uzyskać pełną listę, zobacz cloud-init support for VMs in Azure (Obsługa funkcji cloud-init dla maszyn wirtualnych na platformie Azure).

Zasób skryptu wdrażania platformy Azure: Podczas wdrażania przy użyciu platformy Azure może być konieczne uruchomienie dowolnego kodu na potrzeby uruchamiania zarządzania kontami użytkowników, zasobnikami Kubernetes lub wykonywaniem zapytań dotyczących danych z systemu spoza platformy Azure. Ponieważ żadna z tych operacji nie jest dostępna za pośrednictwem płaszczyzny sterowania platformy Azure, wymagany jest oddzielny mechanizm. Aby uzyskać więcej informacji, zobacz Microsoft.Resources deploymentScripts. Podobnie jak każdy inny zasób platformy Azure, zasób skryptu wdrażania:

  • Może być używany w szablonie usługi Azure Resource Manager.

  • Zawiera zależności szablonu usługi Azure Resource Manager w innych zasobach.

  • Zużywa dane wejściowe i generuje dane wyjściowe.

  • Używa tożsamości zarządzanej przypisanej przez użytkownika do uwierzytelniania.

Po wdrożeniu skrypt wdrażania uruchamia polecenia i skrypty programu PowerShell lub interfejsu wiersza polecenia platformy Azure. Uruchomienia i rejestrowanie skryptów można zaobserwować w Azure Portal lub za pomocą interfejsu wiersza polecenia platformy Azure i programu PowerShell. Zmienne dla środowiska uruchamiania, opcji przekroczenia limitu czasu i zarządzania zasobami można dostosować po niepowodzeniu skryptu.

Klastry usługi AKS bootstrap z usługą GitOps: możesz uruchomić nowo aprowizowany klaster usługi AKS przy użyciu usługi GitOps i rozszerzenia klastra Flux v2, deklarując ustawienia konfiguracji w repozytoriach GitHub. Ponieważ pliki klastra usługi AKS są przechowywane w repozytorium GitHub, są one wersjonowane, a zmiany między wersjami są łatwo śledzone. Kontrolery Kubernetes działają w klastrach i stale uzgadniają stan klastra z żądanym stanem zadeklarowanym w repozytorium Git, ściągając pliki z repozytorium. Aby uzyskać więcej informacji, zobacz Architektura referencyjna punktu odniesienia usługi AKS.

Zarządzanie konfiguracją

Azure Automation State Configuration to narzędzie do zarządzania DSC zarządzane przez funkcję konfiguracji gościa Azure Policy, której można użyć do zapisywania, zarządzania i kompilowania konfiguracji DSC programu PowerShell dla węzłów w dowolnej chmurze lub lokalnym centrum danych. Tego narzędzia można również użyć do importowania zasobów DSC i przypisywania konfiguracji do węzłów docelowych.

Azure App Configuration to usługa, za pomocą której można centralnie zarządzać ustawieniami aplikacji i flagami funkcji. Działa ona z usługą Azure Key Vault, dzięki czemu można bezpiecznie zarządzać szeroką gamą konfiguracji aplikacji w całym środowisku.

Śledzenie zmian i spis

Śledzenie zmian i spis przy użyciu agenta monitorowania platformy Azure śledzi dryf konfiguracji systemu operacyjnego na maszynach wirtualnych. Automatyzuje to wykrywanie dryfu, spisu uruchomionych usług i zainstalowanych pakietów na maszynach wirtualnych w obciążeniu. Elementy śledzone przez śledzenie zmian i spis obejmują:

  • Zainstalowane oprogramowanie dla systemów Windows i Linux
  • Kluczowe pliki systemu Windows i Linux
  • Klucze rejestru systemu Windows
  • Usługi systemu Windows i demony systemu Linux

Lista kontrolna doskonałości operacyjnej

Zapoznaj się z pełnym zestawem zaleceń.