Bewerken

Share via


CNCF-projecten bouwen met behulp van Azure Kubernetes Service

Azure Kubernetes Service (AKS)

In dit artikel wordt beschreven hoe u een toepassing kunt conceptueel maken, ontwerpen, bouwen en implementeren die gebruikmaakt van projecten van de Cloud Native Computing Foundation (CNCF) nadat u Azure Kubernetes Service (AKS) hebt geïmplementeerd. In de architectuur wordt de CNCF Projects-app op GitHub beschreven. De installatie-instructies in de opslagplaats bieden stappen voor het implementeren van de architectuur.

Architectuur

Architectuurdiagram met de referentiearchitectuur voor het bouwen van een CNCF-project.

Een Visio-bestand van deze architectuur downloaden.

De workload is een eenvoudige webtoepassing die werknemers kunnen gebruiken om onkostendeclaraties in te dienen en weer te geven. Wanneer een werknemer een onkostendeclaratie indient, ontvangt de manager van de werknemer een e-mail.

Workflow

Toepassingsstroom

1. De werknemer heeft toegang tot een web-app via NGINX Inkomend verkeer om onkosten in te dienen.

2. De web-app roept een API-app aan om de manager van de werknemer op te halen.

3. De web-app pusht een bericht dat is gegenereerd voor het maken van de onkostendeclaratie naar een Knative Broker.

4. Het onkostenrapport wordt opgeslagen in MySQL.

5. Knative activeert de functie E-mail dispatcher met het onkostenbericht als nettolading.

6. E-mail dispatcher maakt een SendGrid-bericht.

7. SendGrid stuurt een e-mail naar de opgehaalde manager voor beoordeling.

DevOps-stroom

a. Ontwikkelaars schrijven of bijwerken de code in Visual Studio Code.

b. Ontwikkelaars pushen de code naar GitHub vanuit hun lokale werkruimte in Visual Studio Code.

c. Github Webhook activeert Tekton-pijplijnen die de GitHub-code klonen.

d. Pijplijnen bouwen en pushen en de containerinstallatiekopieën naar een Havenregister.

e. Tekton implementeert de web-app, API-app en e-mail dispatchertoepassingen.

f. Prometheus legt metrische toepassingsgegevens vast.

g. Technici controleren metrische gegevens op een Grafana-dashboard.

h. DevOps-technici controleren het Grafana-dashboard.

Infrastructuur

i. AKS-cluster op basis van de infrastructuur die wordt weergegeven in de AKS-basislijn.

ii. Rook Ceph gebruikt voor clusteropslag.

iii. Linkerd service mesh.

iv. Jaeger voor algemene toepassingstracering op het Kubernetes-cluster.

Clusterbewerkingen

Het kan nuttig zijn om clusters en clusterbootstrapping te beheren met behulp van GitOps-beheer. Flux is een populaire GitOps-operator. Het is vaak gekoppeld aan GitHub Actions om validatie in te schakelen voor bijgewerkte manifesten en Helm-grafieken.

Onderdelen

Azure

Opensource-software (OSS)

  • Kubernetes. CNCF. Automatiseert de implementatie, schaal en het beheer van toepassingen in containers.
  • Flux. CNCF. GitOps-provider voor levering van infrastructuur.
  • Rook. CNCF. Biedt opslagbeheer voor de clusters.
  • Haven. CNCF. Containerregister voor de installatiekopieën.
  • Linkerd. CNCF. Service-mesh die kan worden geïntegreerd met OpenFaaS, NGINX, Prometheus en Jaeger.
  • Prometheus. CNCF. Legt metrische toepassingsgegevens vast.
  • Jaeger. CNCF. Biedt algemene toepassingstracering op het Kubernetes-cluster.
  • Knative. CNCF. Wordt gebruikt voor het bouwen van serverloze en gebeurtenisgestuurde toepassingen. Hiermee wordt de functie E-mail dispatcher geïmplementeerd.
  • MySQL. Database waarin de onkostendeclaraties worden opgeslagen.
  • NGINX. Kubernetes-toegangsbeheerobjectcontroller die werknemers gebruiken voor toegang tot de web-app om onkostendeclaraties in te dienen.
  • Tekton. Continuous Delivery Foundation-project dat wordt gebruikt voor continue integratie/continue implementatie (CI/CD). Implementeert de web-app, API-app en e-mail dispatchertoepassingen.
  • Grafana. Dashboard voor metrische gegevens van toepassingen.
  • SendGrid. Externe e-mailservice waarmee e-mail naar de manager wordt verzonden voor onkostendeclaratiebeoordeling.
  • GitHub. Codeopslagplaats. Tekton-pijplijnen maken gebruik van GitHub-code.
  • .NET Core. Wordt gebruikt voor de webfront-end en de web-API.
  • Flux. Biedt GitOps-beheer.

