Redigera

Dela via


Skapa CNCF-projekt med hjälp av Azure Kubernetes Service

Azure Kubernetes Service (AKS)

Den här artikeln visar hur du konceptualiserar, skapar, skapar och distribuerar ett program som använder projekt från Cloud Native Computing Foundation (CNCF) när du har distribuerat Azure Kubernetes Service (AKS). Arkitekturen beskriver CNCF Projects-appen på GitHub. Installationsanvisningarna på lagringsplatsen innehåller steg för att distribuera arkitekturen.

Arkitektur

Arkitekturdiagram som visar referensarkitekturen för att skapa ett CNCF-projekt.

Ladda ned en Visio-fil med den här arkitekturen.

Arbetsbelastningen är ett enkelt webbprogram som anställda kan använda för att skicka och visa utgiftsrapporter. När en anställd skickar en utgiftsrapport får den anställdes chef ett e-postmeddelande.

Arbetsflöde

Programflöde

1. Medarbetaren får åtkomst till en webbapp via NGINX Ingress för att skicka utgifter.

2. Webbappen anropar en API-app för att hämta medarbetarens chef.

3. Webbappen skickar ett meddelande som genereras för att skapa utgiftsrapporten till en Knative-mäklare.

4. Utgiftsrapporten sparas i MySQL.

5. Knative utlöser funktionen Email Dispatcher med utgiftsmeddelandet som nyttolast.

6. E-postutskickaren skapar ett SendGrid-meddelande.

7. SendGrid skickar ett e-postmeddelande till den hämtade chefen för granskning.

DevOps-flöde

a. Utvecklare skriver eller uppdaterar koden i Visual Studio Code.

b. Utvecklare push-överför koden till GitHub från sin lokala arbetsyta i Visual Studio Code.

c. GitHub Webhook utlöser Tekton-pipelines som klonar GitHub-koden.

d. Pipelines skapar och push-överför och containeravbildningarna till ett Harbor-register.

e. Tekton distribuerar webbappen, API-appen och e-postutskicksprogram.

f. Prometheus samlar in programmått.

g. Tekniker övervakar mått på en Grafana-instrumentpanel.

h. DevOps-tekniker övervakar Grafana-instrumentpanelen.

Infrastruktur

i. AKS-kluster baserat på infrastrukturen som presenteras i AKS-baslinjen.

ii. Rook Ceph används för klusterlagring.

iii. Linkerd-tjänstnät.

iv. Jaeger för övergripande programspårning i Kubernetes-klustret.

Klusteråtgärder

Det kan vara fördelaktigt att hantera kluster och klusterstövlar med hjälp av GitOps-hantering. Flux är en populär GitOps-operatör. Den paras ofta ihop med GitHub Actions för att aktivera validering på uppdaterade manifest och Helm-diagram.

Komponenter

Azure

Programvara med öppen källkod

  • Kubernetes. CNCF. Automatiserar distribution, skalning och hantering av containerbaserade program.
  • Flux. CNCF. GitOps-provider för infrastrukturleverans.
  • Rook. CNCF. Tillhandahåller lagringshantering för klustren.
  • Hamnen. CNCF. Container Registry för avbildningarna.
  • Linkerd. CNCF. Service mesh som integreras med OpenFaaS, NGINX, Prometheus och Jaeger.
  • Prometheus. CNCF. Samlar in programmått.
  • Jaeger. CNCF. Tillhandahåller övergripande programspårning i Kubernetes-klustret.
  • Knative. CNCF. Används för att skapa ett serverlöst och händelsestyrt program. Distribuerar funktionen Email Dispatcher.
  • MySQL. Databas som lagrar utgiftsrapporterna.
  • NGINX. Kubernetes-ingresskontrollant som anställda använder för att komma åt webbappen för att skicka utgiftsrapporter.
  • Tekton. Projektet Continuous Delivery Foundation som används för kontinuerlig integrering/kontinuerlig distribution (CI/CD). Distribuerar webbappen, API-appen och e-postutskicksprogram.
  • Grafana. Instrumentpanel för programmått.
  • SendGrid. Extern e-posttjänst som skickar e-post till chefen för granskning av utgiftsrapport.
  • GitHub. Kodlagringsplats. Tekton-pipelines använder GitHub-kod.
  • .NET Core. Används för webbklientdelen och webb-API:et.
  • Flux. Tillhandahåller GitOps-hantering.

