Azure Kubernetes double sur WebAssembly
7 min read
Il est intéressant de voir remark les environnements d’exécution natifs du cloud évoluent. Bien que les conteneurs permettent aux apps d’apporter facilement leurs propres environnements d’exécution dans les clouds et offrent une isolation efficace des autres applications, ils n’offrent pas tout ce que nous attendons d’un sandbox d’application sécurisé. Apporter votre propre userland résout beaucoup de problèmes, mais c’est une isolation horizontale et non verticale. Les applications de conteneur ont toujours accès aux ressources de l’hôte.
C’est pourquoi WebAssembly (souvent abrégé en Wasm) est devenu de moreover en additionally essential. WebAssembly s’appuie sur le runtime JavaScript familier pour fournir un bac à sable pour le code côté serveur et côté utilisateur. Les binaires écrits dans des langages familiers, y compris Go et Rust sécurisés pour la mémoire et le variety, peuvent s’exécuter sur Wasm dans le navigateur et utiliser WASI (WebAssembly Method Interface) en tant qu’applications natives qui n’ont pas besoin d’un hôte de navigateur.
Il existe certaines similitudes entre WASI et Node.js, mais la plus grande différence est peut-être la additionally importante : vous n’êtes pas limité à travailler en JavaScript. WASI ne vous donne pas toutes les API que vous pourriez attendre d’un environnement d’exécution comme .Net ou Java, mais il évolue rapidement, vous donnant un moyen d’exécuter le même code sur tout, des appareils de variety Raspberry Pi à la périphérie, sur des nuages hyperscale , et sur le matériel x64 et Arm. Avec un seul compilateur et une seule plate-forme de développement, vous pouvez utiliser des outils familiers de manière familière.
WebAssembly dans Kubernetes
Wasm et WASI présentent des avantages par rapport au travail avec des conteneurs : les applications peuvent être petites et rapides et peuvent s’exécuter à des vitesses quasi natives. Le bac à sable Wasm est également furthermore sécurisé, auto vous devez activer explicitement l’accès aux ressources en dehors du bac à sable WebAssembly.
Chaque année, au KubeCon de la Cloud Native Computing Foundation, la pré-conférence Wasm Day prend de additionally en in addition d’ampleur, avec un contenu qui start à se retrouver dans les sessions principales de la conférence. En effet, WebAssembly est considéré comme une demand utile pour les conteneurs, un moyen de programmer des services annexes tels que des maillages de providers et un autre moyen de fournir et d’orchestrer des charges de travail sur des périphériques périphériques. En fournissant un environnement d’exécution commun pour Kubernetes basé sur son propre bac à sable, il est capable d’ajouter une couche supplémentaire d’isolation et de sécurité pour votre code, un peu comme s’il s’exécutait dans l’environnement de conteneur sécurisé d’Hyper-V qui exécute des conteneurs dans leurs propres machines virtuelles sur Home windows léger ou Hôtes Linux.
En orchestrant le code Wasm through des systems Kubernetes telles que Krustlets et WAGI, vous pouvez commencer à utiliser le code WebAssembly dans vos environnements cloud natifs. Bien que ces expériences exécutent Wasm directement, une approche option basée sur les modules WASI utilisant containerd est désormais disponible dans Azure Kubernetes Provider.
Containerd facilite l’exécution de WASI
Cette nouvelle approche profite fonctionnement de l’environnement d’exécution conteneur sous-jacent de Kubernetes. Lorsque vous utilisez Kubernetes pour orchestrer des nœuds de conteneur, containerd utilise normalement un shim pour lancer runc et exécuter un conteneur. Avec cette approche de haut niveau, containerd peut prendre en cost d’autres runtimes avec leurs propres shims. Rendre containerd versatile lui permet de prendre en demand plusieurs runtimes de conteneurs, et des choices aux conteneurs peuvent être contrôlées by using les mêmes API.
L’API de shim de conteneur dans containerd est assez easy. Lorsque vous créez un conteneur à utiliser avec containerd, vous spécifiez le runtime que vous prévoyez d’utiliser en utilisant son nom et sa edition. Cela peut également être configuré à l’aide d’un chemin d’accès à un environnement d’exécution. Containerd fonctionnera alors avec un containerd-shim-
préfixe afin que vous puissiez voir quels shims sont en cours d’exécution et les contrôler avec des outils de ligne de commande normal.
L’architecture adaptative de Containerd explique pourquoi la suppression de Dockershim de Kubernetes était importante, auto avoir plusieurs couches de shim aurait ajouté de la complexité. Un seul processus de shim auto-descriptif facilite l’identification des runtimes actuellement utilisés, ce qui vous permet de mettre à jour les runtimes et les bibliothèques si nécessaire.
Runwasi : un shim conteneurisé pour WebAssembly
Il est relativement facile d’écrire un shim pour containerd, permettant à Kubernetes de contrôler une sélection beaucoup moreover huge de runtimes et d’environnements d’exécution au-delà du conteneur familier. La cale runwasi utilisé par Azure en profite, se comportant comme un easy hôte WASI utilisant une bibliothèque Rust pour gérer l’intégration avec containerd ou l’outil Kubernetes CRI (Container Runtime Interface).
Bien que runwasi soit toujours un code de qualité alpha, c’est une option intéressante aux autres façons d’exécuter WebAssembly dans Kubernetes, car or truck il traite le code WASI comme n’importe quel autre pod dans un nœud. Runwasi suggest actuellement deux cales différentes, une qui s’exécute par pod et une qui s’exécute par nœud. Ce dernier partage un seul environnement d’exécution WASI sur tous les pods d’un nœud, hébergeant plusieurs bacs à sable Wasm.
Microsoft utilise runwasi pour remplacer Krustlets dans son company Azure Kubernetes. Bien que la prise en charge de Krustlet fonctionne toujours, il est recommandé de passer au nouvel outil de gestion de la demand de travail en déplaçant les fees de travail WASI vers un nouveau pool de nœuds Kubernetes. Pour l’instant, runwasi est un aperçu, ce qui signifie qu’il s’agit d’une fonctionnalité opt-in et qu’il n’est pas recommandé de l’utiliser en production.
Utilisation de runwasi pour les nœuds WebAssembly dans AKS
Le company utilise des indicateurs de fonctionnalité pour contrôler ce que vous pouvez utiliser, vous aurez donc besoin d’Azure CLI pour activer l’accès. Commencez par installer le aks-preview
extension à la CLI, puis utilisez le az aspect sign up
commande pour activer le WasmNodePoolPreview
.
az aspect sign-up —namespace “Microsoft.ContainerService” —name “WasmNodePoolPreview”
Le service prend actuellement en demand les frameworks d’application Spin et légers. Spin est le framework de microservices piloté par les événements de Fermyon avec les outils Go et Rust, et léger (abréviation de SpiderLightning) provient des Deis Labs de Microsoft, avec la prise en cost de Rust et C pour les modèles de conception et les API courants natifs du cloud. Les deux sont construits au-dessus du temps d’exécution WASI de la Bytecode Alliance. La prise en demand de Wasmtime garantit qu’il est probable de travailler avec des outils tels que le sous-système Windows pour Linux pour créer et tester des apps Rust sur un Pc de développement de bureau, prêt pour l’environnement Linux d’AKS.
Une fois que vous avez configuré AKS pour prendre en charge runwasi, vous pouvez ajouter un pool de nœuds WASI à un cluster AKS, vous y connecter avec kubectl et configurer la classe d’exécution pour wasmtime et le framework de votre choix. Vous pouvez maintenant configurer une charge de travail conçue pour wasm32-wasi et l’exécuter. Il s’agit toujours d’un code de prévisualisation, vous devez donc faire beaucoup de choses à partir de la ligne de commande. À mesure que runwasi évolue, attendez-vous à voir les outils du portail Azure et l’intégration avec les companies de déploiement de offers, garantissant que les apps peuvent se déployer et s’exécuter rapidement.
Cela devrait être un environnement idéal pour des outils tels que Bindle, garantissant que les versions de cost de travail et les artefacts appropriés sont déployés sur les clusters appropriés. Le code peut s’exécuter en périphérie de Kubernetes et sur des circumstances hyperscale comme AKS, avec les bonnes ressources pour chaque instance de la même software.
Des aperçus comme celui-ci sont bons pour l’outil Kubernetes d’Azure. Ils vous permettent d’expérimenter de nouvelles façons de fournir des products and services ainsi que de nouvelles selections d’exécution. Vous avez la possibilité de créer des chaînes d’outils et des pipelines CI/CD, en vous préparant pour le second où WASI deviendra une technologie mature prête pour les costs de travail d’entreprise.
Il ne s’agit pas uniquement de technologie. L’utilisation de WASI comme alternate aux conteneurs présente des avantages intéressants à extensive terme. Alors que les fournisseurs de cloud tels qu’Azure passent à l’offre de serveurs physiques Arm denses, un environnement d’exécution relativement léger comme WASI peut mettre moreover de nœuds sur un serveur, ce qui permet de réduire la quantité d’énergie nécessaire pour héberger une software à grande échelle et de maintenir les coûts de calcul au least. Un code plus rapide et as well as écologique pourrait aider votre entreprise à atteindre ses objectifs de développement durable.
Copyright © 2022 IDG Communications, Inc.