
By default Devspace uses the active context from kube-config.
I can use devspace use context and devspace use namespace

As I cannot create new namespaces on sandbox context guess I’ll have to work with rcifuentes namespace all the time.

Alright, I created a straightforward node app (using fastify framework). It will be using nodemon for local hot-reload and exposing port 4000.
Then create a Dockerfile to configure a Docker image.
Then use devspace to setup a cluster dev environment:
Using devscape init and selecting
Programming Language → javascript
Deploy strategy → Helm (vs kubectl or kustomize)
This means Devspace will create a Helm chart for my Node app (look the deployments section of devspace.yaml) and deploy it as such
It ask if want that Devspace actively listen for changes (do I plan to use devspace dev) or just deploy the image once (devspace deploy) ?
The execution of devspace init resulted in the devspace.yaml , devspace_start.sh, and .devspace folder being created.
Now, I can use devspace dev
If I do that devspace will use my k8s namespace to deploy my Helm chart on a k8s dev env with code auto-sync and automatic port forwarding so the app (in the remote cluster) can be accessed through localhost. It opens the shell on the Docker container so I can start typing commands directly on my container.
%########%
%###########% ____ _____
%#########% | _ \ ___ __ __ / ___/ ____ ____ ____ ___
%#########% | | | | / _ \\ \ / / \___ \ | _ \ / _ | / __// _ \
%#############% | |_| |( __/ \ V / ____) )| |_) )( (_| |( (__( __/
%#############% |____/ \___| \_/ \____/ | __/ \__,_| \___\\___|
%###############% |_|
%###########%
Welcome to your development container!
This is how you can work with it:
- Files will be synchronized between your local machine and this container
- Some ports will be forwarded, so you can access this container via localhost
- Run `npm start` to start the application
If I run npm start on my container (thanks to devspace) I will be able to access it locally (as Devspace did the port forwarding)

If I change my /src code and save, Devspace will pick up the changes and redeploy the Docker image. So if I reload the browser I will see my changes appearing.
Notice that what my node app reports as hostname matches what k9s reports as my k8s pod name

When I am comfortable with the changes and ready to deploy the app to a real (non-dev) k8s env.
devspace build will build an image and push to a registry.
Apparently it uses a local-registry it creates also on my k8s cluster.

Anyway, I used docker login to see if it had anything pushed to my docker-hub registry account but there’s nothing new yet.
devspace deploy fails asking for a git repository. I fix that by running a simple git init and a first commit initial so a git HEAD gets valid.
The deploy now works and it pushes to a local registry, that gets created in an additional pod:

Inside .devspace file it reads
imageName: username/app
localRegistryImageName: localhost:30793/username/app
tag: 29fe351
lastContext:
namespace: rcifuentes
El devspace open do port forwarding and ask if I want to see the localhost or custom domain. I am good with localhost:4000 version for now.
If I wanted to open a shell againt the container desvpace enter would do the trick
Using helm ls I can see what charts are available in my cluster
╰─⠠⠵ helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
app rcifuentes 2 2023-09-16 23:45:52.750912 -0400 EDT deployed component-chart-0.9.1
For clean everything up devspace purge work nicely.
If that does not work, I can also try deleting everything under helm chart using helm ls -n rcifuentes --short | xargs -L1 helm delete
I installed devspace as a global node module. Probably I am running in in a terminal where node is pointing to another version (like when you have ran nvm). Open in a brand new terminal and try there.