Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I componenti WebAssembly sono un nuovo modo per compilare e distribuire applicazioni. Sono progettati per essere una destinazione di compilazione portabile per i linguaggi di programmazione e possono essere eseguiti in vari ambienti. I componenti WebAssembly sono in modalità sandbox per progettazione ed espongono le relative funzionalità usando interfacce definite. I componenti differiscono dai contenitori in quanto i singoli file binari sono molto più piccoli e veloci da avviare. Trovare la descrizione completa del modello e il componente nella specifica.
wasmCloud è un progetto CLOUD Native Computing Foundation (CNF) progettato per monitorare rapidamente lo sviluppo, la distribuzione e l'orchestrazione dei componenti WebAssembly. Questo documento illustra in dettaglio come distribuire wasmCloud in un cluster del servizio Azure Kubernetes.
Prima di iniziare
- Questo articolo presuppone una conoscenza di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.
- È necessaria una sottoscrizione di Azure attiva. Se non ne hai uno, crea un account gratuito prima di iniziare.
- È necessario un cluster del servizio Azure Kubernetes. Se non si dispone di un cluster esistente, è possibile crearne uno usando l'interfaccia della riga di comando di Azure , Azure PowerShell o portale di Azure.
- È necessario installare l'interfaccia della riga di comando wasmCloud (wash) alla versione 0.39.0 o successiva. Per le opzioni di installazione, vedere wasmcloud-cli.
Prerequisiti
- Non è possibile usare il portale di Azure per distribuire wasmCloud su un cluster AKS.
Distribuire wasmCloud
Per distribuire wasmCloud in un cluster del servizio Azure Kubernetes, è necessario installare tutti in un unico grafico Helm nel cluster. In questo modo, i servizi seguenti vengono installati in un unico spazio dei nomi:
- NATS: NATS fornisce il backbone per tutte le comunicazioni tra i componenti in wasmCloud.
- wadm: wasmCloud Application Manager, altrimenti noto come wadm è l'agente di orchestrazione per la gestione delle applicazioni in esecuzione su wasmCloud.
- wasmCloud Operator: wasmCloud Operator è un operatore Kubernetes che gestisce il ciclo di vita degli host wasmCloud.
È consigliabile distribuire wasmCloud in uno spazio dei nomi Kubernetes dedicato.
Creare un namespace per wasmCloud usando
kubectl:kubectl create namespace wasmcloudInstallare NATS e wadm nello spazio dei nomi wasmCloud usando il
helm upgradecomando :# 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-updateL'output di questo comando dovrebbe essere simile al seguente:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Attendere che tutti i pod inizino a usare
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-operatorAvviare un host wasmCloud usando un CRD e
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFVerificare che l'host wasmCloud sia in esecuzione:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostL'output dovrebbe essere simile al seguente:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sVerificare che sia possibile connettersi all'host wasmCloud usando
wash:In una shell separata, eseguire il seguente comando per effettuare il port forwarding verso uno dei pod NATS in esecuzione.
kubectl port-forward nats-0 4222Questo comando inoltra tutto il traffico sulla porta 4222 localmente al pod NATS in esecuzione nel cluster. Per connettersi a wasmCloud è necessario inoltrare questa porta usando
wash.Nella shell originale eseguire il comando seguente con
washper verificare che l'host wasmCloud sia in esecuzione:wash get hostsL'output dovrebbe essere simile al seguente:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Distribuire un'applicazione wasmCloud
Ora che wasmCloud è in esecuzione nel cluster del servizio Azure Kubernetes, è possibile distribuire un'applicazione wasmCloud. Un'applicazione wasmCloud è una raccolta di componenti WebAssembly orchestrati da wasmCloud Application Manager (wadm).
Creare un file manifesto dell'applicazione wasmCloud. Questo file descrive i componenti che costituiscono l'applicazione. Salvare il file yaml seguente come
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:8080Distribuire l'applicazione wasmCloud usando
wash:wash app deploy hello-world.yamlL'output dovrebbe essere simile al seguente:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Verificare che l'applicazione sia in esecuzione usando
wash:wash app status hello-worldL'output dovrebbe essere simile al seguente:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedRipetere questo comando, se necessario, finché tutti i componenti non sono nello
Deployedstato .Richiamare il componente HTTP usando
curlekubectl port-forward:In una shell separata, esegui il comando seguente per effettuare il port forwarding all'applicazione
hello-worldkubectl port-forward port-forward deployment/wasmcloud-host 8080Questo comando inoltra tutto il traffico sulla porta 8080 localmente all'host wasmCloud in esecuzione nel cluster. Per connettersi a wasmCloud è necessario inoltrare questa porta usando
curl.Nella shell originale eseguire il comando seguente per richiamare il componente HTTP:
curl http://localhost:8080L'output dovrebbe essere simile al seguente:
Hello from Rust!Pulire le risorse installate
Per pulire le risorse create, eseguire i comandi seguenti:
kubectl delete namespace wasmcloudQuesto comando rimuove i componenti di wasmCloud dal cluster AKS (Azure Kubernetes Service).
Passaggi successivi
È possibile continuare a imparare seguendo la Guida introduttiva a wasmCloud, che illustra come creare un componente WebAssembly da zero, usando diverse funzionalità wasmCloud e ridimensionando l'applicazione.