-
Notifications
You must be signed in to change notification settings - Fork 39
Add Brev single-node Kubernetes mode launchable #863
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
elookpotts-nvidia
wants to merge
5
commits into
main
Choose a base branch
from
elookpotts/brev-k8s-launchable
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
8ca5243
feat: add Brev single-node Kubernetes mode launchable
elookpotts-nvidia 0583db5
docs: align README-k8s.md closer to existing README structure
elookpotts-nvidia cfaf43f
docs: add deploy badge for K8s mode launchable
elookpotts-nvidia bcc18f9
docs: match compute requirements to VM mode README
elookpotts-nvidia b89adb9
docs: fix typo in README-k8s.md
elookpotts-nvidia File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,167 @@ | ||
| <!-- | ||
| SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION. All rights reserved. | ||
|
|
||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||
| you may not use this file except in compliance with the License. | ||
| You may obtain a copy of the License at | ||
|
|
||
| http://www.apache.org/licenses/LICENSE-2.0 | ||
|
|
||
| Unless required by applicable law or agreed to in writing, software | ||
| distributed under the License is distributed on an "AS IS" BASIS, | ||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| See the License for the specific language governing permissions and | ||
| limitations under the License. | ||
|
|
||
| SPDX-License-Identifier: Apache-2.0 | ||
| --> | ||
|
|
||
| # OSMO Brev Deployment (Kubernetes Mode) | ||
|
|
||
| [](https://github.com/NVIDIA/OSMO) | ||
| [](https://brev.nvidia.com/launchable/deploy?launchableID=env-3CPEGDFbjVhuXAffQYBEDd9qOi9) | ||
|
|
||
| The OSMO Brev Kubernetes deployment provides a pre-configured OSMO instance running in the cloud, allowing you to quickly try OSMO without setting up local infrastructure. This deployment uses a [Brev.dev](https://brev.dev) cloud instance in **Single-node Kubernetes** mode with the [OSMO local deployment](https://nvidia.github.io/OSMO/main/deployment_guide/appendix/deploy_local.html) pre-installed. | ||
|
|
||
| This is an alternative to the [VM mode deployment](README.md) — instead of installing Docker, KIND, and nvkind inside a VM, this mode uses Brev's pre-configured MicroK8s cluster with GPU support. | ||
|
|
||
| > The Brev deployment is for evaluation purposes only and is not recommended for production use as it lacks authentication and has limited resources. | ||
|
|
||
| ## Compute requirements | ||
|
|
||
| - NVIDIA Container Toolkit (>=1.18.1) | ||
| - NVIDIA Driver Version (>=575) | ||
|
|
||
| ## Accessing the Brev Deployment | ||
|
|
||
| ### Web UI Access | ||
|
|
||
| The OSMO Web UI is available through a secure Brev link exposed from your instance: | ||
|
|
||
| 1. Log in to your Brev console at https://console.brev.dev | ||
| 2. Navigate to your OSMO instance | ||
| 3. Select "Access" | ||
| 4. Under `Using Secure Links`, click `Share a Service` and enter port `30080` | ||
| 5. Click on the "Shareable URL" for port `30080` | ||
|
|
||
| ## [Optional] Local CLI Setup | ||
|
|
||
| To use the OSMO CLI and UI from your local machine, you'll need to set up port forwarding and install the necessary tools. | ||
|
|
||
| ### Step 1: Install Brev CLI | ||
|
|
||
| Follow instructions [here](https://docs.nvidia.com/brev/latest/brev-cli.html#installation-instructions). Be sure to `brev login`. | ||
|
|
||
| ### Step 2: Set Up Port Forwarding | ||
|
|
||
| Forward ports from your Brev instance to your local machine. Port 30080 provides access to the OSMO API and Web UI. Port 30035 provides access to the LocalStack S3 storage backend, which is required for dataset download and upload via the CLI. | ||
|
|
||
| You can find your instance's IP address at the top of the deployment page. | ||
|
|
||
| You can see your username in the Brev Console: | ||
|
|
||
| 1. Log in to your Brev console at https://console.brev.dev | ||
| 2. Navigate to your OSMO instance | ||
| 3. Select "Logs" | ||
| 4. Look at the output of "Script Logs". You should see `Current user: [brev instance username]` | ||
|
|
||
| ```bash | ||
| # Find your instance name with brev ls | ||
| sudo ssh -i ~/.brev/brev.pem -p 22 -L 80:localhost:30080 <username>@[your instance IP] | ||
|
elookpotts-nvidia marked this conversation as resolved.
|
||
| ``` | ||
|
|
||
| If you see `Permission denied (publickey)` it may be because: | ||
|
|
||
| - You did not log in using `brev login` | ||
|
|
||
| ### Step 3: Set Up Networking | ||
|
|
||
| Add host entries so that the OSMO CLI and browser can reach the cluster services via localhost: | ||
|
|
||
| ```bash | ||
| echo "127.0.0.1 quick-start.osmo" | sudo tee -a /etc/hosts | ||
| echo "127.0.0.1 localstack-s3.osmo" | sudo tee -a /etc/hosts | ||
| ``` | ||
|
|
||
| `quick-start.osmo` allows you to visit the Web UI at `http://quick-start.osmo` in your browser. `localstack-s3.osmo` allows the OSMO CLI to reach the S3 storage backend for dataset download and upload. | ||
|
|
||
| ### Step 4: Install OSMO CLI | ||
|
|
||
| Download and install the OSMO command-line interface: | ||
|
|
||
| ```bash | ||
| curl -fsSL https://raw.githubusercontent.com/NVIDIA/OSMO/refs/heads/main/install.sh | bash | ||
| ``` | ||
|
|
||
| ### Step 5: Log In to OSMO | ||
|
|
||
| Authenticate with the OSMO instance through your port forward: | ||
|
|
||
| ```bash | ||
| osmo login http://quick-start.osmo --method=dev --username=testuser | ||
| ``` | ||
|
|
||
| ### Step 6: Set Dataset Credential | ||
|
|
||
| Register the storage credential so the CLI can download and upload datasets. The setup script saves this command on the Brev node during installation. In a separate terminal, retrieve and run it: | ||
|
|
||
| ```bash | ||
| ssh -i ~/.brev/brev.pem <username>@[your instance IP] 'cat ~/osmo-deployment/set-credential.sh' | bash | ||
| ``` | ||
|
|
||
| ## Next Steps | ||
|
|
||
| Visit the [User Guide](https://nvidia.github.io/OSMO/main/user_guide/getting_started/next_steps.html#getting-started-next-steps) for tutorials on submitting workflows, interactive development, distributed training, and more. | ||
|
|
||
| ## Additional Resources | ||
|
|
||
| - [User Guide](https://nvidia.github.io/OSMO/main/user_guide/) | ||
| - [Deployment Guide](https://nvidia.github.io/OSMO/main/deployment_guide/) | ||
| - [OSMO GitHub Repository](https://github.com/nvidia/osmo) | ||
| - [Brev Documentation](https://docs.brev.dev) | ||
|
|
||
| ## Cleanup | ||
|
|
||
| Close the port-forward session with: | ||
|
|
||
| ```bash | ||
| sudo kill -9 $(sudo lsof -ti:80) | ||
| ``` | ||
|
elookpotts-nvidia marked this conversation as resolved.
|
||
|
|
||
| Delete your Brev instance through the Brev console or CLI: | ||
|
|
||
| ```bash | ||
| brev delete [your instance name] | ||
| ``` | ||
|
|
||
| # Deploying Custom OSMO Chart | ||
|
|
||
| 1. Build and push your quick-start chart to the registry. | ||
|
|
||
| 2. Go to [brev.nvidia.com](https://brev.nvidia.com) and create a new environment. | ||
| - Select **Single-node Kubernetes** mode. | ||
| - **L40S 1xGPU** on MassedCompute works well, but any L40 or L40S instance should work. | ||
|
|
||
| 3. Wait for the node to finish starting up. | ||
|
|
||
| 4. Shell into the instance: | ||
|
|
||
| ```bash | ||
| brev shell <your node name> | ||
| ``` | ||
|
|
||
| 5. Download the setup script: | ||
|
|
||
| ```bash | ||
| curl -o setup-k8s.sh https://raw.githubusercontent.com/NVIDIA/OSMO/main/deployments/brev/setup-k8s.sh && chmod +x setup-k8s.sh | ||
| ``` | ||
|
|
||
| 6. Edit `setup-k8s.sh` to install your version and use your registry key | ||
|
|
||
| 7. Run the setup script: | ||
|
|
||
| ```bash | ||
| ./setup-k8s.sh | ||
| ``` | ||
|
|
||
| Once you are complete, you can follow the instructions above to access your Brev instance. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.