Cluster requirements

You can deploy Domino 4 into a Kubernetes cluster that meets the following requirements.




General requirements

  • Kubernetes 1.13+

  • Cluster permissions

    Domino needs permission to install and configure pods in the cluster via Helm. The Domino installer is delivered as a containerized Python utility that operates Helm through a kubeconfig that accesses the cluster a service account.

  • Three namespaces

    Domino creates three dedicated namespaces, one for Platform nodes, one for Compute nodes, and one for installer metadata and secrets.




Storage requirements

Domino requires at least two storage classes.

  1. Fast block storage

    Domino requires high performance block storage for the following types of data:

    • Ephemeral volumes attached to user execution
    • High performance databases for Domino application object data

    This storage needs to be backed by a storage class with the following properties:

    • Supports dynamic provisioning
    • Can be mounted on any node in the cluster
    • SSD-backed recommended for fast I/O
    • Capable of provisioning volumes of at least 100GB
    • Underlying storage provider can support ReadWriteOnce semantics

    In AWS, EBS is used to back this storage class. Consult this example configuration for a compatible EBS storage class:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: domino-compute-storage
    provisioner: kubernetes.io/aws-ebs
    parameters:
      type: gp2
      fsType: ext4
    

  1. Long term shared storage

    Domino needs a separate storage class for long term storage for:

    • Project data uploaded or created by users
    • Domino Datasets
    • Docker images
    • Domino backups

    This storage needs to be backed by a storage class with the following properties:

    • Dynamically provisions Kubernetes PersistentVolume
    • Can be accessed in ReadWriteMany mode from all nodes in the cluster

    In AWS, these storage requirements are handled by two separate classes. One backed by EFS for Domino Datasets, and one backed by S3 for project data, backups, and Docker images.


  1. Logs storage

    Domino needs an additional storage system for log aggregation. This can be a cloud object store like Amazon S3, or an NFS volume accessible to Domino platform nodes.




Node pool requirements

Domino requires a minimum of two node pools, one to host the Domino Platform and one to host Compute workloads. Additional optional pools can be added to provide specialized execution hardware for some Compute workloads.

  1. Platform pool requirements
    • Boot Disk: 128GB
    • Min Nodes: 3
    • Max Nodes: 3
    • Spec: 8 CPU / 16GB
    • Labels: dominodatalab.com/node-pool: platform

  1. Compute pool requirements
    • Boot Disk: 400GB
    • Recommended Min Nodes: 1
    • Max Nodes: Set as necessary to meet demand and resourcing needs
    • Recommended min spec: 8 CPU / 32GB
    • Enable Autoscaling: Yes
    • Labels: domino/build-node: true, dominodatalab.com/node-pool: default

  1. Optional GPU compute pool
    • Boot Disk: 400GB
    • Recommended Min Nodes: 0
    • Max Nodes: Set as necessary to meet demand and resourcing needs
    • Recommended min Spec: 8 CPU / 16GB / GPU Device
    • Nodes must be pre-configured with approriate Nvidia driver, Nvidia-docker2 and set the default docker runtime to nvidia. For example, EKS GPU optimized AMI.
    • Labels: dominodatalab.com/node-pool: default-gpu



Ingress and SSL

Domino will need to be configured to serve from a specific FQDN, and DNS for that name should resolve to the address of an SSL-terminating load balancer with a valid certificate. The load balancer must target incoming connections on ports 80 and 443 to port 80 on all nodes in the Platform pool.