logo

Develop with confidenceRun on Kubernetes

Introducing Ephemeral Clusters . Read more

Build, test, integration and production bundled into a seamless, incrementally adoptable, application platform.

# Setup a local cluster + registry.
$ ns prepare local
 
# Start + develop your app server stack.
$ ns dev
 
# Run whole stack tests.
$ ns test
 
# Deploy to production.
$ ns deploy --env=prod

Overview

What is Namespace?

Namespace combines the best development, testing and production workflows into a simple development experience that allows teams to build robust cloud-native server applications.

Environments

Manage your Kubernetes-based development, testing and production environments in a single location, alongside your codebase.

Development

Namespace handles incremental building, port management, log forwarding, remote builds, registry management, cross-platform support, and more.

Testing

Simple and robust whole-system testing built-in. Write client code to test your stack as a whole, or partially.

Production

Ship to production with confidence, and without additional configurations. A single stack definition drives development, testing and production.

Feature highlight

Exploring Namespace features

Namespace helps with many development and production journeys.
Below you'll find some of the key ones.

Multi-language support

Unified experience in development, testing, and production across servers of different languages.
Built-in integrations for Go and Node.js/Web, with more languages and frameworks coming soon.
Existing Dockerfiles are supported out of the box.
# Deploy frontends, api backends and database
# servers from a single command.
$ ns deploy multitier/01-simple/frontend
      
Servers deployed:
 
[✓] multitier/01-simple/frontend took 8.4s
[✓] multitier/01-simple/apibackend took 5.7s
[✓] multitier/01-simple/postgres took 69ms

Whole system testing

Namespace knows your servers' dependencies, so bringing up a stack in an ephemeral environment is trivial.
Write tests using the language of your choice with the server-under-test endpoint injected into your code.
Run tests using ns test locally or in a CI pipeline.
Browser-based testing is supported.
server: {
name: "myfrontendserver"
integration: "nodejs"
// Adds API backend to the deployed stack
requires: [
"github.com/user/repo/apibackend",
]
}

Zero-effort onboarding

Simple CLI installation
Run ns prepare local after cloning a repo to get started.
Namespace reconstructs development environments from "pinned" versions, ensuring a consistent experience.
# The only requirement is having Docker installed.
$ curl -fsSL https://get.namespace.so/install.sh | sh
 
Executing Namespace's installation script...
 
Namespace was successfully installed to ~/.ns/bin/ns

Simple, built-in Kubernetes

With Namespace, setting up local development in Kubernetes becomes a breeze.
Creating applications is simple, no Kubernetes knowledge required.
Extensible at the core. Define arbitrary Kubernetes resources for advanced requirements.
$ ns prepare local
 
[✓] Validate Docker version.
[✓] Ensure local Kubernetes cluster is running
    (k3s in Docker).
 
...
 
🎉 "github.com/user/repo" is now configured for
local development.

Production-like dev environments

Namespace builds on Kubernetes for both development and production, without compromising on the developer experience.
Don't mock your dependencies. Namespace brings up your actual dependencies during development.
# Iterate on your server locally  
$ ns dev path/to/server
 
# Run end-to-end tests
$ ns test path/to/server
 
# Push the final version to production  
$ ns deploy path/to/server --env=prod

Fast iterative development

Ports and logs are available automatically, just like local development.
Code changes are pushed continuously, for any of the supported integrations, including compiled languages.
$ ns dev multitier/01-simple/frontend
 
Support services forwarded:
 
  [✓] postgres-server/postgres 
    127.0.0.1:5432 --> 5432
  [✓] go-backend-server/webapi
    http://webapi-7sh5cg8.dev.nslocal.host:40080
 
Main services forwarded:
 
  [✓] frontend/frontend
    http://frontend-3nm0df.dev.nslocal.host:40080

Secret management built-in

Open-source, free, robust secret management (based on age).
Share secrets with team members.
Simple declarative use.
Skip manual management with generated secrets.
# Create a new personal key.
$ ns keys generate
 
# Set a secret value.
$ ns secrets set \
  --secret=github.com/user/repo/server:password
Updated workspace.secrets (this file is encrypted).
 
# Commit the encrypted file to git for simpler sharing.
$ git add workspace.secrets
 

Powerful dependency system

Encapsulation: dependencies are self-contained.
Dependency injection for servers.
Keep definitions simple by relying on declarative resource injection.
// Configures how to build and run API backend
// and which servers it depends on.
 
server: {
  name:        "apibackendserver"
  integration: "go"
 
  requires: [
    "github.com/user/repo/minio/server",
  ]
}