Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les composants WebAssembly constituent un nouveau moyen de générer et de déployer des applications. Ils sont conçus pour être une cible de compilation portable pour les langages de programmation et peuvent s’exécuter dans différents environnements. Les composants WebAssembly sont en bac à sable par conception et exposent leurs fonctionnalités à l’aide d’interfaces définies. Les composants diffèrent des conteneurs en utilisant des binaires uniques, beaucoup plus petits et plus rapides à démarrer. Trouvez la description complète du modèle et le rôle d'un composant dans la spécification.
wasmCloud est un projet CLOUD Native Computing Foundation (CNCF) conçu pour suivre rapidement le développement, le déploiement et l’orchestration des composants WebAssembly. Ce document détaille les instructions sur le déploiement de wasmCloud sur un cluster Azure Kubernetes Service (AKS).
Avant de commencer
- Cet article suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS (Azure Kubernetes Service).
- Vous avez besoin d’un abonnement Azure actif. Si vous n’en avez pas, créez un compte gratuit avant de commencer.
- Vous avez besoin d’un cluster AKS. Si vous n’avez pas de cluster existant, vous pouvez en créer un à l’aide d’Azure CLI, d’Azure PowerShell ou du portail Azure.
- Vous devez installer l’interface CLI wasmCloud (wash) à la version 0.39.0 ou ultérieure. Pour connaître les options d’installation, consultez wasmcloud-cli.
Prerequisites
- Vous ne pouvez pas utiliser le portail Azure pour déployer wasmCloud sur un cluster AKS.
Déployer wasmCloud
Pour déployer wasmCloud sur un cluster AKS, vous devez installer le chart Helm complet sur votre cluster. Cela installe les services suivants dans un espace de noms unique :
- NATS : NATS fournit l’épine dorsale pour toutes les communications entre les composants dans wasmCloud.
- wadm : le gestionnaire d’applications wasmCloud, sinon appelé wadm est l’orchestrateur pour la gestion des applications s’exécutant sur wasmCloud.
- l’opérateur wasmCloud : l’opérateur wasmCloud est un opérateur Kubernetes qui gère le cycle de vie des hôtes wasmCloud.
Nous vous recommandons de déployer wasmCloud dans un espace de noms Kubernetes dédié.
Créez un espace de noms pour wasmCloud à l'aide de
kubectl:kubectl create namespace wasmcloudInstallez NATS et wadm dans l’espace de noms wasmCloud à l’aide de la
helm upgradecommande :# 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-updateLa sortie de cette commande doit ressembler à ce qui suit :
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Attendez que tous les pods commencent à utiliser
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-operatorDémarrez un hôte wasmCloud à l’aide d’un CRD et
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFVérifiez que l’hôte wasmCloud est en cours d’exécution :
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostVotre résultat doit être semblable à ce qui suit :
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sVérifiez que vous pouvez vous connecter à l'hôte wasmCloud à l'aide de
wash:Dans un interpréteur de commandes distinct, exécutez la commande suivante pour transférer vers l’un des pods NATS en cours d’exécution :
kubectl port-forward nats-0 4222Cette commande transfère tout le trafic sur le port 4222 localement au pod NATS s’exécutant dans votre cluster. Ce port doit être transféré pour vous connecter à wasmCloud à l'aide de
wash.Dans votre interpréteur de commandes d’origine, exécutez la commande suivante
washpour vérifier que votre hôte wasmCloud est en cours d’exécution :wash get hostsVotre résultat doit être semblable à ce qui suit :
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Déployer une application wasmCloud
Maintenant que wasmCloud s’exécute sur votre cluster AKS, vous pouvez déployer une application wasmCloud. Une application wasmCloud est une collection de composants WebAssembly orchestrés par le gestionnaire d’applications wasmCloud (wadm).
Créez un fichier manifeste d’application wasmCloud. Ce fichier décrit les composants qui composent votre application. Enregistrez le fichier yaml suivant sous
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:8080Déployez l’application wasmCloud en utilisant
wash:wash app deploy hello-world.yamlVotre résultat doit être semblable à ce qui suit :
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Vérifiez que l'application s'exécute à l'aide de
wash:wash app status hello-worldVotre résultat doit être semblable à ce qui suit :
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedRépétez cette commande si nécessaire jusqu’à ce que tous les composants soient dans l’état
Deployed.Appelez le composant http à l’aide
curletkubectl port-forward:Dans un interpréteur de commandes séparé, exécutez la commande suivante pour transférer le port vers l’application
hello-worldkubectl port-forward port-forward deployment/wasmcloud-host 8080Cette commande transfère tout le trafic sur le port 8080 localement vers l’hôte wasmCloud s’exécutant dans votre cluster. Ce port doit être transféré pour vous connecter à wasmCloud à l'aide de
curl.Dans votre interpréteur de commandes d’origine, exécutez la commande suivante pour appeler le composant http :
curl http://localhost:8080Votre résultat doit être semblable à ce qui suit :
Hello from Rust!Nettoyer les ressources installées
Pour nettoyer les ressources que vous avez créées, exécutez les commandes suivantes :
kubectl delete namespace wasmcloudCette commande supprime les composants wasmCloud de votre cluster AKS.
Étapes suivantes
Vous pouvez continuer à apprendre en suivant le guide de démarrage rapide wasmCloud, qui vous guide tout en créant un composant WebAssembly à partir de zéro, en utilisant différentes fonctionnalités wasmCloud et la mise à l’échelle de votre application.