---
layout: default
navsection: installguide
title: Arvados on Minikube
...
{% comment %}
Copyright (C) The Arvados Authors. All rights reserved.

SPDX-License-Identifier: CC-BY-SA-3.0
{% endcomment %}

This page documents setting up and running the "Arvados on Kubernetes":/install/arvados-on-kubernetes.html @Helm@ chart on @Minikube@.

h2. Prerequisites

h3. Install tooling

Install @kubectl@:

* Follow the instructions at "https://kubernetes.io/docs/tasks/tools/install-kubectl/":https://kubernetes.io/docs/tasks/tools/install-kubectl/

Install @helm@:

* Follow the instructions at "https://docs.helm.sh/using_helm/#installing-helm":https://docs.helm.sh/using_helm/#installing-helm

h3. Install Minikube

Follow the instructions at "https://kubernetes.io/docs/setup/minikube/":https://kubernetes.io/docs/setup/minikube/

Test the connection:

<pre>
$ kubectl get nodes
</pre>

Test @helm@ by running

<pre>
$ helm ls
</pre>

There should be no errors. The command will return nothing.

h2(#git). Clone the repository

Clone the repository and nagivate to the @arvados-k8s/charts/arvados@ directory:

<pre>
$ git clone https://github.com/arvados/arvados-k8s.git
$ cd arvados-k8s/charts/arvados
</pre>

h2(#Start). Start the Arvados cluster

All Arvados services will be accessible on Minikube's IP address. This will be a local IP address, you can see what it is by running

<pre>
$ minikube ip
192.168.39.15
</pre>

Generate self-signed SSL certificates for the Arvados services:

<pre>
$ ./cert-gen.sh `minikube ip`
</pre>

The @values.yaml@ file contains a number of variables that can be modified. At a minimum, review and/or modify the values for

<pre>
  adminUserEmail
  adminUserPassword
  superUserSecret
  anonymousUserSecret
</pre>

Now start the Arvados cluster:

<pre>
$ helm install arvados . --set externalIP=`minikube ip`
</pre>

And update the Kubernetes services to have the Minikube IP as their 'external' IP:

<pre>
$ ./minikube-external-ip.sh
</pre>

At this point, you can use kubectl to see the Arvados cluster boot:

<pre>
$ kubectl get pods
$ kubectl get svc
</pre>

After a few minutes, you can access Arvados Workbench at the Minikube IP address:

* https://&lt;MINIKUBE IP&gt;

with the username and password specified in the @values.yaml@ file.

Alternatively, use the Arvados cli tools or SDKs. First set the environment variables:

<pre>
$ export ARVADOS_API_TOKEN=<superUserSecret from values.yaml>
$ export ARVADOS_API_HOST=<MINIKUBE IP>:444
$ export ARVADOS_API_HOST_INSECURE=true
</pre>

Test access with:

<pre>
$ arv user current
</pre>

h2(#reload). Reload

If you make changes to the Helm chart (e.g. to @values.yaml@), you can reload Arvados with

<pre>
$ helm upgrade arvados .
</pre>

h2. Shut down

{% include 'notebox_begin_warning' %}
This Helm chart uses Kubernetes <i>persistent volumes</i> for the Postgresql and Keepstore data volumes. These volumes will be retained after you delete the Arvados helm chart with the command below. Because those volumes are stored in the local Minikube Kubernetes cluster, if you delete that cluster (e.g. with <i>minikube delete</i>) the Kubernetes persistent volumes will also be deleted.
{% include 'notebox_end' %}

<pre>
$ helm del arvados
</pre>