この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

TypeScript/JavaScriptでのポリシーの作成

TypeScript/JavaScriptのWebAssemblyサポートは急速に進化しています。 このページは2025年11月に最終更新されました。

公式ウェブサイトに記載されている通り:

TypeScriptはJavaScriptに型を追加して拡張します。

JavaScriptを理解することで、TypeScriptはエラーをキャッチし、コードを実行する前に修正を提供するのにかかる時間を節約します。

SUSE Security Admission Controllerはhttps://github.com/bytecodealliance/javy[Javy](バイトコードアライアンスプロジェクト)を使用して、JavaScriptとTypeScriptからWebAssemblyバイナリを構築します。

JavyはあなたのJavaScriptコードを取り込み、WebAssemblyコンテキストで実行します。

JavaScriptを実行できるWebAssemblyにコンパイルされた埋め込みQuickJSエンジンを特徴としています。

このプロジェクトは、JavaScriptをWebAssemblyで実行する際の動作を埋め込んだりカスタマイズしたりするためのCLIとAPIのセットを提供します。

Admission Controllerプロジェクトは現在、以下の理由でJavyを使用しています:

  • WebAssemblyにコンパイルされた成熟したJavaScriptエンジン(QuickJS)。

  • カスタムホスト関数を通じてWASIインターフェースのサポート。

  • 他のJavaScriptからWebAssemblyへのソリューションと比較して、バイナリサイズが小さい。

  • バイトコードアライアンスによる積極的な開発とメンテナンス。

Javyの制限

Javyは、特定の制約のあるサンドボックスWebAssembly環境でJavaScriptを実行します。

  • WASI環境のみ:アクセスはstdin/stdout/stderrおよび明示的に提供されたホスト機能に制限されています。

  • Node.js APIはありませんfshttp、または`crypto`のような標準Node.jsモジュールは利用できません。

  • 制限された標準ライブラリ:コアJavaScript機能と明示的に有効化されたAPIのみがアクセス可能です。

  • シングルスレッド実行:Web Workersやマルチスレッドのサポートはありません。

これらの制限にもかかわらず、Javyはホスト機能システムを通じて効果的なAdmission Controllerバリデーションポリシーを書くための十分な機能を提供します。

STDOUTへの書き込みはポリシーを破ります - 代わりにSTDERRを使用してログを記録してください。

ツール

Admission Controllerポリシーを書くには次が必要です:

  • Node.js:JavaScriptランタイム。

  • npm:依存関係管理のため。

  • TypeScript:型安全のために推奨されます(オプション)。

Node.js 18以上を使用していることを確認してください。古いバージョンはコンパイルツールチェーンと互換性がない場合があります。

これらのTypeScript/JavaScriptライブラリは、Admission Controllerポリシーを書く際に役立ちます:

  • Admission Controller JavaScript SDK:必要なコードの量を減らす構造と関数を提供します。また、テストヘルパーとすべてのホスト機能へのアクセスも提供します。

  • Kubernetes TypeScriptタイプ:すべてのKubernetesリソースのTypeScript定義を提供し、型安全なポリシー開発を可能にします。

Admission Controllerプロジェクトは、https://github.com/kubewarden/js-policy-template[テンプレートJavaScript/TypeScriptポリシープロジェクト]を提供し、Admission Controllerポリシーを作成するために使用できます。

ツールチェーンの取得

ツールチェーンを取得する最も簡単な方法は、Javyプラグインを含むAdmission Controller JavaScript SDKを使用することです:

npm install kubewarden-policy-sdk

Javyプラグインのバイナリは自動的に含まれており、次の場所にあります:

node_modules/kubewarden-policy-sdk/plugin/javy-plugin-kubewarden.wasm

チュートリアルの前提条件

このチュートリアルでは、開発マシンにこれらのツールが必要です:

  • Node.js:依存関係管理のためにnpmを使用したバージョン18以上。

  • bats:テストを書くために使用され、実行を自動化します。

  • kwctl ≥ v1.30:Kubernetesの外でポリシーを実行するためにAdmission Controllerが提供するCLIツール、その他のアクションのために。これは、ドキュメントのテストポリシーセクションで説明されています。

  • javy ≥ 6.0.0:JavaScriptコードをWebAssemblyモジュールにコンパイルするためのCLIツールです。