Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
WebAssembly-Komponenten sind eine neue Möglichkeit zum Erstellen und Bereitstellen von Anwendungen. Sie sind so konzipiert, dass sie ein portables Kompilierungsziel für Programmiersprachen sind und in verschiedenen Umgebungen ausgeführt werden können. WebAssembly-Komponenten sind von Natur aus abgeschirmt und stellen ihre Funktionalität über definierte Schnittstellen bereit. Komponenten unterscheiden sich von Containern dadurch, dass sie einzelne Binärdateien sind, die viel kleiner sind und schneller starten. Finden Sie die vollständige Beschreibung des Modells und was eine Komponente in der Spezifikation ist.
wasmCloud ist ein CNCF-Projekt (Cloud Native Computing Foundation), das entwickelt wurde, um die Entwicklung, Bereitstellung und Orchestrierung von WebAssembly-Komponenten schnell zu verfolgen. Dieses Dokument enthält Anweisungen zum Bereitstellen von wasmCloud auf einem Azure Kubernetes Service (AKS)-Cluster.
Bevor Sie anfangen
- Für diesen Artikel werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Kubernetes-Kernkonzepte für Azure Kubernetes Service (AKS).
- Sie benötigen ein aktives Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Sie benötigen einen AKS-Cluster. Wenn Sie nicht über einen vorhandenen Cluster verfügen, können Sie einen mit der Azure CLI, Azure PowerShell oder dem Azure-Portal erstellen.
- Sie müssen die wasmCloud CLI (Wash) unter Version 0.39.0 oder höher installieren. Installationsoptionen finden Sie unter wasmcloud-cli.
Voraussetzungen
- Sie können das Azure-Portal nicht zum Bereitstellen von wasmCloud in einem AKS-Cluster verwenden.
Bereitstellen von wasmCloud
Um wasmCloud auf einem AKS-Cluster zu implementieren, müssen Sie den All-in-One-Helm-Chart in Ihrem Cluster einsetzen. Dadurch werden die folgenden Dienste in einem einzigen Namespace installiert:
- NATS: NATS bietet das Rückgrat für die gesamte Kommunikation zwischen Komponenten in wasmCloud.
- wadm: Der wasmCloud-Anwendungs-Manager, der auch als Wadm bekannt ist, ist der Orchestrator für die Verwaltung von Anwendungen, die über wasmCloud ausgeführt werden.
- der wasmCloud-Operator: der wasmCloud-Operator ist ein Kubernetes-Operator, der den Lebenszyklus von wasmCloud-Hosts verwaltet.
Es wird empfohlen, wasmCloud in einem dedizierten Kubernetes-Namespace bereitzustellen.
Erstellen Sie einen Namespace für wasmCloud mithilfe von
kubectl:kubectl create namespace wasmcloudInstallieren Sie NATS und Wadm in den wasmCloud-Namespace mit dem
helm upgradeBefehl:# By default, the chart installs NATS, Wadm, and wasmCloud Operator subcharts helm upgrade --install \ wasmcloud-platform \ --values https://raw.githubusercontent.com/wasmCloud/wasmcloud/main/charts/wasmcloud-platform/values.yaml \ oci://ghcr.io/wasmcloud/charts/wasmcloud-platform:0.1.2 \ --dependency-updateDie Ausgabe dieses Befehls sollte etwa wie folgt aussehen:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Warten Sie, bis alle Pods mit der Verwendung von
kubectlbeginnen:kubectl rollout status deploy,sts -l app.kubernetes.io/name=nats kubectl wait --for=condition=available --timeout=600s deploy -l app.kubernetes.io/name=wadm kubectl wait --for=condition=available --timeout=600s deploy -l app.kubernetes.io/name=wasmcloud-operatorStarten Sie einen wasmCloud-Host mithilfe einer CRD und
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFÜberprüfen Sie, ob der wasmCloud host läuft:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostIhre Ausgabe sollte in etwa wie folgt aussehen:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sStellen Sie sicher, dass Sie eine Verbindung mit dem wasmCloud-Host herstellen können:
washFühren Sie in einer separaten Shell den folgenden Befehl aus, um eine Portweiterleitung zu einem der ausgeführten NATS-Pods durchzuführen:
kubectl port-forward nats-0 4222Dieser Befehl leitet den gesamten Datenverkehr auf Port 4222 zu dem in Ihrem Cluster laufenden NATS-Pod weiter. Sie müssen diesen Port weitergeleitet haben, um mithilfe von
washeine Verbindung zu wasmCloud herzustellen.Führen Sie in Ihrer ursprünglichen Shell den folgenden Befehl
washaus, um zu überprüfen, ob Ihr wasmCloud-Host ausgeführt wird:wash get hostsIhre Ausgabe sollte in etwa wie folgt aussehen:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Bereitstellen einer wasmCloud-Anwendung
Nachdem wasmCloud nun auf Ihrem AKS-Cluster ausgeführt wird, können Sie eine wasmCloud-Anwendung bereitstellen. Eine wasmCloud-Anwendung ist eine Sammlung von WebAssembly-Komponenten, die vom wasmCloud Application Manager (Wadm) orchestriert werden.
Erstellen Sie eine wasmCloud-Anwendungsmanifestdatei. Diese Datei beschreibt Komponenten, die Ihre Anwendung umfassen. Speichern Sie die folgende Yaml-Datei als
hello-world.yaml.apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: hello-world annotations: description: 'HTTP hello world demo in Rust, using the WebAssembly Component Model and WebAssembly Interfaces Types (WIT)' spec: components: - name: http-component type: component properties: image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0 traits: # Govern the spread/scheduling of the component - type: spreadscaler properties: instances: 1 # Add a capability provider that enables HTTP access - name: httpserver type: capability properties: image: ghcr.io/wasmcloud/http-server:0.23.2 traits: # Establish a unidirectional link from this http server provider (the "source") # to the `http-component` component (the "target") so the component can handle incoming HTTP requests, # # The source (this provider) is configured such that the HTTP server listens on 0.0.0.0:8080 - type: link properties: target: http-component namespace: wasi package: http interfaces: [incoming-handler] source_config: - name: default-http properties: address: 0.0.0.0:8080Bereitstellen der wasmCloud-Anwendung mit
wash:wash app deploy hello-world.yamlIhre Ausgabe sollte in etwa wie folgt aussehen:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Überprüfen Sie, ob die Anwendung ausgeführt wird, indem Sie
washverwenden:wash app status hello-worldIhre Ausgabe sollte in etwa wie folgt aussehen:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedWiederholen Sie diesen Befehl bei Bedarf, bis sich alle Komponenten im
DeployedZustand befinden.Aufrufen der HTTP-Komponente mit
curlundkubectl port-forward:Führen Sie in einer separaten Shell den folgenden Befehl aus, um eine Portweiterleitung an die Anwendung
hello-worlddurchzuführen.kubectl port-forward port-forward deployment/wasmcloud-host 8080Dieser Befehl leitet den gesamten Datenverkehr an Port 8080 lokal an den in Ihrem Cluster ausgeführten wasmCloud-Host weiter. Sie müssen diesen Port weitergeleitet haben, um mithilfe von
curleine Verbindung zu wasmCloud herzustellen.Führen Sie in der ursprünglichen Shell den folgenden Befehl aus, um die HTTP-Komponente aufzurufen:
curl http://localhost:8080Ihre Ausgabe sollte in etwa wie folgt aussehen:
Hello from Rust!Bereinigen der installierten Ressourcen
Führen Sie die folgenden Befehle aus, um die von Ihnen erstellten Ressourcen zu bereinigen:
kubectl delete namespace wasmcloudMit diesem Befehl werden die wasmCloud-Komponenten aus Ihrem AKS-Cluster entfernt.
Nächste Schritte
Sie können weiter lernen, indem Sie dem wasmCloud-Schnellstarthandbuch folgen, das Sie durch das Erstellen einer WebAssembly-Komponente von Grund auf führt, indem Sie verschiedene wasmCloud-Funktionen verwenden und Ihre Anwendung skalieren.