Wdrażanie funkcji GitHub Actions o wysokiej dostępności w usłudze Azure Kubernetes Service (AKS) przy użyciu Azure Files - przegląd

W tym przewodniku wdrożysz kontroler GitHub Actions o wysokiej dostępności i własnych agentów uruchomionych w usłudze Azure Kubernetes Service (AKS). Samodzielnie hostowane moduły używają udziałów plików platformy Azure SMB do przechowywania danych trwałych.

Ważne

Oprogramowanie typu open source jest wymienione w dokumentacji i przykładach usługi AKS. Oprogramowanie, które wdrażasz, jest wykluczone z umów dotyczących poziomu usług AKS, ograniczonej gwarancji i wsparcia technicznego platformy Azure. W miarę korzystania z technologii open source wraz z usługą AKS zapoznaj się z opcjami pomocy technicznej dostępnymi w odpowiednich społecznościach i opiekunami projektów, aby opracować plan.

Firma Microsoft ponosi odpowiedzialność za tworzenie pakietów typu open source wdrażanych w usłudze AKS. Ta odpowiedzialność obejmuje posiadanie pełnej kontroli nad procesem kompilacji, skanowania, podpisywania, weryfikacji i szybkich poprawek, a także nad plikami binarnymi w obrazach kontenerów. Aby uzyskać więcej informacji, zobacz zarządzanie podatnościami dla AKS i zakres wsparcia dla AKS.

Co to jest Actions Runner Controller (ARC)?

Kontroler modułu uruchamiającego akcje (ARC) to operator kubernetes, który organizuje i skaluje własne moduły uruchamiające dla funkcji GitHub Actions. Usługa ARC korzysta z woluminów trwałych (PV) w celu udostępniania informacji o zadaniu między zasobnikiem modułu uruchamiającego i zasobnikiem zadań kontenera. Aby uzyskać więcej informacji, zobacz About Actions Runner Controller (Informacje o kontrolerach modułu uruchamiającego akcje).

Dlaczego warto używać własnych funkcji GitHub Actions w usłudze AKS?

Samodzielne hostowanie runnerów GitHub Actions na AKS zapewnia organizacjom większą kontrolę, skalowalność i bezpieczeństwo nad ich infrastrukturą CI/CD. Zamiast polegać na agentach hostowanych w GitHubie, które są współdzielone i tymczasowe, własne agenty oferują:

  • Środowiska niestandardowe: dostosuj moduły uruchamiacze w celu dopasowania określonych wymagań dotyczących kompilacji, testowania lub wdrażania.
  • Wzrost wydajności: wykorzystaj trwały magazyn i buforowanie, aby skrócić czas kompilacji i zwiększyć niezawodność.
  • Wydajność kosztów na dużą skalę: moduły uruchamiające skalę dynamicznie w ramach własnej infrastruktury, optymalizując częste lub długotrwałe przepływy pracy.
  • Zwiększone zabezpieczenia i izolacja: zachowaj pełną kontrolę nad infrastrukturą i danymi, która jest idealna dla branż regulowanych lub wrażliwych obciążeń.

Typowe przypadki użycia

  • Enterprise CI/CD pipelines: Dla zespołów potrzebujących spójnych, bezpiecznych i skalowalnych środowisk budowania.
  • Duże monoreposy lub potoki uczenia maszynowego: buforowanie lub utrzymywanie artefaktów ma kluczowe znaczenie.
  • Optymalizacja wydajności: używanie udziałów SMB usługi Azure Files w warstwie Premium w celu zmniejszenia opóźnienia metadanych i zwiększenia liczby operacji we/wy na sekundę.

Wymagania wstępne

  • W tym przewodniku założono podstawową wiedzę na temat podstawowych pojęć związanych z platformą Kubernetes.
  • Potrzebujesz ról wbudowanych platformy Azure: właściciela lub Administratora dostępu użytkownika oraz współautora, na subskrypcji w swoim koncie platformy Azure.

Proces wdrażania

Z tego przewodnika dowiesz się, jak wykonywać następujące działania:

  • Użyj interfejsu wiersza polecenia platformy Azure, aby utworzyć klaster usługi AKS z wieloma strefami.
  • Wdróż udział plików platformy Azure do użycia w woluminach o stałej przepustowości usługi AKS.
  • Zainstaluj Kontroler Runnera GitHub Actions (ARC) na AKS.
  • Zainstaluj zestaw skalowania modułów uruchamiaczy ARC i zainstaluj udział plików w usłudze AKS.
  • Uruchamianie przykładowego przepływu pracy przy użyciu funkcji GitHub Actions.

Architektura wdrażania

Ta architektura referencyjna ilustruje sposób implementowania własnego agenta GitHub Actions przy użyciu AKS i Azure File Share (SMB). Rozwiązanie umożliwia organizacjom bezpieczne wykonywanie zadań przepływu pracy usługi GitHub w ramach własnej infrastruktury platformy Azure przy zachowaniu wydajnego zarządzania magazynem i skalowalności.

Zrzut ekranu przedstawiający diagram architektury funkcji GitHub Actions z usługą Azure Files w usłudze AKS.

Architektura składa się z trzech głównych składników:

  1. Warstwa integracji usługi GitHub: łączy przepływy pracy z repozytoriów GitHub z infrastrukturą platformy Azure.
  2. Warstwa orkiestracji usługi AKS: zarządza wystąpieniami konteneryzowanego modułu uruchamiającego i ich cyklem życia.
  3. Warstwa przechowywania: zapewnia funkcje pamięci trwałej i nietrwałej dla runnerów.

Warstwa integracji usługi GitHub

Warstwa integracji usługi GitHub łączy przepływy pracy z repozytoriów GitHub z infrastrukturą platformy Azure. Zadania przepływu pracy są wysyłane z GitHub za pośrednictwem api.github.com i githubusercontent.com do samodzielnie hostowanych agentów.

Warstwa orkiestracji klastra AKS

Warstwa orkiestracji klastra AKS zarządza konteneryzowanymi instancjami biegacza oraz ich życiem. Klaster jest podzielony na dwie przestrzenie nazw: arc-controller i arc-runners.

arc-controller zarządza infrastrukturą modułu uruchamiającego i odbiornikami zadań. arc-runners obsługuje tajemnice, kontrolę dostępu i pody uruchamiające. Uruchamiacze są konteneryzowane, używają magazynu efemerycznego i łączą się z udostępnionymi i dedykowanymi woluminami.

Warstwa przechowywania

Warstwa magazynu udziałów plików platformy Azure zapewnia zarówno udział plików NuGet z dostępem do współdzielonych zależności, jak i magazyn efemeryczny dla agentów uruchomieniowych, wszystkie obsługiwane przez roszczenia o trwały wolumin.

Następny krok

Współautorzy

Firma Microsoft utrzymuje ten artykuł. Następujący autorzy pierwotnie napisali ten tekst:

  • Jorge Arterio | Starszy ekspert ds. chmury
  • Jeff Patterson | Główny menedżer produktu
  • Rena Shah | Starszy menedżer produktu
  • Shekhar Singh Sorot | Menedżer produktu 2
  • Erin Schaffer | Content Developer 2