Alternativ

Det här projektet använder CNCF-graderade och inkuberade projekt. Det kan finnas flera alternativ för de tjänster som används. Se CNCF-webbplatsen för alternativ. Här är några resurser som beskriver några av dem:

Du kan betrakta olika Azure-tjänster som alternativ. Till exempel routning av webbprogram, Azure Container Registry, Azure Container Storage, Azure Monitor, Azure Monitor-hanterad tjänst för Prometheus och Azure Managed Grafana.

Microsoft har också stöd för programvaruprojekt med öppen källkod som managed addons/derived-projekt i AKS, inklusive NGINX, Istio, Prometheus, Grafana och OpenEBS.

Information om scenario

Du kan distribuera den här arkitekturen på alla Kubernetes-kluster, inte bara AKS. Det ger ett exempel på flexibiliteten i AKS-plattformen. AKS gör det enkelt att distribuera ett hanterat Kubernetes-kluster i Azure.

När du har granskat den här artikeln har du en god förståelse för hur du distribuerar ett typiskt program som huvudsakligen består av CNCF-projekt.

Potentiella användningsfall

Dessa andra användningsfall har liknande designmönster:

  • Skapa en CI/CD-pipeline för containerbaserade arbetsbelastningar
  • Använda GitOps för AKS

Att tänka på

Dessa överväganden implementerar grundpelarna i Azure Well-Architected Framework, som är en uppsättning vägledande grundsatser som kan användas för att förbättra kvaliteten på en arbetsbelastning. Mer information finns i Microsoft Azure Well-Architected Framework.

  • För Kubernetes-klustret behöver du minst en användarnodpool med 3 noder med SKU för virtuella datorer (VM) DS2_v2 eller större.
  • Volymer som använder Azure-hanterade diskar kan inte kopplas mellan zoner. De måste finnas i samma zon.
  • Rook-installationen kan ta mellan 20 och 25 minuter. Kontrollera att Ceph-klustret är helt etablerat innan du går vidare till nästa steg.
  • Jaeger-installationen tar cirka 5 minuter.
  • Det tar cirka 12 minuter innan Linkerd visas på instrumentpanelen.

Kostnadsoptimering

Kostnadsoptimering handlar om att titta på sätt att minska onödiga utgifter och förbättra drifteffektiviteten. Mer information finns i Översikt över kostnadsoptimeringspelare.

Du kan använda priskalkylatorn för Azure för att beräkna kostnaderna. Följande är några prisöverväganden för att köra det här projektet i Azure. En försumbar bandbreddskostnad gäller.

Virtual Machine Scale Sets

Virtuella datorer som används i Azure Virtual Machine Scale Sets för AKS-klustret medför en avgift. Mer information finns i Priser för vm-skalningsuppsättningar.

Storage

Lagringskostnader gäller för varje datadisk som krävs av Rook-installationen. För det här AKS-klustret med 3 noder använder Rook-konfigurationen två datadiskar per nod: en 1 GB disk och en disk på 200 GB. Mer information finns i Prissättning för lagringskostnad.

Lastbalanserare

Lastbalanseraren som är associerad med det här AKS-klustret medför en avgift. Mer information finns i Prissättning för Load Balancer.

Virtuellt nätverk

Det virtuella nätverk som används av AKS-klustret medför en avgift. Mer information finns i Priser för virtuellt nätverk.

Distribuera det här scenariot

Distribuera det här scenariot från GitHub-lagringsplatsen Azure/cloud-native-app . Följ installationsanvisningarna i den angivna sekvensen för att distribuera CNCF Projects-appen i din miljö.

Den här lagringsplatsen är ett communityprojekt. Den accepterar och godkänner pull-begäranden (PR) för förbättringar och ändringar från communityn.

Nästa steg