Alternatieven

Dit project maakt gebruik van CNCF-gegradueerde en geïn incubeerde projecten. Er kunnen meerdere alternatieven zijn voor de gebruikte services. Zie de CNCF-website voor alternatieven. Hier volgen enkele resources waarin enkele van deze resources worden beschreven:

U kunt verschillende Azure-services beschouwen als alternatieven. For example, Web Application Routing, Azure Container Registry, Azure Container Storage, Azure Monitor, Azure Monitor managed service for Prometheus, Azure Managed Grafana.

Microsoft ondersteunt ook OSS-projecten als beheerde addons/afgeleide projecten in AKS, waaronder Nginx, Istio, Prometheus, Grafana en OpenEBS.

Scenariodetails

U kunt deze architectuur implementeren op elk Kubernetes-cluster, niet alleen op AKS. Het biedt een voorbeeld van de flexibiliteit van het AKS-platform. Met AKS kunt u eenvoudig een ​​beheerd Kubernetes-cluster in Azure implementeren.

Nadat u dit artikel hebt bekeken, hebt u een goed begrip van hoe u een typische toepassing implementeert die voornamelijk bestaat uit CNCF-projecten.

Potentiële gebruikscases

Deze andere gebruikscases hebben vergelijkbare ontwerppatronen:

  • Een CI/CD-pijplijn maken voor op containers gebaseerde workloads
  • GitOps voor AKS gebruiken

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

  • Voor het Kubernetes-cluster hebt u ten minste een gebruikers-knooppuntgroep met drie knooppunten met vm-SKU DS2_v2 of groter nodig.
  • Volumes die gebruikmaken van beheerde Azure-schijven kunnen niet worden gekoppeld tussen zones. Ze moeten zich in dezelfde zone bevinden.
  • De installatie van rook kan tussen 20 en 25 minuten duren. Zorg ervoor dat het Ceph-cluster volledig is ingericht voordat u verdergaat met de volgende stap.
  • Het instellen van Jaeger duurt ongeveer 5 minuten.
  • Het duurt ongeveer 12 minuten voordat Linkerd wordt weergegeven in het dashboard.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

U kunt de Azure-prijscalculator gebruiken om de kosten te schatten. Hieronder volgen enkele prijsoverwegingen voor het uitvoeren van dit project in Azure. Een te verwaarlozen bandbreedtekosten zijn van toepassing.

Virtuele-machineschaalsets

Voor VM's die worden gebruikt in Virtuele-machineschaalsets van Azure voor het AKS-cluster worden kosten in rekening gebracht. Zie prijzen voor virtuele-machineschaalsets voor meer informatie.

Storage

Opslagkosten zijn van toepassing op elke gegevensschijf die vereist is voor de Rook-installatie. Voor dit AKS-cluster met 3 knooppunten gebruikt de Rook-configuratie twee gegevensschijven per knooppunt: een schijf van 1 GB en een schijf van 200 GB. Zie prijzen voor opslagkosten voor meer informatie.

Load balancer

Voor de load balancer die aan dit AKS-cluster is gekoppeld, worden kosten in rekening gebracht. Zie de prijzen van Load Balancer voor meer informatie.

Virtueel netwerk

Voor het virtuele netwerk dat door het AKS-cluster wordt gebruikt, worden kosten in rekening gebracht. Zie Prijzen voor Virtual Network voor meer informatie.

Dit scenario implementeren

Implementeer dit scenario vanuit de GitHub-opslagplaats azure/cloudeigen app . Volg de installatie-instructies in de opgegeven volgorde om de CNCF Projects App in uw omgeving te implementeren.

Deze opslagplaats is een communityproject. Het accepteert en keurt pull-aanvragen (PULL's) goed voor verbeteringen en wijzigingen van de community.

Volgende stappen