Installing DKube on Amazon EKS

_images/DKube_Intro_Diagram.png

DKubeTM is a portable, end-to-end, Kubeflow-based MLOps platform that enables data scientists to develop, tune, and deploy complex models. It is based on Kubernetes, and will run on-premises and on the most popular cloud platforms. It has the same look, feel, and workflow on all of them, and migrating back and forth between providers is fast and simple.

This page provides step-by-step instructions of how to install DKube on an existing Amazon EKS system.

Cluster Configuration

These instructions assume that an EKS cluster has already been installed, and DKube is being installed on that cluster. The cluster should consist of one or more master nodes, and optional worker nodes.

  • The Master nodes coordinate the cluster

  • Each Worker node provides more resources, and is a way to expand the capability of the cluster

Installation Configuration

The installation can be run:

  • From the master node in the cluster, or

  • From a remote node that is not part of the cluster

The overall flow of installation is as follows:

  • Copy the required files to the installation node using Docker

  • Execute the platform-specific setup steps as described in this document

  • Install DKube using Helm

  • Access DKube through a browser

Prerequisites

The DKube installation scripts handle most of the work required to get DKube installed, including the installation of the software packages on the cluster. There are some prerequisites for each node, described below.

Node Requirements

Installation Node Requirements

The installation node has the following requirements:

  • Docker CE

  • kubectl

DKube Cluster Node Requirements

The DKube Cluster nodes have the following requirements:

  • Nodes should all have static IP addresses

  • All nodes must be on the same subnet

  • All nodes must have the same user name and ssh key

Each node on the cluster should have the following minimum resources:

  • 16 CPU cores

  • 64GB RAM

  • Storage size is dependent on the programs and datasets, and should be large enough to handle the required data, but should be at least 400GB

Access to the Cluster

In order to run DKube both during and after installation, a minimum level of security access must be provided from any system that needs to use the node. This includes access to the url in order to open DKube from a browser.

Protocol

Port Range

Source

TCP

30002

Access IP

TCP

32222

Access IP

TCP

32223

Access IP

TCP

32323

Access IP

TCP

32224

Access IP

TCP

32225

Access IP

TCP

6443

Access IP

TCP

443

Access IP

TCP

22

Access IP

All

0-65535

Private Subnet

ICMP

0-65535

Access IP

The source IP access range is in CIDR format. It consists of an IP address and mask combination. For example:

  • 192.168.100.14/24 would allow IP addresses in the range 192.168.100.x

  • 192.168.100.14/16 would allow IP addresses in the range 192.168.x.x

Note

The source IP address 0.0.0.0/0 can be used to allow access from any browser client. If this is used, then a firewall can be used to enable appropriate access.

Getting the DKube Files

The files necessary for installation are pulled from Docker, using the following commands:

sudo docker login -u <Docker username> Password: <Docker password> sudo docker run --rm -it -v $HOME/.dkube:/root/.dkube ocdr/dkubeadm:<DKube version> init

Note

The docker credentials and DKube version number (x.y.z) are provided separately

This will create the folder $HOME/.dkube and copy the necessary files to the folder.

Installation Setup

Important

DKube should be installed with an EKS optimized AMI. This includes the necessary packages for DKube installation. This is described in more detail at https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/tkv-create-ami-from-instance.html

EKS Cluster Installation Files

When installing DKube on an existing EKS cluster, there are files required to set up the installation node and provide access to the EKS cluster.

The EKS preinstallation files are cloned from a GitHub repository.

git clone https://github.com/oneconvergence/dkube-eks

Running the EKS Preinstallation Script

Navigate to the dkube-eks folder. Before running the preinstall script:

  • The [AWS] section of the terraform-eks.ini file needs to be completed to provide access to the EKS cluster

The following information needs to be completed in the terraform-eks.ini file:

  • aws_access_key_id

  • aws_secret_access_key

The rest of the fields are not used by the preinstall script, and can be left in their default state.

After running the preinstall script, the config file can be copied by including:

  • The region where the EKS cluster is running (e.g. us-west-2)

  • The EKS cluster name

The following commands will accomplish these steps:

bash preinstall.sh source ~/.bashrc aws eks --region <EKS Region> update-kubeconfig --name <EKS Cluster Name>

Installing DKube

DKube is installed using Helm.

Detailed instructions on installing Helm are available at https://helm.sh/docs/intro/install/

The installation should be performed from the $HOME/.dkube folder.

Getting the Helm Files

export KUBECONFIG=kubeconfig
kubectl get nodes
helm repo add dkube-helm https://oneconvergence.github.io/dkube-helm
helm repo update
helm show values dkube-helm/dkube-deployer | sudo bash -c 'cat - > values.yaml'

Important

If the kubectl command is not successful, do not continue with the installation. This must function properly for the installation to succeed.

Important

Helm expects that the kubeconfig has a permission of 0600. If Helm provides a security error message, you can eliminate it by using the “chmod 0600 kubeconfig” command.

Express Installation

The Helm command for the express installation is:

helm install <Release Name> dkube-helm/dkube-deployer \ --set EULA=yes \ --set wipedata=yes \ --set provider=<Platform type> \ --set version=<DKube Version> \ --set username=<Username> \ --set password=<Password> \ --set optional.storage.node=<Node Name> \ --set registry.username=<Docker Username> \ --set registry.password=<Docker Password>

Field

Value

provider

eks

version

Version of DKube to install

username

User-chosen initial login username

password

User-chosen initial login password

optional.storage.node

EKS host name

registry.username

Docker registry username - will be provided

registry.password

Docker registry password - will be provided

The status of the installation can be viewed with the following command:

helm status <Release Name>

Installation Dashboard

The progress of the installation can be viewed from the installation dashboard. The link to the dashboard is based on the platform type.

The installation dashboard is accessible from the public IP address of the master node. The IP is of the form:

https://<Public Master IP Address>:32323/ui

Accessing DKube

After the DKube installation dashboard shows that the installation has completed, the DKube UI is shown as part of the dashboard. DKube can be accessed from the public IP address of the master node. The IP is of the form:

https://<Public Master IP Address>:32222

Initial Login

The initial login after installation is accomplished with the username and password entered in the command line for the express installation. Authorization based on a backend mechanism is explained in the User Guide in the section “Getting Started”.