Using k3s.io persona

The k3s.io persona is about deploying Dataverse to k3s.io for local development or demo purposes.

See also

k3s.io is a very small and simplicity first Kubernetes distribution, targeted at use cases like (tiny) microservices, continious integration, internet of things etc. Compared to minikube, k3s is even smaller and more lightweight. You can run k3s on hardware, a virtual machine or in a Docker container.

Start with setup of k3s.io

First, setup a single node K3s cluster. As noted above, there are multiple options for this - one of them, using k3d is described below.

As K3s removed all “in-tree” storage classes, you will need to provide one on your own. For simple purposes like demos or development, local storage is sufficient.

Note

The k3s.io persona will add a local provisioner by default, so the default storage class will “just work”.

For getting started quickly, you can use k3s.io on Docker easily with k3d. You’ll need:

Now create a small test cluster for this demo:

k3d create --publish 8080:80 --wait 0
export KUBECONFIG="$(k3d get-kubeconfig --name='k3s-default')"
../_images/k3s-setup.png

Hint

Remember you need to expose the Ingress port, thus the --publish 8080:80. Ingress will be reachable via http://localhost:8080 later.

Let’s get ready to Dataverse…

Important

Please be aware that the k3s.io persona is using Kustomize to re-use the provided descriptors, but suited for usage with K3s. Please ensure having kubectl v1.14 or later installed or follow the kubectl installation docs.

Now start to deploy Dataverse plus any necessary services and bootstrap via Kustomize:

kubectl apply -k github.com/IQSS/dataverse-kubernetes/personas/demo-k3s
../_images/k3s-deploy.png

When bootstrapping job finished (see kubectl get job,pod and logs), you can “just access” Dataverse. k3s.io persona adds an Ingress route from your host to the service.

../_images/k3s-wait.png

Wait a little longer…

../_images/k3s-done.png

Point your favorite browser to http://localhost:8080 and enjoy your freshly backed Dataverse demo.

../_images/dataverse-localhost-8080.png

Hint

Default login for this demo is dataverseAdmin:admin1. See Credentials and Secrets.

A word on deployment times

On a 2016 laptop with

  • 16 GB RAM,

  • SATA SSD,

  • Intel Core i5-6300U and

  • a fairly fast internet connection for image pulling

it takes about 3 to 4 minutes from zero to hero, not including installation time for Docker, k3d/k3s or kubectl. See also timestamps above.