DevSpace support for deploying helm chart locally#629
DevSpace support for deploying helm chart locally#629kensimon wants to merge 8 commits intoNVIDIA:mainfrom
Conversation
This makes it simple to deploy ncx-infra-controller-core to a local kubernetes cluster (like with k3s) leveraging the helm chart. - Include a script, dev/deployment/devspace/bootstrap-prereqs.sh, which sets up cert-manager, postgres, and vault - Add a helm chart for machine-a-tron inside dev/deployments/devspace (since machine-a-tron isn't generally included in "production" vault setups, it's only really for development) - Add a devspace.yaml that can build deploy carbide-api and machine-a-tron - Make a Dockerfile for the api and machine-a-tron that use docker buildkit for caching, and can run straight from the produced image (rather than having a separate builder/runtime container split)
Matthias247
left a comment
There was a problem hiding this comment.
So this is a fully new chart? Not the same that is already offered as deployment option?
I think it would be good to just have one - where one would use special options to enable local development. Multiple charts will be confusing for OSS users (which one should I use?).
🛡️ Vulnerability Scan🚨 Found 72 vulnerability(ies) Severity Breakdown:
🔗 View full details in Security tab 🕐 Last updated: 2026-03-18 22:31:09 UTC | Commit: 70bea03 |
🔐 TruffleHog Secret Scan✅ No secrets or credentials found! Your code has been scanned for 700+ types of secrets and credentials. All clear! 🎉 🕐 Last updated: 2026-03-18 22:31:14 UTC | Commit: 70bea03 |
It's reusing the existing chart for carbide-api (that's the main point of this, at least.) There's a separate helm chart for machine-a-tron though, since I wanted to keep it separate from the main chart. I don't think the main chart should be deploying machine-a-tron, since it's only for environments where you want mock hosts. (We can discuss though... we could technically add machine-a-tron to the main chart, but disabled by default and overrideable by values.yaml, but I decided against that for now.) The two main things this PR is doing is:
|
ianderson-nvidia
left a comment
There was a problem hiding this comment.
Is this only for the api crate? Are we not worrying about DHCP/PXE/DNS/console services?
You will also need to bump the chart version for carbide-api in Chart.yml
As well asChart.yaml in helm root dir.
Not yet, no... I'm mainly just interested in getting development going with mocks right now, and none of those are really needed. I'd be interested to hear opinions on this though... When I think "local development workflow" I don't generally think of running a real DHCP/PXE/etc server (ie. not a real datacenter environment with DPU's.) I just want the simplest way to get an API server running you can test against, and the machine-a-tron bits are just there just to make the default deployment a little more interesting (rather than just being an empty environment with no hosts.)
I'll try and look into re-using the build container tomorrow, but we do need a different Dockerfile for this, for devspace to do its magic. What we don't want to do is what we did with skaffold, where we had a separate step that ran the build container to spit out a binary, and then another build step that built the runtime container from a simple COPY line that grabbed the built binary (That was always IMO a hack, we could have always just done it all in one step.) Another thing to consider is just blowing away dev/deployment/localdev, since that is all very specific to the skaffold workflow which is now basically broken. |
Having another helm chart was just confusing, since the purpose is only for local development, and the main helm chart shouldn't have machine-a-tron.
I reworked the PR to have devspace use plain-old kubernetes yaml and |
I don't think Skaffold is broken. The entire |
Please don't delete the old stuff yet... |
Description
This makes it simple to deploy ncx-infra-controller-core to a local kubernetes cluster (like with k3s) with machine-a-tron mock hosts, leveraging the existing helm chart.
Type of Change
Related Issues (Optional)
Breaking Changes
Testing
Additional Notes
This was mostly done by OpenAI Codex, with 3-4 rounds of redoing it until I liked the result, plus a bunch hand-editing by me afterward. I'm fairly confident I understand everything in this PR, and it seems to work well in local testing (I can spin up carbide-api pretty quickly with machine-a-tron talking to it, and the hosts get to
Readyfairly quickly.)