Skip to main content

kubernetes

Kubernetes Deployment

This guide provides detailed instructions for deploying evoML on a Kubernetes cluster.

Requirements

Supported Kubernetes Clusters

evoML supports deployment on the following Kubernetes platforms:

Cloud Platforms:

  1. Amazon Elastic Kubernetes Service (EKS): Managed Kubernetes service on AWS.
  2. Azure Kubernetes Service (AKS): Managed Kubernetes service on Azure.
  3. Google Kubernetes Engine (GKE): Managed Kubernetes service on Google Cloud.
  4. Intel Developer Cloud: Kubernetes environment on Intel hardware for development and testing.
  5. Red Hat OpenShift: Enterprise Kubernetes platform with integrated developer tools.

On-Premise Solutions:

  1. kubeadm: Tool for bootstrapping a Kubernetes cluster.
  2. K3s: Lightweight Kubernetes distribution, suitable for edge and IoT deployments. (Use with k3d for local development).
  3. MicroK8s: Single-package Kubernetes for developers, IoT, and edge.
  4. OKD: Community distribution of Kubernetes that powers Red Hat OpenShift.

Hardware Requirements

The following hardware requirements are recommended for optimal evoML performance.

Minimum Requirements:

ResourceMinimum Requirement
CPU32 Cores x86_64 (amd64) CPU architecture
Memory64 GB of RAM
Storage400 GB (SSD recommended, HDD acceptable)

Recommended Requirements:

ResourceRecommendation
CPU64 Cores x86_64 (amd64) CPU architecture
Memory128 GB of RAM
Storage400 GB (SSD recommended, HDD acceptable)
Important Considerations:
  1. GPU Support: GPU capabilities are optional for basic evoML operation. However, for accelerated model training and inference, we recommend an NVIDIA Pascal or newer GPU with a compute capability of 6.0 or higher.
  2. Operating System: The Kubernetes cluster can be deployed on any Linux-based distribution.

Kubernetes Environment Validation

Before deploying evoML, it's essential to verify that your Kubernetes environment is properly configured. We provide a validation script to assist with this process. Please contact TurinTech support for access to the script and detailed instructions.

Accessing evoML Images

evoML utilizes both publicly available and private Helm charts for configuration. Publicly available charts are primarily based on Bitnami charts. In-house Helm charts are used for core evoML components.

The required container images are:

  • evoML Core Components: A private image containing the core evoML functionality.
  • Secondary Services: Publicly available images for supporting services required by evoML.

The following table lists the publicly available services and their corresponding image details:

NameRegistryProviderVersion
MongoDBDocker HubBitnami7.0.5-debian-11-r5
MinIODocker HubBitnami2024.1.29-debian-11-r0
PostgreSQLDocker HubBitnami15.4.0-debian-11-r44
RabbitMQDocker HubBitnami3.12.12-debian-11-r7
RayDocker HubRayproject2.9.3-py310-cpu
Nginx API GatewayDocker HubBitnami1.9.5-debian-11-r5
Kafka/RedpandaDocker HubRedpandadatav23.3.4
RedisDocker HubBitnami7.2.4-debian-11-r2
API CompanionDocker HubTransloaditlatest
NFS Storageregistry.k8s.iosig-storagev4.0.8
Config ReloaderDocker HubStakaterv1.0.64

There are two primary methods for accessing the required evoML images:

Option 1: Docker Hub

The evoML images are hosted on Docker Hub: https://hub.docker.com/?namespace=turintech.

To access the private evoML image, you must sign in to your Docker Hub account with the credentials provided by TurinTech.

Option 2: Private Image Registry (Air-Gapped Environments)

For air-gapped environments, a private image registry is required to host all necessary images. Common image registry solutions include:

  1. Sonatype Nexus
  2. JFrog Artifactory
  3. Docker Local Registry
  4. Other compatible image registries

Installation

evoML supports installation on Kubernetes clusters with and without internet access.

Clusters with Internet Access

  1. Obtain the evoML CLI: TurinTech will provide the evoML CLI executable via a secure method (e.g., email, SFTP).

  2. Configure Cluster Connectivity: Use the CLI to configure connectivity to your Kubernetes cluster:

    ./evoml config cluster
  3. Deploy evoML: Initiate the deployment process and provide any requested information:

    ./evoml deploy up

Clusters without Internet Access (Air-Gapped Installation)

  1. Obtain the Tar Bundle: TurinTech will provide a single tar archive containing:

    • The evoML CLI executable.
    • All required container images.
  2. Extract the Bundle: Extract the contents of the tar archive:

    tar -xvf evoml.tar
  3. Import Images to Registry: Import the container images into your designated private image registry:

    ./evoml bundle import --dest <Registry URL> --auth

    Replace <Registry URL> with the URL of your private image registry and provide authentication credentials as prompted by the --auth flag.

  4. Configure Cluster Connectivity: Use the CLI to configure connectivity to your Kubernetes cluster:

    ./evoml config cluster
  5. Deploy evoML: Initiate the deployment process and provide any requested information:

    ./evoml deploy up