Tworzenie projektów CNCF przy użyciu usługi Azure Kubernetes Service

Azure Kubernetes Service (AKS)

W tym artykule pokazano, jak koncepcyjnie utworzyć, utworzyć i wdrożyć aplikację, która korzysta z projektów z natywnej struktury przetwarzania w chmurze (CNCF) po wdrożeniu usługi Azure Kubernetes Service (AKS). Architektura opisuje aplikację projektów CNCF w witrynie GitHub. Instrukcje konfiguracji w repozytorium zawierają kroki wdrażania architektury.

Architektura

Architecture diagram that shows the reference architecture for building a CNCF project.

Pobierz plik programu Visio z tą architekturą.

Obciążenie to prosta aplikacja internetowa, która umożliwia pracownikom przesyłanie i wyświetlanie raportów wydatków. Gdy pracownik przesyła raport wydatków, menedżer pracownika otrzymuje wiadomość e-mail.

Przepływ pracy

Przepływ aplikacji

1. Pracownik uzyskuje dostęp do aplikacji internetowej za pośrednictwem ruchu przychodzącego NGINX w celu przesłania wydatków.

2. Aplikacja internetowa wywołuje aplikację interfejsu API w celu pobrania menedżera pracownika.

3. Aplikacja internetowa wypycha komunikat wygenerowany na potrzeby tworzenia raportu wydatków do brokera knative.

4. Raport wydatków jest zapisywany w programie MySQL.

5. Knative wyzwala funkcję Dyspozytora poczty e-mail z komunikatem o wydatkach jako ładunkiem.

6. Dyspozytor poczty e-mail tworzy wiadomość SendGrid.

7. SendGrid wysyła wiadomość e-mail do pobranego menedżera do przeglądu.

Przepływ metodyki DevOps

a. Deweloperzy piszą lub aktualizują kod w programie Visual Studio Code.

b. Deweloperzy wypychają kod do usługi GitHub z lokalnego obszaru roboczego w programie Visual Studio Code.

c. Element webhook usługi GitHub wyzwala potoki Tekton, które klonuje kod GitHub.

d. Potoki kompilują i wypychają obrazy kontenerów do rejestru Harbor.

e. Rozwiązanie Tekton wdraża aplikację internetową, aplikację interfejsu API i aplikacje dyspozytora poczty e-mail.

f. Rozwiązanie Prometheus przechwytuje metryki aplikacji.

g. Inżynierowie monitorują metryki na pulpicie nawigacyjnym narzędzia Grafana.

h. Inżynierowie devOps monitorują pulpit nawigacyjny narzędzia Grafana.

Infrastruktura

i. Klaster usługi AKS oparty na infrastrukturze przedstawionej w punkcie odniesienia usługi AKS.

ii. Rook Ceph używany do magazynu klastra.

iii. Siatka usługi konsolidatora konsolidatora.

iv. Jaeger do ogólnego śledzenia aplikacji w klastrze Kubernetes.

Operacje klastra

Przydatne może być zarządzanie klastrami i uruchamianiem klastra przy użyciu zarządzania usługą GitOps. Flux to popularny operator GitOps. Często jest ona sparowana z funkcją GitHub Actions w celu włączenia walidacji na zaktualizowanych manifestach i wykresach programu Helm.

Elementy

Azure

Oprogramowanie typu open source (OSS)

  • Kubernetes. CNCF. Automatyzuje wdrażanie, skalowanie i zarządzanie konteneryzowanymi aplikacjami.
  • Strumień. CNCF. Dostawca GitOps na potrzeby dostarczania infrastruktury.
  • Debiutant. CNCF. Zapewnia zarządzanie magazynem dla klastrów.
  • Port. CNCF. Rejestr kontenerów dla obrazów.
  • Konsolidator konsolidatora. CNCF. Siatka usług zintegrowana z usługami OpenFaaS, NGINX, Prometheus i Jaeger.
  • Prometheus. CNCF. Przechwytuje metryki aplikacji.
  • Jaeger. CNCF. Zapewnia ogólne śledzenie aplikacji w klastrze Kubernetes.
  • Knative. CNCF. Służy do tworzenia aplikacji bezserwerowej i opartej na zdarzeniach. Wdraża funkcję Dyspozytora poczty e-mail.
  • MySQL. Baza danych, która przechowuje raporty wydatków.
  • NGINX. Kontroler ruchu przychodzącego Kubernetes używany przez pracowników do uzyskiwania dostępu do aplikacji internetowej w celu przesyłania raportów wydatków.
  • Tekton. Projekt Continuous Delivery Foundation używany do ciągłej integracji/ciągłego wdrażania (CI/CD). Wdraża aplikację internetową, aplikację interfejsu API i aplikacje dyspozytora poczty e-mail.
  • Grafana. Pulpit nawigacyjny metryk aplikacji.
  • SendGrid. Zewnętrzna usługa poczty e-mail, która wysyła pocztę do menedżera na potrzeby przeglądu raportu wydatków.
  • GitHub. Repozytorium kodu. Potoki Tekton używają kodu usługi GitHub.
  • .NET Core. Służy do frontonu internetowego i internetowego interfejsu API.
  • Strumień. Zapewnia zarządzanie usługą GitOps.

