This section describes the software and configuration necessary to run Greenplum for Kubernetes in Minikube. Using Minikube offers a quick way to demonstrate Greenplum on your local system.

Required Software

To deploy Greenplum for Kubernetes on Minikube, you require the following software:

  • kubectl command-line utility. Install the version of kubectl that is distributed with VMware Tanzu Kubernetes Grid Integrated (TKGI) Edition, even if you are deploying Greenplum to Minikube. See Installing the Kuberenetes CLI in the VMware Tanzu Kubernetes Grid Integrated (TKGI) Edition documentation for instructions.

  • Docker. Install a recent version of Docker to your machine, and start Docker.

  • Helm package manager utility version 3.3 or later. Follow the instructions at Kubernetes Helm to install helm.

  • VMware Tanzu Greenplum for Kubernetes requires the ability to map the host system’s /sys/fs/cgroup directory onto each container’s /sys/fs/cgroup. Ensure that no kernel security module (for example, AppArmor) uses a profile that disallows mounting /sys/fs/cgroup.

  • The watch command-line utility is used to monitor the process of new deployments. If necessary, use your operating system package management utility to install this utility (for example, brew install watch on MacOS platforms).

  • Minikube. See the Minikube documentation to install the latest version of Minikube. As part of the Minikube installation you must install a compatible hypervisor to your system (if one is not already available) as well as a corresponding Minikube driver for the hypervisor. For example, on MacOS systems you can use the built-in Hyperkit hypervisor by installing the Minikube Hyperkit driver.

    Note: Do not install or re-install kubectl as part of the Minikube installation.

To validate that your system meets these prerequisites, ensure that the following commands execute without any errors, and that the output versions are similar to the ones shown:

$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-06T08:13:03Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
$ docker --version
Docker version 18.03.1-ce, build 9ee9f40
$ minikube version
minikube version: v0.30.0
$ helm version --client
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

Note: The documented procedure builds the required Docker image locally and uploads it to Minikube. As an alternative you can use Docker support for Kubernetes.

Configuring the Minikube Cluster

Follow this procedure to start your local Minikube cluster and configure Docker for installing Greenplum for Kubernetes:

  1. Start Docker if it is not already running on your system.

  2. Start the Minikube cluster using enough resources to ensure reasonable response times for the Greenplum service. For example:

    $ minikube start --memory 4096 --cpus 4 --vm-driver=<driver-name>

    Substitute the name of the hypervisor driver you want to use for <driver-name>. For example, if you are using MacOS and you installed the Minikube Hyperkit driver, you would execute:

    $ minikube start --memory 4096 --cpus 4 --vm-driver=hyperkit

    Minikube starts the cluster and displays its progress:

    Starting local Kubernetes v1.10.0 cluster...
    Starting VM...
    Downloading Minikube ISO
     160.27 MB / 160.27 MB [============================================] 100.00% 0s
    Getting VM IP address...
    Moving files into cluster...
    Downloading kubeadm v1.10.0
    Downloading kubelet v1.10.0
    Finished Downloading kubeadm v1.10.0
    Finished Downloading kubelet v1.10.0
    Setting up certs...
    Connecting to cluster...
    Setting up kubeconfig...
    Starting cluster components...
    Kubectl is now configured to use the cluster.
    Loading cached images from config file.
  3. Confirm that the kubectl utility can access Minikube:

    $ kubectl get node
    NAME       STATUS    ROLES     AGE       VERSION
    minikube   Ready     master    2m        v1.10.0

    Note: If you have problems starting or connecting to Minikube, use minikube delete to remove the current Minikube and then recreate it.

  4. Change the local docker environment to point to the Minikube docker, so that the local docker daemon interacts with images inside the Minikube docker environment:

    $ eval $(minikube docker-env)

    Note: To undo this docker setting in the current shell, run eval "$(docker-machine env -u)".

At this point, your system is available to install Greenplum for Kubernetes. Follow the instructions in Installing Greenplum for Kubernetes to continue.