Richtlinien in TypeScript/JavaScript schreiben
|
Die Unterstützung von TypeScript/JavaScript für WebAssembly entwickelt sich schnell weiter. Diese Seite wurde zuletzt im November 2025 überarbeitet. |
Wie auf der offiziellen Website angegeben:
TypeScript erweitert JavaScript um Typen.
Durch das Verständnis von JavaScript spart TypeScript Zeit beim Auffinden von Fehlern und beim Bereitstellen von Lösungen, bevor Sie den Code ausführen.
SUSE Security Admission Controller verwendet Javy (ein Projekt der Bytecode Alliance), um WebAssembly-Binärdateien aus JavaScript und TypeScript zu erstellen.
Javy nimmt Ihren JavaScript-Code und führt ihn in einem WebAssembly-Kontext aus.
Es verfügt über eine eingebettete QuickJS-Engine, die zu WebAssembly kompiliert wurde und JavaScript ausführen kann.
Das Projekt bietet sowohl eine CLI als auch eine Reihe von APIs zum Einbetten und Anpassen des Verhaltens beim Ausführen von JavaScript in WebAssembly.
Das Admission Controller Projekt verwendet derzeit Javy aus diesen Gründen:
-
Reife JavaScript-Engine (QuickJS), die zu WebAssembly kompiliert wurde.
-
Unterstützung für WASI-Schnittstelle durch benutzerdefinierte Hostfunktionen.
-
Kleinere Binärgrößen im Vergleich zu anderen JavaScript-zu-WebAssembly-Lösungen.
-
Aktive Entwicklung und Wartung durch die Bytecode Alliance.
Javy-Einschränkungen
Javy führt JavaScript in einer sandboxierten WebAssembly-Umgebung mit bestimmten Einschränkungen aus:
-
WASI-Umgebung nur: Zugriff beschränkt auf stdin/stdout/stderr und ausdrücklich bereitgestellte Host-Funktionen.
-
No Node.js APIs: Standard-Node.js-Module wie
fs,httpodercryptosind nicht verfügbar. -
Eingeschränkte Standardbibliothek: Nur grundlegende JavaScript-Funktionen und ausdrücklich aktivierte APIs sind zugänglich.
-
Einzelthread-Ausführung: Keine Unterstützung für Web Worker oder Multithreading.
Trotz dieser Einschränkungen bietet Javy ausreichende Möglichkeiten zur Erstellung effektiver Admission Controller-Validierungsrichtlinien über das System der Host-Funktionen.
|
Das Schreiben in STDOUT verstößt gegen Richtlinien – verwenden Sie stattdessen STDERR für das Logging. |
Werkzeuge
Das Schreiben von Admission Controller-Richtlinien erfordert:
-
Node.js: JavaScript-Laufzeit.
-
npm: Für das Abhängigkeitsmanagement.
-
TypeScript: Empfohlen für Typensicherheit (optional).
|
Stellen Sie sicher, dass Sie Node.js 18 oder höher verwenden. Ältere Versionen sind möglicherweise nicht mit der Kompilierungs-Toolchain kompatibel. |
Diese TypeScript/JavaScript-Bibliotheken sind nützlich, wenn Sie eine Admission Controller Richtlinie schreiben:
-
Admission Controller JavaScript SDK: Bietet Strukturen und Funktionen, die die Menge an notwendigem Code reduzieren. Es bietet auch Testhelfer und Zugriff auf alle Host-Funktionen.
-
Kubernetes TypeScript-Typen: Bietet TypeScript-Definitionen für alle Kubernetes-Ressourcen, die eine typensichere Entwicklung von Richtlinien ermöglichen.
Das Admission Controller Projekt bietet ein Template JavaScript/TypeScript-Richtlinienprojekt, das Sie verwenden können, um Admission Controller Richtlinien zu erstellen.
Beschaffung der Toolchain
Der einfachste Weg, die Toolchain zu erhalten, ist die Verwendung des Admission Controller JavaScript SDK, das das Javy-Kompilierungsplugin enthält:
npm install kubewarden-policy-sdk
Die Javy-Plugin-Binärdatei ist automatisch enthalten und Sie finden sie unter:
node_modules/kubewarden-policy-sdk/plugin/javy-plugin-kubewarden.wasm
Voraussetzungen für das Tutorial
Während dieses Tutorials benötigen Sie diese Werkzeuge auf Ihrem Entwicklungsrechner:
-
Node.js: Version 18 oder höher mit npm für das Abhängigkeitsmanagement.
-
bats: Wird verwendet, um die Tests zu schreiben und deren Ausführung zu automatisieren. -
kwctl≥ v1.30: CLI-Tool, das von Admission Controller bereitgestellt wird, um seine Richtlinien außerhalb von Kubernetes auszuführen, unter anderem. Es wird im Abschnitt über die Testrichtlinien der Dokumentation behandelt. -
javy≥ 6.0.0: CLI-Tool zum Kompilieren von JavaScript-Code in WebAssembly-Module.