Writing your first app, part 3
This tutorial begins where Tutorial 2 left off. We’ll walk
through the process for installing your first application written in WebAssembly
into your Kubernetes cluster, then test our application using kubectl
.
Scheduling pods on the Krustlet
In Kubernetes, Pods are the smallest deployable units of compute that can be created and managed in Kubernetes. In other words, your application runs inside a Pod, and we can inspect the status of the application by inspecting the Pod.
Krustlet listens for pods requesting a node with the wasm32-wasi
architecture.
To schedule a Pod that Krustlet understands, we need to provide Kubernetes with
a YAML file describing our Pod.
Create a new file and call it krustlet-tutorial.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: krustlet-tutorial
spec:
containers:
- name: krustlet-tutorial
image: mycontainerregistry007.azurecr.io/krustlet-tutorial:v1.0.0
imagePullSecrets:
- name: <acr-secret>
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "wasm32-wasi"
effect: "NoExecute"
- key: "kubernetes.io/arch"
operator: "Equal"
value: "wasm32-wasi"
effect: "NoSchedule"
Let’s break this file down:
apiVersion
: which version of the Kubernetes API are we targeting?kind
: what type of workload are we deploying?metadata.name
: what is the name of our workload?spec.containers[0].name
: what should I name this module?spec.containers[0].image
: where can I find the module?spec.imagePullSecrets[0].name
: which name has the image pull secret?spec.tolerations
: what kind of node am I allowed to run on?
To deploy this workload to Kubernetes, we use kubectl
.
$ kubectl create -f krustlet-tutorial.yaml
Now that the workload has been scheduled, Krustlet should start spewing out some logs in its terminal window, reporting updates on the workload that was scheduled.
We can check the status of our pod:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
krustlet-tutorial 1/1 Running 0 18s
We can also inspect the logs, too:
$ kubectl logs krustlet-tutorial
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Cleanup
Once you’re finished with this tutorial, you can destroy the cluster and the registry.
Destroying the cluster can be accomplished with:
$ kind delete cluster
And destroying the registry can be accomplished by removing the resource group.
$ az group delete --name myResourceGroup
Conclusion
This concludes the basic tutorial. Congratulations!
If you are familiar with Krustlet and are interested in more in-depth topics, check out the Topic Guides.
You might also be scratching your head on what to read next.