Skip to content

Holodeck is a project to create test environments optimised for GPU projects.

License

Notifications You must be signed in to change notification settings

NVIDIA/holodeck

Repository files navigation

Holodeck

  • Tech preview, under heavy development *

A tool for creating and managing GPU ready Cloud test environments.

Installation

make build
mv ./bin/holodeck /usr/local/bin/holodeck

Prerequisites

If utilizing the AWS provider, a valid AWS credentials must be available in the environment.

apiVersion: holodeck.nvidia.com/v1alpha1
kind: Environment
metadata:
  name: holodeck
  description: "Devel infra environment"
spec:
  provider: aws

If utilizing the SSH provider, a valid SSH key must and reachable host must be available in the environment file.

apiVersion: holodeck.nvidia.com/v1alpha1
kind: Environment
metadata:
  name: holodeck
  description: "Devel infra environment"
spec:
  provider: aws
  auth:
    keyName: user
    privateKey: "/Users/user/.ssh/user.pem"
  instance:
    hostUrl: "<some-reachable-host-ip>"

Usage

holodeck --help

The Environment CRD

apiVersion: holodeck.nvidia.com/v1alpha1
kind: Environment
metadata:
  name: holodeck
  description: "Devel infra environment"
spec:
  provider: aws # or ssh currently supported
  auth:
    keyName: user
    privateKey: "/Users/user/.ssh/user.pem"
  instance: # if provider is ssh you need to define here the hostUrl
    type: g4dn.xlarge
    region: eu-north-1
    ingressIpRanges:
      - 192.168.1.0/26
    image:
      architecture: amd64
      imageId: ami-0fe8bec493a81c7da # Ubuntu 22.04 image
  containerRuntime:
    install: true
    name: containerd
    version: 1.6.24
  kubernetes:
    install: true
    installer: kubeadm # supported installers: kubeadm, kind, microk8s
    version: v1.28.5

The dependencies are resolved automatically, from top to bottom. Following the pattern:

Kubernetes -> Container Runtime -> Container Toolkit -> NVDriver

If Kubernetes is requested, and no container runtime is requested, a default container runtime will be added to the environment..

If Container Toolkit is requested, and no container runtime is requested, a default container runtime will be added to the environment.

Create an environment

$ holodeck create -f ./examples/v1alpha1_environment.yaml
...

Delete an environment

$ holodeck delete -f ./examples/v1alpha1_environment.yaml
...

Dry Run

$ holodeck dryrun -f ./examples/v1alpha1_environment.yaml
Dryrun environment holodeck 🔍
✔       Checking if instance type g4dn.xlarge is supported in region eu-north-1
✔       Checking if image ami-0fe8bec493a81c7da is supported in region eu-north-1
✔      Resolving dependencies 📦
Dryrun succeeded 🎉