Delen via


EShopOnContainers implementeren in Azure

Tip

Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.

Cloud Native .NET apps for Azure eBook cover thumbnail.

De eShopOnContainers-toepassing kan worden geïmplementeerd op verschillende Azure-platforms. De aanbevolen methode is om de toepassing te implementeren in Azure Kubernetes Services (AKS). Helm, een Kubernetes-implementatieprogramma, is beschikbaar om de complexiteit van de implementatie te verminderen. Ontwikkelaars kunnen eventueel Azure Dev Spaces voor Kubernetes implementeren om hun ontwikkelingsproces te stroomlijnen.

Azure Kubernetes Service

Als u eShop in AKS wilt hosten, moet u eerst een AKS-cluster maken. Hiervoor kunt u Azure Portal gebruiken, waarmee u de vereiste stappen doorloopt. U kunt ook een cluster maken vanuit de Azure CLI, waarbij u op rollen gebaseerd toegangsbeheer (RBAC) en toepassingsroutering inschakelt. De documentatie van eShopOnContainers bevat informatie over de stappen voor het maken van uw eigen AKS-cluster. Zodra het is gemaakt, kunt u het cluster openen en beheren vanuit het Kubernetes-dashboard.

U kunt nu de eShop-toepassing implementeren in het cluster met behulp van Helm.

Implementeren in Azure Kubernetes Service met behulp van Helm

Helm is een hulpprogramma voor toepassingspakketbeheer dat rechtstreeks met Kubernetes werkt. Hiermee kunt u Kubernetes-toepassingen definiëren, installeren en upgraden. Hoewel eenvoudige apps kunnen worden geïmplementeerd in AKS met aangepaste CLI-scripts of eenvoudige implementatiebestanden, kunnen complexe apps veel Kubernetes-objecten bevatten en profiteren van Helm.

Met Helm bevatten toepassingen op basis van tekst gebaseerde configuratiebestanden, Helm-grafieken genoemd, die de toepassing en configuratie declaratief beschrijven in Helm-pakketten. Grafieken maken gebruik van standaard-YAML-bestanden om een gerelateerde set Kubernetes-resources te beschrijven. Ze worden versiebeheer uitgevoerd naast de toepassingscode die ze beschrijven. Helm-grafieken variëren van eenvoudig tot complex, afhankelijk van de vereisten van de installatie die ze beschrijven.

Helm bestaat uit een opdrachtregelclientprogramma dat Helm-grafieken gebruikt en opdrachten start naar een serveronderdeel met de naam Tiller. Tiller communiceert met de Kubernetes-API om ervoor te zorgen dat uw workloads in containers correct worden ingericht. Helm wordt onderhouden door de Cloud-native Computing Foundation.

In het volgende YAML-bestand wordt een Helm-sjabloon weergegeven:

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.app.svc.marketing }}
  labels:
    app: {{ template "marketing-api.name" . }}
    chart: {{ template "marketing-api.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app: {{ template "marketing-api.name" . }}
    release: {{ .Release.Name }}

U ziet hoe de sjabloon een dynamische set sleutel-waardeparen beschrijft. Wanneer de sjabloon wordt aangeroepen, worden waarden die tussen accolades zijn geplaatst, opgehaald uit andere yaml-configuratiebestanden.

U vindt de helmgrafieken eShopOnContainers in de map /k8s/helm. Afbeelding 2-6 laat zien hoe de verschillende onderdelen van de toepassing zijn ingedeeld in een mapstructuur die door Helm wordt gebruikt om implementaties te definiëren en te beheren.

The eShopOnContainers helm folderAfbeelding 2-6. De helm-map eShopOnContainers.

Elk afzonderlijk onderdeel wordt geïnstalleerd met behulp van een helm install opdracht. eShop bevat een script 'alles implementeren' dat de onderdelen doorloopt en installeert met behulp van hun respectieve Helm-grafieken. Het resultaat is een herhaalbaar proces, dat is geversied met de toepassing in broncodebeheer, die iedereen in het team kan implementeren in een AKS-cluster met een scriptopdracht met één regel.

Houd er rekening mee dat versie 3 van Helm officieel de noodzaak voor het Tiller-serveronderdeel verwijdert. Meer informatie over deze uitbreiding vindt u hier.

Azure Functions en Logic Apps (serverloos)

Het voorbeeld van eShopOnContainers bevat ondersteuning voor het bijhouden van online marketingcampagnes. Een Azure-functie wordt gebruikt voor het bijhouden van marketingcampagnedetails voor een bepaalde campagne-id. In plaats van een volledige microservice te maken, is één Azure-functie eenvoudiger en voldoende. Azure Functions heeft een eenvoudig build- en implementatiemodel, met name wanneer deze is geconfigureerd voor uitvoering in Kubernetes. Het implementeren van de functie wordt uitgevoerd met behulp van ARM-sjablonen (Azure Resource Manager) en de Azure CLI. Deze campagneservice is niet klantgericht en roept één bewerking aan, waardoor het een uitstekende kandidaat is voor Azure Functions. Voor de functie is minimale configuratie vereist, waaronder een database verbindingsreeks gegevens- en URI-instellingen voor installatiekopieën. U configureert Azure Functions in Azure Portal.