Slide 1

Slide 1 text

Go containerless on Kubernetes With WebAssembly and Rust Deepu K Sasidharan

Slide 2

Slide 2 text

@oktaDev | @deepu105 | deepu.tech ➔ JHipster co-chair ➔ Java Champion ➔ Creator of KDash, JDL Studio, JWT UI ➔ Developer Advocate @ Okta ➔ OSS aficionado, polyglot dev, author, speaker Hi, I’m Deepu K Sasidharan @[email protected] deepu.tech @deepu105 deepu05

Slide 3

Slide 3 text

@oktaDev | @deepu105 | deepu.tech Containers on Kubernetes

Slide 4

Slide 4 text

@oktaDev | @deepu105 | deepu.tech

Slide 5

Slide 5 text

@oktaDev | @deepu105 | deepu.tech Advantages of Containers

Slide 6

Slide 6 text

@oktaDev | @deepu105 | deepu.tech →Uses less system resources than a VM →Portable →Consistent and reproducible builds →Faster to boot and run →Easier to scale and manage →More secure →… →Container images are lightweight

Slide 7

Slide 7 text

@oktaDev | @deepu105 | deepu.tech Limitations of Containers

Slide 8

Slide 8 text

@oktaDev | @deepu105 | deepu.tech →Needs a lot of low level OS primitives →Does not provide a fine grained control of security sandbox →Images are OS and architecture dependent

Slide 9

Slide 9 text

@oktaDev | @deepu105 | deepu.tech Containerless == WebAssembly webassembly.org

Slide 10

Slide 10 text

@oktaDev | @deepu105 | deepu.tech

Slide 11

Slide 11 text

@oktaDev | @deepu105 | deepu.tech

Slide 12

Slide 12 text

@oktaDev | @deepu105 | deepu.tech Advantages of Wasm + WASI

Slide 13

Slide 13 text

@oktaDev | @deepu105 | deepu.tech →Security isolation (memory isolation and sandbox) →Memory safety and efficiency →Lightweight →Portable(OS/Architecture) →Startup speed and near native execution speed

Slide 14

Slide 14 text

@oktaDev | @deepu105 | deepu.tech Downsides of Wasm + WASI

Slide 15

Slide 15 text

@oktaDev | @deepu105 | deepu.tech →Resource isolation is still not standardized →Networking is still not standardized. No TLS. →Network isolation is still not standardized →Multithreading is still in the works →You can’t just take existing projects and make a Wasm binary →Not matured ecosystem

Slide 16

Slide 16 text

@oktaDev | @deepu105 | deepu.tech WebAssembly Runtimes

Slide 17

Slide 17 text

@oktaDev | @deepu105 | deepu.tech WasmEdge Widely used in the Kubernetes ecosystem WASI-like extensions Container tooling, Dapr microservices

Slide 18

Slide 18 text

@oktaDev | @deepu105 | deepu.tech Others Wasmtime Wasmer Spin Slight

Slide 19

Slide 19 text

@oktaDev | @deepu105 | deepu.tech WebAssembly on Kubernetes

Slide 20

Slide 20 text

@oktaDev | @deepu105 | deepu.tech Existing Ecosystem Compatibility

Slide 21

Slide 21 text

@oktaDev | @deepu105 | deepu.tech

Slide 22

Slide 22 text

@oktaDev | @deepu105 | deepu.tech

Slide 23

Slide 23 text

@oktaDev | @deepu105 | deepu.tech

Slide 24

Slide 24 text

@oktaDev | @deepu105 | deepu.tech Rust + WebAssembly

Slide 25

Slide 25 text

@oktaDev | @deepu105 | deepu.tech →First class WebAssembly support →Smaller binaries →Great ecosystem for WebAssembly →Great Developer Experience →Performance: Low-Level Control with High-Level Ergonomics

Slide 26

Slide 26 text

@oktaDev | @deepu105 | deepu.tech Demo time

Slide 27

Slide 27 text

@oktaDev | @deepu105 | deepu.tech # Create a Rust WASM app $ clone https://github.com/deepu105/word-generator-wasi-rust.git # Build for WASM $ rustup target add wasm32-wasi $ cargo build /-target wasm32-wasi /-release # Install WasmEdge for testing /> https://wasmedge.org/docs/start/install # Run the server locally $ wasmedge target/wasm32-wasi/release/weather_forecast.wasm # Open another terminal and test the server $ curl "http://localhost:8090?starts_with=d" https://github.com/deepu105/ word-generator-wasi-rust

Slide 28

Slide 28 text

@oktaDev | @deepu105 | deepu.tech # Install buildah for creating OCI images /> https://github.com/containers/buildah/blob/main/install.md # Build an OCI Image $ buildah build /-annotation "module.wasm.image/variant=compat-smart" -t word_generator_wasi Dockerfile_OCI # Push the OCI Image to Docker Hub $ buildah push /-authfile ~/.docker/config.json word_generator_wasi docker://docker.io/deepu105/word_generator_wasi:latest # Create a "KinD" Cluster $ kind create cluster # Enable WasmEdge support using KWasm /> https://kwasm.sh/quickstart/ # Deploy the app $ kubectl apply -f k8s-manifest.yaml https://github.com/deepu105/ word-generator-wasi-rust

Slide 29

Slide 29 text

@oktaDev | @deepu105 | deepu.tech Future?

Slide 30

Slide 30 text

@oktaDev | @deepu105 | deepu.tech →Rust is an ideal language for Wasm+WASI →Many features are being standardized →Machine learning support is coming →Many new features →Containerless is definitely on the horizon →WebAssembly on Kubernetes and cloud is still evolving

Slide 31

Slide 31 text

@oktaDev | @deepu105 | deepu.tech Thank You Subscribe to our newsletter a0.to/nl-signup/java