Installing and developing in Minikube

Warning

Instructions on this page are not tested on every platform and every operating system. We provide these to help with set up where possible, but we are not responsible for a proper Minikube set up. Please refer to official documentation if the help below doesn’t work for you.

If you do not have access to a remote cluster, you might want to consider using Minikube for working with the SDP. Note, that you may run into resource problems, especially if you deploy the SDP with all of its components, if you do not have a powerful enough machine, or enough CPU/memory allocated to Minikube before you install the SDP.

We recommend installing Minikube using the official installation guide. You may also follow the SKA Minikube documentation for instructions, which will setup a Minikube cluster that resembles a standard SKA cluster, however, note that this will install elements that are important for the full SKA system, but the SDP alone will not require.

In this page, we only mention a few, SDP-specific details and pointers to help setting things up, but we do not provide a How-To for Minikube. In general, what is described in Installing the SDP is how you would want to install the SDP in Minikube as well, unless clearly marked otherwise.

By default, the SDP Helm chart uses the Tango operator to deploy the LMC components. The operator is not available in a Minikube cluster, so the use of the operator must be disabled by setting global.operator to false.

Building OCI images

If you are developing SDP components and you would like to build and test them in Minikube, you need to configure the docker command to use the daemon inside the Virtual Machine. This can be done by running the following command:

$ eval $(minikube docker-env)

Shared storage

Use the following Make command to install a local PV and a corresponding PVC for both SDP control and processing namespaces. These will allow access to the same underlying storage which is essential for resource management and for use of the Global Sky Model service.

$ make create-shared-storage DATA_PVC=test-pvc

Set DATA_PVC to the same PVC name that SDP uses on start.

Set PV_HOST_PATH variable to update the default path, if you want to point to a specific directory in the Minikube container.

$ make create-shared-storage DATA_PVC=test-pvc PV_HOST_PATH=/test_dir

You will have to mount this directory inside Minikube directly, to the given path for the PV to access specific directories on your local system.

$ minikube mount <source directory>:$PV_HOST_PATH

Replace <source directory>> with the right path on your local system. Note that the console from which you start this command will need to be kept alive for the connection to stay and cannot be used for other things.

To remove the shared storage resources, run:

$ make delete-shared-storage

Accessing the QA Display

Depending on what driver you use for Minikube, there are multiple things that you may need to do to expose an ingress to a pod.

You will always need to enable ingress:

$ minikube addons enable ingress

In the simplest case, you can use the IP of Minikube from then on to access the websites. Obtain the IP of Minikube:

$ minikube ip

Access the Display in a path such as:

http://<ip from above command>/<namespace>/qa/display/

Replace the IP and namespace accordingly.

If you still can’t see the page, you may need to set up tunnelling to forward all connections to localhost. This will need to keep running, so do it in a terminal window that you won’t be using/closing:

$ minikube tunnel

Access the Display in a path such as:

http://127.0.0.1/<namespace>/qa/display/

Update the namespace value accordingly.

Running the integration tests

Follow ingress/tunneling set up above under “Accessing the QA Display” section, then set the TEST_INGRESS environment variable to:

  • without tunneling:

    $ export TEST_INGRESS=http://$(minikube ip)
    
  • with tunneling:

    $ export TEST_INGRESS=http://127.0.0.1
    

minikube tunnel will forward all networking to localhost, that is why TEST_INGRESS has to be set to that.