Alternatywy

W tym projekcie wykorzystywane są projekty ukończone i inkubowane. Może istnieć wiele alternatyw dla używanych usług. Aby uzyskać alternatywy, zobacz witrynę internetową CNCF . Oto niektóre zasoby, które opisują niektóre z nich:

Możesz rozważyć różne usługi platformy Azure jako alternatywy. Na przykład Routing aplikacji internetowych, Azure Container Registry, Azure Container Storage, Azure Monitor, zarządzana usługa Azure Monitor dla rozwiązania Prometheus, Azure Managed Grafana.

Firma Microsoft obsługuje również projekty systemu operacyjnego jako zarządzane projekty dodatków/pochodnych w usłudze AKS, w tym Nginx, Istio, Prometheus, Grafana i OpenEBS.

Szczegóły scenariusza

Tę architekturę można wdrożyć w dowolnym klastrze Kubernetes, a nie tylko w usłudze AKS. Zapewnia on jeden przykład elastyczności platformy AKS. Usługa AKS ułatwia wdrażanie zarządzanego klastra Kubernetes na platformie Azure.

Po zapoznaniu się z tym artykułem dobrze zrozumiesz, jak wdrożyć typową aplikację, która składa się głównie z projektów CNCF.

Potencjalne przypadki użycia

Te inne przypadki użycia mają podobne wzorce projektowe:

  • Tworzenie potoku ciągłej integracji/ciągłego wdrażania dla obciążeń opartych na kontenerach
  • Korzystanie z metodyki GitOps dla usługi AKS

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

  • W przypadku klastra Kubernetes wymagana jest co najmniej 3-węzłowa pula węzłów użytkownika z jednostkami SKU maszyny wirtualnej DS2_v2 lub większą.
  • Woluminy korzystające z dysków zarządzanych platformy Azure nie mogą być dołączane między strefami. Muszą one znajdować się w tej samej strefie.
  • Instalacja debiutanta może potrwać od 20 do 25 minut. Przed przejściem do następnego kroku upewnij się, że klaster Ceph jest całkowicie aprowizacji.
  • Konfiguracja jaeger trwa około 5 minut.
  • Wyświetlenie konsolidatora Linkerd na pulpicie nawigacyjnym zajmuje około 12 minut.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

Aby oszacować koszty, możesz użyć kalkulatora cen platformy Azure. Poniżej przedstawiono niektóre zagadnienia dotyczące cen uruchamiania tego projektu na platformie Azure. Ma zastosowanie niewielki koszt przepustowości.

Virtual Machine Scale Sets

Opłaty są naliczane za maszyny wirtualne używane w zestawach skalowania maszyn wirtualnych platformy Azure dla klastra usługi AKS. Aby uzyskać więcej informacji, zobacz Cennik zestawów skalowania maszyn wirtualnych.

Storage

Koszty magazynowania są stosowane dla każdego dysku danych wymaganego przez instalację debiutanta. W przypadku tego 3-węzłowego klastra usługi AKS konfiguracja debiutanta używa dwóch dysków danych na węzeł: dysku o rozmiarze 1 GB i dysku o pojemności 200 GB. Aby uzyskać więcej informacji, zobacz Cennik kosztów magazynu.

Moduł równoważenia obciążenia

Moduł równoważenia obciążenia skojarzony z tym klastrem usługi AKS powoduje naliczanie opłat. Aby uzyskać więcej informacji, zobacz Cennik usługi Load Balancer.

Sieć wirtualna

Za sieć wirtualną używaną przez klaster usługi AKS są naliczane opłaty. Aby uzyskać więcej informacji, zobacz Cennik usługi Virtual Network.

Wdrażanie tego scenariusza

Wdróż ten scenariusz z repozytorium GitHub azure/cloud-native-app . Postępuj zgodnie z instrukcjami konfiguracji w podanej sekwencji, aby wdrożyć aplikację projektów CNCF w środowisku.

To repozytorium jest projektem społeczności. Akceptuje i zatwierdza żądania ściągnięcia w celu ulepszenia i modyfikacji ze strony społeczności.

Następne kroki