Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
WebAssembly-komponenter är ett nytt sätt att skapa och distribuera program. De är utformade för att vara ett portabelt kompileringsmål för programmeringsspråk och kan köras i olika miljöer. WebAssembly-komponenter är begränsade efter design och exponerar deras funktioner med hjälp av definierade gränssnitt. Komponenter skiljer sig från containrar eftersom de är enkla binärfiler som är mycket mindre och snabbare att starta. Hitta den fullständiga beskrivningen av modellen och vad en komponent är i specifikationen.
wasmCloud är ett CNCF-projekt (Cloud Native Computing Foundation) som utformats för att påskynda utvecklingen, distributionen och orkestreringen av WebAssembly-komponenter. Det här dokumentet innehåller anvisningar om hur du distribuerar wasmCloud i ett AKS-kluster (Azure Kubernetes Service).
Innan du börjar
- Den här artikeln förutsätter en grundläggande förståelse av Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
- Du behöver en aktiv Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.
- Du behöver ett AKS-kluster. Om du inte har något befintligt kluster kan du skapa ett med hjälp av Azure CLI, Azure PowerShell eller Azure-portalen.
- Du måste installera wasmCloud CLI (wash) på version 0.39.0 eller senare. Information om installationsalternativ finns i wasmcloud-cli.
Förutsättningar
- Du kan inte använda Azure-portalen för att distribuera wasmCloud till ett AKS-kluster.
Distribuera wasmCloud
För att distribuera wasmCloud på ett AKS-kluster måste du installera den kompletta Helm-chart i ditt kluster. Detta installerar följande tjänster i ett enda namnområde:
- NATS: NATS tillhandahåller stamnätet för all kommunikation mellan komponenter i wasmCloud.
- wadm: wasmCloud Application Manager, även kallat wadm, är orkestreraren för att hantera program som körs ovanpå wasmCloud.
- wasmCloud-operatorn: wasmCloud-operatorn är en Kubernetes-operator som hanterar livscykeln för wasmCloud-värdar.
Vi rekommenderar att du distribuerar wasmCloud till ett dedikerat Kubernetes-namnområde.
Skapa ett namnområde för wasmCloud med hjälp av
kubectl:kubectl create namespace wasmcloudInstallera NATS och wadm i wasmCloud-namnområdet med kommandot
helm upgrade:# 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-updateUtdata från det här kommandot bör se ut ungefär så här:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Vänta tills alla poddar börjar använda
kubectl: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-operatorStarta en wasmCloud-värd med hjälp av en CRD och
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFKontrollera att wasmCloud-värden körs:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostDina utdata bör se ut ungefär så här:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sKontrollera att du kan ansluta till wasmCloud-värdtjänsten genom
wash:I ett separat skalfönster, kör följande kommando för att porta vidare till någon av de NATS-poddar som körs:
kubectl port-forward nats-0 4222Det här kommandot vidarebefordrar all trafik på port 4222 lokalt till NATS-podden som körs i ditt kluster. Du måste ha den här porten vidarebefordrad för att kunna ansluta till wasmCloud med .
washI ditt ursprungliga skal kör du följande kommando med
washför att verifiera att din wasmCloud-värd är igång:wash get hostsDina utdata bör se ut ungefär så här:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Distribuera ett wasmCloud-program
Nu när wasmCloud körs i ditt AKS-kluster kan du distribuera ett wasmCloud-program. Ett wasmCloud-program är en samling WebAssembly-komponenter som orkestreras av wasmCloud Application Manager (wadm).
Skapa en wasmCloud-programmanifestfil. Den här filen beskriver komponenter som ingår i ditt program. Spara följande yaml-fil som
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:8080Distribuera wasmCloud-programmet med :
washwash app deploy hello-world.yamlDina utdata bör se ut ungefär så här:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Kontrollera att programmet körs med :
washwash app status hello-worldDina utdata bör se ut ungefär så här:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedUpprepa det här kommandot om det behövs tills alla komponenter är i tillståndet
Deployed.Anropa http-komponenten med hjälp av
curlochkubectl port-forward:Kör följande kommando i ett separat gränssnitt för att porta vidare till
hello-worldprogrammetkubectl port-forward port-forward deployment/wasmcloud-host 8080Det här kommandot skickar vidare all trafik på port 8080 lokalt till wasmCloud-värden som körs i ditt kluster. Du måste ha den här porten vidarebefordrad för att kunna ansluta till wasmCloud med .
curlKör följande kommando i det ursprungliga gränssnittet för att anropa http-komponenten:
curl http://localhost:8080Dina utdata bör se ut ungefär så här:
Hello from Rust!Rensa de installerade resurserna
Om du vill rensa de resurser som du skapade kör du följande kommandon:
kubectl delete namespace wasmcloudDet här kommandot tar bort wasmCloud-komponenterna från AKS-klustret.
Nästa steg
Du kan fortsätta att lära dig genom att följa snabbstartsguiden för wasmCloud, som vägleder dig genom att skapa en WebAssembly-komponent från grunden, använda olika wasmCloud-funktioner och skala ditt program.