**Important:** If you want to bake a disk image into the container which will be copied into /mnt and used if no image is found there on startup, make sure to put it as `rq0.dsk` in the build directory.
To run in Kubernetes, first you need to build the docker image (preferably with a disk baked in) and push it to a registry your cluster has access to.
Once you've done that, run `./bootstrap-k8s.sh <tag>`. `tag` should be a ref to the docker image, uploaded to a registry the cluster can access.
To expose the services on an external IP, first install MetalLB, and then use `./misc/configure-metallb.sh <ip>`. `ip` should be an IP address on a broadcast domain the k8s nodes are on.
If you built the Docker container without a baked-in image, instead of using the normal `bootstrap-k8s.sh`, you'll need to use `misc/bootstrap-k8s-imageless.sh` as follows:
Run `./misc/bootstrap-k8s.sh <tag> <disk_filename>`. `tag` should be a ref to the docker image, uploaded to a registry the cluster can access. `disk_filename` should be a gzip-compressed PDP-11 disk image, which will be extracted and attached to the pdp as rq0.
To use an external IP, MetalLB is required. Therefore, the cluster must not have ServiceLB enabled, as it will conflict. For k3s, just add `--disable=servicelb` to the server command line options. For k3d, create the cluster as follows: