Search⌘ K

Deploy and Test the App

Explore deploying a WebAssembly app on Kubernetes by applying a YAML configuration that includes Deployment, Service, and Ingress components. Learn to schedule pods using RuntimeClass and node labels, verify deployment status, test app accessibility, and clean up cluster resources effectively.

We'll cover the following...

The app is defined in the app.yml file in the wasm folder of the course’s GitHub repository and comprises a Deployment, a Service, and an Ingress.

https://github.com/Educative-Content/TheK8sBook/tree/main/wasm/app.yml

Configuring the resources

The important part of the Deployment YAML is the reference to the RuntimeClass in the Pod spec. This will ensure all 3 replicas get scheduled to a node that meets the nodeSelector requirements in the RuntimeClass (nodes with the wasm=yes label). All 3 replicas will be scheduled to the agent-1 node in our example.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wasm-spin
spec:
  replicas: 3
  selector:
    matchLabels:
      app: wasm
  template:
    metadata:
      labels:
        app: wasm
    spec:
      runtimeClassName: rc-spin
      containers:
        - name: testwasm
          image: nigelpoulton/k8sbook:wasm-0.1
          command: ["/"]
---
apiVersion: v1
kind: Service
metadata:
  name: svc-wasm
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app: wasm
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ing-wasm
  annotations:
    ingress.kubernetes.io/ssl-redirect: "false"
spec:
  ingressClassName: traefik
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: svc-wasm
                port:
                  number: 80
Playground

There’s also an Ingress and a Service present in the above file. The Ingress directs traffic arriving on the ...