Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
WebAssembly-onderdelen zijn een nieuwe manier om toepassingen te bouwen en te implementeren. Ze zijn ontworpen als een draagbaar compilatiedoel voor programmeertalen en kunnen worden uitgevoerd in verschillende omgevingen. WebAssembly-onderdelen worden standaard in een sandbox geplaatst en bieden hun functionaliteit met behulp van gedefinieerde interfaces. Onderdelen verschillen van containers omdat ze afzonderlijke binaire bestanden hebben die veel kleiner en sneller zijn om te starten. Zoek de volledige beschrijving van het model en wat een onderdeel in de specificatie is.
wasmCloud is een CNCF-project (Cloud Native Computing Foundation) dat is ontworpen om de ontwikkeling, implementatie en indeling van WebAssembly-onderdelen snel bij te houden. In dit document vindt u instructies voor het implementeren van wasmCloud in een AKS-cluster (Azure Kubernetes Service).
Voordat u begint
- In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor Azure Kubernetes Service (AKS) voor meer informatie.
- U hebt een actief Azure-abonnement nodig. Als u nog geen abonnement hebt, maakt u een gratis account voordat u begint.
- U hebt een AKS-cluster nodig. Als u geen bestaand cluster hebt, kunt u er een maken met behulp van de Azure CLI, Azure PowerShell of Azure Portal.
- U moet de wasmCloud CLI (wash) installeren op versie 0.39.0 of hoger. Zie wasmcloud-cli voor installatieopties.
Vereiste voorwaarden
- U kunt Azure Portal niet gebruiken om wasmCloud te implementeren in een AKS-cluster.
Deploy wasmCloud
Als u wasmCloud wilt implementeren op een AKS-cluster, moet u alles in één Helm-grafiek installeren in uw cluster. Hiermee worden de volgende services in één naamruimte geïnstalleerd:
- NATS: NATS biedt de backbone voor alle communicatie tussen onderdelen in wasmCloud.
- wadm: wasmCloud Application Manager, ook wel wadm genoemd, is de orchestrator voor het beheren van toepassingen die worden uitgevoerd op wasmCloud.
- de wasmCloud-operator: de wasmCloud-operator is een Kubernetes-operator die de levenscyclus van wasmCloud-hosts beheert.
U wordt aangeraden wasmCloud te implementeren in een toegewezen Kubernetes-naamruimte.
Maak een naamruimte voor wasmCloud met behulp van
kubectl:kubectl create namespace wasmcloudInstalleer NATS en wadm in de wasmCloud-naamruimte met behulp van de
helm upgradeopdracht:# 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-updateDe uitvoer van deze opdracht moet er ongeveer als volgt uitzien:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Wacht totdat alle pods beginnen te gebruiken
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-operatorStart een wasmCloud-host met behulp van een CRD en
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFZorg ervoor dat de wasmCloud-host actief is.
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostUw uitvoer moet er ongeveer als volgt uitzien:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sControleer of u verbinding kunt maken met de wasmCloud-host met behulp van
wash:Voer in een afzonderlijke shell de volgende opdracht uit om door te sturen naar een van de actieve NATS-pods:
kubectl port-forward nats-0 4222Met deze opdracht wordt al het verkeer op poort 4222 lokaal doorgestuurd naar de NATS-pod die in uw cluster wordt uitgevoerd. U moet deze poort hebben doorgestuurd om verbinding te kunnen maken met wasmCloud met behulp van
wash.Voer in de oorspronkelijke shell de volgende opdracht met
washuit om te verifiëren dat uw wasmCloud-host draait.wash get hostsUw uitvoer moet er ongeveer als volgt uitzien:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Een wasmCloud-toepassing implementeren
Nu wasmCloud wordt uitgevoerd op uw AKS-cluster, kunt u een wasmCloud-toepassing implementeren. Een wasmCloud-toepassing is een verzameling WebAssembly-onderdelen die worden ingedeeld door wasmCloud Application Manager (wadm).
Maak een wasmCloud-toepassingsmanifestbestand. In dit bestand worden onderdelen beschreven waaruit uw toepassing bestaat. Sla het volgende yaml-bestand op 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:8080Implementeer de wasmCloud-toepassing met behulp van
wash:wash app deploy hello-world.yamlUw uitvoer moet er ongeveer als volgt uitzien:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Controleer of de toepassing wordt uitgevoerd met:
washwash app status hello-worldUw uitvoer moet er ongeveer als volgt uitzien:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedHerhaal deze opdracht indien nodig totdat alle onderdelen de
Deployedstatus hebben.Roep het HTTP-onderdeel aan met behulp van
curlenkubectl port-forward:Voer in een afzonderlijke shell de volgende opdracht uit om door te sturen naar de
hello-worldtoepassingkubectl port-forward port-forward deployment/wasmcloud-host 8080Met deze opdracht wordt al het verkeer op poort 8080 lokaal doorgestuurd naar de wasmCloud-host die wordt uitgevoerd in uw cluster. U moet deze poort hebben doorgestuurd om verbinding te kunnen maken met wasmCloud met behulp van
curl.Voer in de oorspronkelijke shell de volgende opdracht uit om het HTTP-onderdeel aan te roepen:
curl http://localhost:8080Uw uitvoer moet er ongeveer als volgt uitzien:
Hello from Rust!De geïnstalleerde resources opschonen
Voer de volgende opdrachten uit om de resources die u hebt gemaakt op te schonen:
kubectl delete namespace wasmcloudMet deze opdracht verwijdert u de wasmCloud-onderdelen uit uw AKS-cluster.
Volgende stappen
U kunt verder leren door de quickstartgids wasmCloud te volgen. U leert hoe u een webassembly-onderdeel helemaal zelf maakt, met behulp van verschillende wasmCloud-mogelijkheden en het schalen van uw toepassing.