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

Folders and files

NameName
Last commit message
Last commit date
Jan 31, 2025
Oct 21, 2024
Oct 21, 2024
Oct 31, 2024
Oct 21, 2024
Jul 30, 2024
Jan 22, 2025
Jan 14, 2025
Oct 21, 2024
Feb 3, 2025
Jul 30, 2024
Jan 9, 2024
Jan 9, 2024
Jan 9, 2024
Jan 14, 2025
Jan 9, 2024
Jan 16, 2025
Jan 8, 2024
Jan 25, 2024
Aug 8, 2024
Feb 3, 2025
Feb 3, 2025

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 πŸŽ‰