Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
oracle4engineer
PRO
March 11, 2026
Technology
250
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
March 11, 2026
More Decks by oracle4engineer
See All by oracle4engineer
Oracle AI Databaseデータベース・サービスのメンテナンス(BaseDB/ExaDB-D/ExaDB-XS)
oracle4engineer
PRO
4
1.4k
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.9k
CrossplaneによるCloud Native Control Plane
oracle4engineer
PRO
0
93
OCI Oracle AI Database Services新機能アップデート(2026/03-2026/05)
oracle4engineer
PRO
0
360
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
260
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Oracle Database Gold Image
oracle4engineer
PRO
1
160
Other Decks in Technology
See All in Technology
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.6k
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
220
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
770
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
やさしいA2A入門
minorun365
PRO
11
1.7k
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development with AI-DLC
yoshidashingo
0
170
RAG を使わないという選択肢
tatsutaka
1
180
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
770
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
670
フロンティアAIのゲート化と地政学リスク
nagatsu
0
120
小さく始める AI 活用推進 ― 日経電子版 Web チームの事例/nikkei-tech-talk47
nikkei_engineer_recruiting
0
220
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
230
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
420
How to Talk to Developers About Accessibility
jct
2
230
The Cost Of JavaScript in 2023
addyosmani
55
10k
The SEO Collaboration Effect
kristinabergwall1
1
480
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Optimizing for Happiness
mojombo
378
71k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Invisible Side of Design
smashingmag
302
52k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Paper Plane (Part 1)
katiecoart
PRO
0
8.8k
Transcript
コンテナ時代の次の一手: Wasm 最前線 Oracle Cloud Hangout Cafe S11 #2 Kyotaro
Nonaka Solutions Architect Oracle Corporation Japan Mar. 11, 2026
アジェンダ 2 Copyright © 2026, Oracle and/or its affiliates 1
2 3 4 はじめに Wasmアプリケーション実践 Wasmとコンテナ – VS or With Wasm on Kubernetes
自己紹介 Kyotaro Nonaka 野中恭大郎 Solutions Architect • Java EE/Messaging/NoSQL/Frontend •
Oracle Cloud Hangout Café メンバー • Oracle Groundbreakers Advocate • 元ERPパッケージ開発者 • 最近はコーヒー淹れるのにハマってます 3 Copyright © 2026, Oracle and/or its affiliates @non_kyon
Wasmアプリケーション実践
Wasmの特徴を再確認 バイナリ形式で実行でき、 パースや最適化のフェー ズを挟まないため高速 Fast サンドボックス内で実行さ れ、プログラムがファイルや OS領域に直接アクセス できない(WASIを利用) Safe
C/Rust/Go などから一 度コンパイルすれば、実 行環境の差異はWasm Runtimeが吸収 Portable 5 Copyright © 2026, Oracle and/or its affiliates
WebAssembly System Interface (WASI) Wasm単体はサンドボックスで実行されるため、標準出力など OS機能とのやりとりがそれ単体では不可能 → WASI を利用する 特長
• OS差異を吸収 (Windows / Linux / macOSで共通 動作) • 必要な機能のみ明示的に許可 (最小権限) • サンドボックス維持したまま外部アクセス提供 機能 (例) • wasi-io : I/Oインターフェース • wasi-filesystem : ファイルシステムアクセス • wasi-clocks : 時刻など取得 6 Copyright © 2026, Oracle and/or its affiliates Wasmが外部とやり取りするためのインタフェース Wasm Module OS wasi-cli wasi-filesystem wasi-closks WASI WASIが OS機能を呼び出し Wasmからの要求は 必ずWASIを通る
Wasm Runtime と WASI Runtime Wasm runtime • .wasmバイナリを実行する -
バイトコード検証 - 命令実行 (JIT / AOT) - メモリ管理 - サンドボックス制御 - Instance (後述)のスケーリング 主なWasm Runtime • ブラウザ - V8 - SpiderMonkey • サーバー - Wasmtime - Wasmer - WasmEdge WASI Runtime • WASI を実装した Wasm Runtime • サーバーサイドの文脈ではWasm Runtime と WASI Runtime は実質的にほぼ同等のもの 主なサーバーサイド WASI Runtime • Wasmtime - WASIのリファレンス実装 - 標準規格への準拠が強い • Wasmer - 軽量、埋め込み可能、複数言語サポート - 移植性とサンドボックス化に重点 • WasmEdge - エッジコンピューティング向け最適化 - CNCFプロジェクト - 高速起動と低レイテンシを実現 7 Copyright © 2026, Oracle and/or its affiliates
Wasmの実行モデルを整理する Wasmは OS ではなく Wasm Runtime に依存 • Wasm Module
: Wasm の実行単位 (≒ .wasm) • Wasm Runtime : 検証/実行/メモリ管理 etc. • Host Environment : Wasm の実行環境 (≒ OS/ブ ラウザ) もう少し詳しく書くと、 • WASI 実装はWasm Runtimeに内包される • Wasm Runtime と WASI 実装の責任範囲は前スライ の通り 8 Copyright © 2026, Oracle and/or its affiliates Host Env. (OS/ブラウザ) Wasm Runtime Wasm Module Host Env. (OS/ブラウザ) Wasm Runtime WASI Implementation Wasm Module Wasm Module Wasm Module Wasm Module Wasm Module
Wasmで実際に何を動かすか ここまで説明したように、WasmはOS依存が薄いので • 「軽量なVM」という単位で扱わない • 「実行モジュール」という単位で扱う といったことから、サーバーサイドにおいては以下のユースケースを考えてみる 9 Copyright ©
2026, Oracle and/or its affiliates 軽量なマイクロサー ビス(Webサービス) プラグイン実行基盤 サンドボックス実行 基盤
軽量なマイクロサービス(Webサービス) Wasmの持つ特長 • 起動にかかる時間が少なく、コールドスタートに強い • ネイティブに近い実行パフォーマンス • Runtime依存アーキテクチャのため、実行環境を選ばない コンテナと特長が似ているが… •
コンテナより軽いのは事実 • ただし重要なのは、コンテナよりも小さな実行単位ということ からわかるように、スケール単位が小さいこと • FaaS と概念的には似たものとなる 10 Copyright © 2026, Oracle and/or its affiliates スケール前提のマイクロサービス設計と相性が良い コンテナより細かい粒度でサービス分割が可能
プラグイン実行基盤 プラグイン実装の要件を考える • ホストアプリケーションを壊さない安全性 • 実行権限の制御 • 差し替え前提のアーキテクチャ 要件に対応するWasmの特長 •
サンドボックス実行 • WASIによる権限制御 • 小さな実行単位 外部プロセス型のプラグイン Wasmプラグイン 11 Copyright © 2026, Oracle and/or its affiliates ホストを壊さないプラグイン基盤の実現 Host App Plugin (ex. container) プロセス間通信 Host App Wasm Runtime Wasm Module 同一プロセス内で Pluginを実行
埋め込んでいるように見えるのに差し替え前提…? Wasm Moduleは、Host アプリケーションに静的に埋め込まれ るわけではなく、実行のタイミングで動的にロードされるように動作 する 内包されている図は(私みたいなJava脳には特に) • コンパイル時にリンクする •
バイナリに含める みたいな捉え方になりがちだが、正確には • 実行時にロードする • Runtimeが検証する • メモリ分離された状態で実行する という実行の形になるので、「実行時にロードされている」と捉える と分かりやすい 1. 起動直後 2. 実行時ロード 3. 実行中 12 Copyright © 2026, Oracle and/or its affiliates Host App Wasm Runtime Wasm Module Host App Wasm Runtime Wasm Module Host App Wasm Runtime Wasm Module Wasm Module
サンドボックス実行基盤 サンドボックスは、信頼できない(≒安全かわからない)コード/スクリプトを安全に実行してホストを保護するのが目的 サンドボックス実行の要件 • メモリ隔離 • 外部呼び出しの制限 • 不正コード検出 対応するWasmの特長
• メモリ安全、線形メモリ • WASIの最小権限 • バイトコード検証 13 Copyright © 2026, Oracle and/or its affiliates 安全な実行の単位としてサンドボックス化が成立 分離単位 代表例 VM OS単位 Container プロセス単位 Wasm モジュール単位 ▪実行単位としての比較
ちょっと補足 : 線形メモリ…? 線形メモリとは、言うなればただの巨大なバイト配列のこと それがなぜメモリ安全に寄与するかというと、 • Wasmは Module を Runtime
がロードして Instance を生成する • 実際に実行されるのは Instance • Instance はそれぞれ独立した線形メモリ (巨大な byte[])を持つ • Wasmの命令はその線形メモリ以外にアクセスできないように作られている 結果としてホストプロセスのメモリや他のInstanceのメモリを破壊できない 14 Copyright © 2026, Oracle and/or its affiliates Javaで言い換えると - Class を ClassLoader が Instance にして - Instance がそれぞれ専用の heap 領域を持って - Instance はそれぞれの heap を扱う ってことなんだなと理解
Wasmとコンテナ – VS or With
Wasmはコンテナを置き換えるのか? 16 Copyright © 2026, Oracle and/or its affiliates 観点
コンテナ Wasm 分離の方式 namespace / cgroup Sandbox 分離の単位(スケール単位) process Instance (Module) 起動時間 ms〜sec μs〜ms 抽象化の対象 OS CPU/メモリ 依存 ホストのカーネル Runtime 実装 互換性 多くは Linux カーネル Runtime 実装 + WASI
Wasmはコンテナを置き換えるのか? 17 Copyright © 2026, Oracle and/or its affiliates 観点
コンテナ Wasm 分離の方式 namespace / cgroup Sandbox 分離の単位(スケール単位) process Instance (Module) 起動時間 ms〜sec μs〜ms 抽象化の対象 OS CPU/メモリ 依存 ホストのカーネル Runtime 実装 互換性 多くは Linux カーネル Runtime 実装 + WASI
そもそも比較対象にすべきか? 18 Copyright © 2026, Oracle and/or its affiliates 抽象化のレイヤ/レベルが違う!
コンテナが抽象化するもの → OS Wasmが抽象化するもの → CPU / メモリ (計算リソース)
Wasm とコンテナは役割が違う コンテナの責務 • アプリケーションのパッケージング • ネットワークやファイルシステムの隔離 • プロセスの管理 コンテナの設計
• サービス単位で分離 • サービス単位でビルド • プロセスが境界線 Wasmの責務 • 安全なコード実行の単位 • ネットワークやファイルシステムは責務の外(WASI) • 命令の検証と線形メモリの利用 Wasmの設計 • ロジック単位で分離 • ロジック単位で実行時ロード • 命令セットが境界線 19 Copyright © 2026, Oracle and/or its affiliates 責任を負う範囲や設計レベルが異なる コンテナの役割は「アプリケーション」 そのもの Wasmの役割はアプリケーションを構成する 「パーツ」
Wasm はコンテナの内部で動作する ▪Kubernetes の場合 WasmとコンテナはPortabilityという共通項はあるが、そもそも 階層が違うので、単純に置き換えるものとして表現できるわけで はない コンテナは 「どこで動作するか」を環境の再現性で解決する Wasmは
「何を動かすか」を Fast と Safe で解決する 20 Copyright © 2026, Oracle and/or its affiliates Kubernetes Cluster Pod Pod Container Container Container Container Wasm Runtime Wasm Runtime Wasm Runtime Wasm Runtime Wasm Module Wasm Module Wasm Module Wasm Module Wasm Module Wasm Module Wasm Module Wasm Module
アプリケーション設計時の判断軸をまとめてみる 設計要件 コンテナ or Wasm OS機能 (ネットワーク、ストレージ、プロセス) まで含めて隔離したい コンテナ アプリケーションに拡張機能としてユーザ定義ロジックを(安全に)読み込ませたい
Wasm 複数の拡張ロジックを1つのアプリケーション内部で安全に実行したい Wasm 既存のKubernetes運用資産を最大活用したい コンテナ 高頻度なスケールやスパイクに即応したい Wasm サービス/アプリケーション単位でデプロイしたい コンテナ ロジック単位でデプロイしたい Wasm 21 Copyright © 2026, Oracle and/or its affiliates
Wasm with コンテナ のパターン 22 Copyright © 2026, Oracle and/or
its affiliates コンテナの中で Wasmを動かす Wasmをプラグイン として使う FaaS 実行基盤で 使う Kubernetesの RuntimeClassで 共存
Wasm with コンテナ のパターン 23 Copyright © 2026, Oracle and/or
its affiliates コンテナの中で Wasmを動かす Wasmをプラグイン として使う FaaS 実行基盤で 使う Kubernetesの RuntimeClassで 共存 アプリケーションのレイヤー アプリケーションのレイヤー FaaS ランタイムのレイヤー コンテナランタイムの レイヤー
コンテナの中で Wasm を動かす 概要 Wasm Runtime がアプリケーションレイヤーの上にあるパターン アプリケーションがWasm runtimeを組み込むような形 ユースケース
• ビジネスロジック拡張 • ユーザーコード実行 • スクリプトエンジン 実利用ケース • Extism : Wasmのクロス・ランゲージ・フレームワーク • Wasmtime embedding : Wasmtime の埋め込み • Spin : Wasm のマイクロサービス/Web App フレーム ワーク 24 Copyright © 2026, Oracle and/or its affiliates Container Application Wasm Runtime .wasm .wasm .wasm Host Env. (ex. k8s)
Wasm をプラグインとして使う 概要 Wasm Runtime がアプリケーションレイヤーの上にあるパターン アプリケーションを再ビルドせず拡張 ユースケース • 認証
• ロギング • リクエスト変換 • レート制御 実利用ケース • proxy-wasm : Wasmの機能をネットワーク領域に拡張 • Envoy Wasm Filter : proxy-wasm 仕様に基づいて 記述されたフィルターを実行可能 25 Copyright © 2026, Oracle and/or its affiliates ユースケースは異なるが構造的には前スライドと同様 Container Application Wasm Runtime .wasm .wasm .wasm Host Env. (ex. k8s)
FaaS 実行基盤で使う 概要 FaaS 実行基盤が Wasm 実行をサポートしているパターン Cold Start に強い
Wasm は FaaS と相性が良い ユースケース • 高速起動 • 高密度実行 • 安全なユーザーコード 実利用ケース • OpenFunction • Knative + WasmEdge • Fermyon 26 Copyright © 2026, Oracle and/or its affiliates FaaS Platform Wasm Runtime .wasm .wasm .wasm
KubernetesでRuntimeClassとして共存 Wasm on Kubernetes の章で詳しく話します 27 Copyright © 2026, Oracle
and/or its affiliates
Wasm on Kubernetes
再掲: Wasmで実際に何を動かすか ここまで説明したように、WasmはOS依存が薄いので • 「軽量なVM」という単位で扱わない • 「実行モジュール」という単位で扱う といったことから、サーバーサイドにおいては以下のユースケースを考えてみる 29 Copyright
© 2026, Oracle and/or its affiliates 軽量なマイクロサー ビス(Webサービス) プラグイン実行基盤 サンドボックス実行 基盤
再掲: Wasmで実際に何を動かすか ここまで説明したように、WasmはOS依存が薄いので • 「軽量なVM」という単位で扱わない • 「実行モジュール」という単位で扱う といったことから、サーバーサイドにおいては以下のユースケースを考えてみる 30 Copyright
© 2026, Oracle and/or its affiliates 軽量なマイクロサー ビス(Webサービス) プラグイン実行基盤 サンドボックス実行 基盤
おさらい : Kubernetes におけるコンテナ・ランタイム 高レベルランタイム • kubelet からの命令を受け、イメージの取得などを行う • CRI仕様に従って実装
• 低レベルランタイムにコンテナの作成を要求 低レベルランタイム • OCI (Open Container Initiative)仕様に従って実装 • コンテナ環境を作成/操作 (namespace/cgroup) • 高レベルランタイムによって実行 31 Copyright © 2026, Oracle and/or its affiliates kubelet 高レベルランタイム(containerd/CRI-O etc.) 低レベルランタイム(runc etc.) コンテナ コンテナ コンテナ API OCI仕様 管理
Kubernetes で Wasm Module を Workload として実行する Wasm は低レベル/高レベル両方のコンテナランタイムで有効にできる Wasm
Module を実行するオプションは2つ • 低レベルコンテナランタイム経由で実行 - crun や youki などWasm組み込みのサポートがあるコンテナランタイムを利用 • 高レベルコンテナランタイム経由で実行 - 低レベルコンテナランタイムを呼び出して Wasm モジュールを実行 - containerd の runwasi というサブプロジェクトを利用 32 Copyright © 2026, Oracle and/or its affiliates ユースケース:軽量なマイクロサービス(Webサービス) 参考: https://www.cncf.io/blog/2024/03/12/webassembly-on-kubernetes-from-containers-to-wasm-part-01/
containerd と CRI-O では Wasm 統合の方法が異なる ▪containerdの場合はshim拡張で Wasm を追加 ▪CRI-O
の場合は低レベルランタイム(この場合はOCI Runtime)を拡張する必要がある 33 Copyright © 2026, Oracle and/or its affiliates 高レベルランタイム(containerd) runwasi containerd-shim-runc-v2 crun + WasmEdge youki + WasmEdge containerd-shim Wasm Runtime 低レベル ランタイム WasmEdge Wasmtime Wasm Module 高レベルランタイム(CRI-O) 低レベルランタイム※ Wasm Runtime WasmEdge Wasmtime Wasm Module crun ※正確にはOCI Runtime Wasmer … … Wasmer
runwasi • containerd と Wasm runtime をつなぐアダプタと して機能 • Wasm
Workload を containerd 管理下で実 行可能にする • 実行は直接 or CRI プラグイン経由 • shim の単位で Wasm Runtime を分離できる = Pod レベルで Wasm Runtime を選択可能 • https://github.com/containerd/runwasi 34 Copyright © 2026, Oracle and/or its affiliates
crun • crun は OCI runtime の一つで、コンテナを実行 する低レベルランタイム • Wasm
workload の実行をネイティブにサポート - Runtime は WasmEdge, Wasmtime, Wasmer, etc. をサポート • crun であればOKというわけではなく、Runtime を 埋め込む必要がある - 選べる Runtime は1種類 = Wasm Runtime の種類は Node 単位で固定になる • https://github.com/containers/crun/blob /main/docs/wasm-wasi-on- kubernetes.md 35 Copyright © 2026, Oracle and/or its affiliates
RuntimeClass - Kubernetes 的に Wasm をどう使うか RuntimeClass • ランタイムを設定する Kubernetes
の機能 • 設定値は Pod のコンテナを稼働させるために利用される • Wasm Runtime を利用する場合に利用できる 36 Copyright © 2026, Oracle and/or its affiliates
RuntimeClass の使い方 RuntimeClass Wasm Pod 37 Copyright © 2026, Oracle
and/or its affiliates containerd + runwasi apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: wasm handler: runwasi apiVersion: v1 kind: Pod metadata: name: wasm-demo spec: runtimeClassName: wasm containers: - name: app image: your/wasm-image:latest
RuntimeClass の使い方 RuntimeClass CRI-O の場合 • handler に記載するのはCRI-O側に登録したOCI Runtime の名称
Wasm Pod annotation の key は実装や環境によって変わるため注意 38 Copyright © 2026, Oracle and/or its affiliates CRI-O + crun apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: crun handler: crun apiVersion: v1 kind: Pod metadata: name: wasm-demo annotations: run.oci.handler: “wasm” #一例 spec: runtimeClassName: crun containers: - name: app image: your/wasm-image:latest
Kubernetes で Wasm Module を コンテナ内のプラグインとして利用する • プラグイン形式でWasmを利用する場合、Wasm Runtime はアプリケーションの内部にある
• 内部的に動的ロードしてるだけで、RuntimeClass なども 関係しない ex.) • kube-scheduler-wasm-extension • Envoy Wasm Filter 39 Copyright © 2026, Oracle and/or its affiliates ユースケース: プラグイン実装 Host App Wasm Runtime Wasm Module Wasm Module コンテナ Kubernetes Cluster Pod Pod Container Container Container Container Kubernetes からはただのコンテナでしかなく、 Wasmを認識しない
Wasm on <platform> デモ Wasm Runtime on Application フレームワークを使って簡単なWasm API
サーバをデプロイ Wasm Plugin on OKE ConfigMap を 使ったプラグイン実装のユースケース Wasm Workload on OKE Container Pod と Wasm Podの共存 40 Copyright © 2026, Oracle and/or its affiliates
デモ: Wasm Runtime on Application Spin という Wasm Microservices フレームワークを使用
• 多言語対応 • Spin Wasm Runtime を内包 • API サーバが簡単に作れる デモ • シンプルな Greeting API • POST /greet Request • Response • Wasm Module をそのままHTTPサービスとして公開 • アプリケーションが Wasm Runtime を内包 • Spinが動く環境であればどこでも動作する 41 Copyright © 2026, Oracle and/or its affiliates Application (Spin) Wasm Runtime (Spin) .wasm Host Env. (OL9) { "name": “OCHaCafe", "lang": "jp“ } {“message”: “こんにちは OCHaCafe!"}
デモ: Wasm Plugin on OKE Extism • Wasm で Plugin
開発が行えるフレームワーク Axum • Rust の Web アプリケーション フレームワーク デモ • シンプルな Greeting API • POST /greet Request • Response • Wasm Module (.wasm) を base 64 encode して Config Mapとして保存 • アプリケーションは実行時に.wasm モジュールをConfig Mapからロード 42 Copyright © 2026, Oracle and/or its affiliates { "name": “OCHaCafe", "lang": "jp“ } {“message”: “こんにちは OCHaCafe!"} Container Application (Rust + Axum) Wasm Runtime (Extism) Host Env. (OKE) .wasm Config Map load()
デモ: Wasm Plugin on OKE PLUGIN_PATHに .wasm のパスを通すことで実行時にロード Config Map
の binaryData にエンコードした文字列を配置 43 Copyright © 2026, Oracle and/or its affiliates Container Application (Rust + Axum) Wasm Runtime (Extism) Host Env. (OKE) .wasm Config Map Config Map v1 v2 Config Map の更新でWasm Module内の処理を切り替え可能
デモ: Wasm Workload on OKE • 共通ロジックをベースに、用途ごとにディレクトリを分ける - Web UI
用にビルド - コンテナ用にイメージ化 • WebAssembly は Web と Server Side で前提が異 なるため、分けてパッケージングする考え方が主流 - ブラウザ は JavaScript / Web API と接続する前提 - WASI は I/O、ファイル、乱数などのインターフェースを提 供する前提 • Portability は共通ロジックによって担保する 44 Copyright © 2026, Oracle and/or its affiliates デモ資材の解説 csv2json/ ├─ Cargo.toml ├─ core/ │ ├─ Cargo.toml │ └─ src/lib.rs ├─ web-ui/ │ ├─ Cargo.toml │ ├─ src/lib.rs │ ├─ index.html │ └─ main.js ├─ wasi-cli/ │ ├─ Cargo.toml │ └─ src/main.rs └─ k8s/ ├─ runtimeclass.yaml └─ job.yaml 共通ロジック Web用 コンテナ用 .html .js .wasm .wasm
デモ: Wasm Workload on OKE CRI-O + crun + Wasm
Runtime on OKE • OKE の高レベルコンテナランタイムは CRI-O • OKE の低レベルコンテナランタイムは crun (旧 ver. では runc の場合も) - デフォルトだと Wasm 対応していない可能性が高い • 参考: Wasm 対応の検証手順() - OKE ノード上の CRI-O 1.34 + default crun で Wasm サンプル Pod を起動 - イメージ pull / create / start は成功 - 実行時に exec container process '/wasi_example_main.wasm': Exec format error 必要な手順をまとめると以下 • OKE用のImage をベースに Custom Image 化 - Wasm Runtime を crun に埋め込む • 作成した Custom Image を利用する Node Pool を作成 • 作成した Node Pool 上で Wasm Workload を実行する 45 Copyright © 2026, Oracle and/or its affiliates OKE Node の考え方
デモ: Wasm Workload on OKE 既存 crun はそのまま、RuntimeClass で選べるように追加する (既存のものを入れ替えることも可能)
• Wasm Runtime は WasmEdge にする • 公式のドキュメントに従って(できればよかったのだけど実際はかなりハマった)、crun をビルドする • /etc/crio/crio.conf.d/99-wasm.conf を作る - CRI-O が WasmEdge enabled な crun を認識する 46 Copyright © 2026, Oracle and/or its affiliates Custom Image 作り - crun の Wasm 対応化 $ sudo dnf install git –y git $ sudo curl –sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | sudo bash -s -- -p /usr/local $ wasmedge –version $ sudo dnf config-manager --set-enabled ol8_codeready_builder $ sudo dnf makecache $ sudo dnf install -y git make gcc pkgconfig libtool autoconf automake libcap-devel libseccomp-devel systemd-devel protobuf-c-devel yajl-devel $ ./autogen.sh $ ./configure --with-wasmedge $ make -j"$(nproc)" $ sudo make install
デモ: Wasm Workload on OKE この時点で Custom Image を作成し、OKEのノードとして設定 •
Runtime Class を作成 - WasmEdgeが利用できるRuntimeを選択可能に • Pod を起動 … しない! - pull / Schedule までは成功 - OL8/cgroup v1 環境で devices.allow の既知issueに遭遇 - https://github.com/containers/crun/issues/1599 47 Copyright © 2026, Oracle and/or its affiliates Custom Image 作り – Wasm 対応 crun を CRI-O に認識させる OL9 / cgroup v2 環境であれば実行できるはずだが、現時点ではここまでとしておく
まとめ +α Wasm アプリケーション • Fast / Safe / Portable
• 外部インターフェースを提供するWASI • Wasm は Wasm Runtime に依存 Wasm とコンテナ • そもそも抽象化のレイヤーが異なる • コンテナがアプリそのものなら、Wasm はそのパーツ • うまく組み合わせて使うもの Wasm on Kubernetes • アプリケーションの上でコンテナの内部で動作 • アプリケーションのプラグインとしてコンテナ内部で動作 • コンテナ・ランタイムを拡張してWorkloadとして動作 因みに、今回参考にした書籍 特に今回資料化していないような部分(Wasmそのものの仕組 みとか機能とか)を体系的に理解するのにおすすめ 48 Copyright © 2026, Oracle and/or its affiliates Wasm はコンテナの代替ではなくコンテナを拡張する
None