Website • Documentation • Slack
DevSpace accelerates developing, deploying and debugging applications with Docker and Kubernetes.
Containerize any project in minutes
devspace init
- Automatically create a Dockerfile for your app
- Add a highly customizable Helm chart to your project
If you already have a Dockerfile or a Helm chart, DevSpace.cli will ask you if you want to use them instead of the default files.
Customize Dockerfile and Kubernetes deployment:
- Add packages (e.g. databases)
- Configure persistent volumes
- Set environment variables
- Enable auto-scaling
Deploy containerized applications with ease
devspace create space my-app
If you are using DevSpace.cloud, you can create Spaces with a single command. Spaces are smart Kubernetes namespaces with:
- Automatic allocation of a subdomain for each Space
- Automatic RBAC configuration for better isolation of users
- Resource auto-scaling within the configured limits
- and much more...
If you do not want to use DevSpace.cloud, you will not be able to create Spaces. You can skip this step and deploy your application to a regular Kubernetes namespace using
devspace deploy
.
devspace deploy
- Builds, tags and pushes your Docker images
- Creates pull secrets for your image registries
- Deploys your project with the newest images
After deploying, your application will run on a domain that is connected to your Space:
- auto-generated, e.g.
my-app.devspace.host
- custom domain (Learn how to connected a custom domain)
If you are not using DevSpace.cloud, you will need to manually configure a domain and an ingress.
Develop cloud-native software faster then ever
devspace dev
With DevSpace, you can build and test your application directly inside Kubernetes. Thanks to our real-time code sync, you can even use hot reloading tools (e.g. nodemon) to refresh your running application without having to waste time on re-building and re-deploying your application every time you change your code. With DevSpace, your containers are updated in real-time without any delay.
Learn more about development with DevSpace:
- Real-time code synchronization for hot reloading
- Automatic port forwarding for access via localhost
- Terminal proxy for running commands in your containers
Debug deployments without hassle
devspace analyze
DevSpace automatically analyzes your deployments, identifies potential issues and helps you resolve them:
- Identify reasons for image pull failure
- View log snapshots of crashed containers
- Debug networking issues (e.g. misconfigured services)
Learn more about development with DevSpace:
via Windows Powershell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'
md -Force "$Env:Programfiles\devspace"
wget -UseBasicParsing ((Invoke-WebRequest -URI "https://api.github.com/repos/covexo/devspace/releases/latest" -UseBasicParsing).Content -replace ".*`"(https://github.com[^`"]*devspace-windows-amd64.exe)`".*","`$1") -o $Env:Programfiles\devspace\devspace.exe
& "$Env:Programfiles\devspace\devspace.exe" "install"
via Mac Terminal
curl -s -H "Accept: application/json" "https://api.github.com/repos/covexo/devspace/releases/latest" | sed -nE 's!.*"(https://github.com[^"]*devspace-darwin-amd64)".*!\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace
sudo mv devspace /usr/local/bin
via Linux Bash
curl -s -H "Accept: application/json" "https://api.github.com/repos/covexo/devspace/releases/latest" | sed -nE 's!.*"(https://github.com[^"]*devspace-linux-amd64)".*!\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace
sudo mv devspace /usr/local/bin
DevSpace uses Docker to build container images, so you need Docker on your local computer. If you do not have Docker installed yet, you can download the latest stable releases here:
- Mac: Docker Community Edition
- Windows Pro: Docker Community Edition
- Windows 10 Home: Docker Toolbox (legacy)
Run this command within your project:
devspace init
Don't have a project to test DevSpace with? Check out our example project.
git clone https://github.com/devspace-cloud/devspace-quickstart-nodejs
What does devspace init
do?
DevSpace.cli will automatically detect your programming language and ask for the ports your application is listening on. It will then create an Helm chart and a Dockerfile within your project, if you do not already have one.
This command will create and configure a Kubernetes namespace for you:
devspace create space my-app
If you are not using DevSpace.cloud, you will not be able to create Spaces. You can skip this step and deploy your application to a regular Kubernetes namespace using
devspace deploy
.
Deploy your application to your newly created Space:
devspace deploy
DevSpace.cli • swiss army knife for Kubernetes
DevSpace.cli is an open-source command-line tool that provides everything you need to develop, deploy and debug applications with Docker and Kubernetes.
You can either use DevSpace.cli as standalone solution for your self-managed Kubernetes namespaces or in combination with DevSpace.cloud.
DevSpace.cloud • management platform for Spaces
DevSpace.cloud is a developer platform for Kubernetes that lets you create and manage Spaces via DevSpace.cli or GUI.
The Spaces you create with DevSpace.cloud either run on DevSpace.host or on your own Kubernetes clusters after connecting them to the platform.
DevSpace.host • hosting service for Spaces
DevSpace.host is a hosting service that lets you create Spaces instead of entire Kubernetes clusters. Because you only pay for the resources used for creating your containers, it is much cheaper than having to pay for an entire Kubernetes cluster, especially for small and medium size workloads.
DevSpace.host runs on top of Google Cloud, AWS and Azure clusters and is optimized for reliability and scalability.
DevSpace.cli is a client-only command-line tool which lets you develop, deploy and debug applications in:
Hosted Spaces • hosted on DevSpace.host
Hosted Spaces run on DevSpace.host. You will automatically get a .devspace.host
subdomain for your Space. Using DevSpace.host automatically means that you are using DevSpace.cloud which manages all Spaces running on top of DevSpace.host.
Users of DevSpace.host can create one Space with limited resources for free. To enable resource scaling, you have to verify your account by adding payment information. With a verified account, you can use more cloud resources for your containers and only pay the resources that are actually needed to create and run your containers.
Self-hosted Spaces • hosted on your clusters & managed by DevSpace.cloud
Self-hosted Spaces run on your own Kubernetes cluster which can be hosted anywhere you like (e.g. managed public cloud, private cloud). Self-hosted Spaces are different from self-managed Spaces because self-hosted Spaces are still managed by DevSpace.cloud.
To use self-hosted Spaces, simply connect your own Kubernetes cluster as external cluster in DevSpace.cloud. You will then be able to use DevSpace.cloud and create self-hosted Spaces which are not running on DevSpace.host but on your own Kubernetes clusters.
Self-managed namespaces • hosted & managed by yourself
Self-managed namespaces are hosted on your own Kubernetes clusters. Unlike Spaces, regular Kubernetes namespaces are not managed by DevSpace.cloud. That means that you will have to take care of the following things manually:
- enforce resource limits
- configure secure user permissions
- isolate namespaces of different users
- connect domains and configure ingresses
- install and manage basic cluster services (e.g. ingress controller, cert-manager for TLS, monitoring and log aggregation tools)
Hosted Spaces | Self-hosted Spaces | Self-managed Namespaces | |
DevSpace.cli | ✓ | ✓ | ✓ |
managed with DevSpace.cloud | ✓ | ✓ | ✗ |
hosted on DevSpace.host | ✓ | ✗ | ✗ |
What management effort do I have? |
No admin effort. DevSpace manages everything. |
You create and connect the cluster. DevSpace manages users and Spaces on top of it. |
You manage everything. You manually create, secure and maintain cluster, users and namespaces |
Because you can fairly easy switch between the three modes uf using DevSpace, it generally makes sense to start with Hosted Spaces and switch to one of the other modes later on.
Help us make DevSpace.cli the best tool for developing, deploying and debugging Kubernetes apps.
If you find a bug while working with the DevSpace.cli, please open an issue on GitHub and let us know what went wrong. We will try to fix it as quickly as we can.
You are more than welcome to open issues in this project to:
This project is mainly written in Golang. If you want to contribute code:
- Ensure you are running golang version 1.11.4 or greater for go module support
- Set the following environment variables:
GO111MODULE=on GOFLAGS=-mod=vendor
- Check-out the project:
git clone https://github.com/devspace-cloud/devspace && cd devspace
- Run
go clean -modcache
- Run
go mod tidy
- Run
go mod vendor
- Make changes to the code
- Build the project, e.g. via
go build -o devspace.exe
- Evaluate and test your changes
./devspace [SOME_COMMAND]
See Contributing Guideslines for more information.
Do I need a Kubernetes cluster to use DevSpace?
No. You can simply use Hosted Spaces which run on top of DevSpace.host and which are fully managed by DevSpace.cloud.
Can I use DevSpace with my existing Kubernetes clusters?
Yes. You have two options:
- Connect your existing Kubernetes clusters to DevSpace.cloud as external clusters. DevSpace.cloud will then be able to create and manage users and Spaces on top of your Kubernetes clusters.
- You just use DevSpace.cli without DevSpace.cloud. That means that you manually need to:
- enforce resource limits
- configure secure user permissions
- isolate namespaces of different users
- connect domains and configure ingresses
- install and manage basic cluster services (e.g. ingress controller, cert-manager for TLS, monitoring and log aggregation tools)
Do I need to be a Kubernetes expert to use DevSpace?
No. Altough DevSpace provides a lot of advanced tooling for Kubernetes experts, it is optimized for developer experience which makes it especially easy to use for Kubernetes beginners.
What is a Space?
Spaces are smart Kubernetes namespaces which provide the following features:
- Automatic provisioning via
devspace create space [SPACE_NAME]
- Automatic allocation of a subdomain for each Space, e.g.
my-app.devspace.host
- Automatic RBAC configuration for better isolation of users
- Automatic resource limit configuration and enforcement
- Resource auto-scaling within the configured limits
- Smart analysis of issues within your Space via
devspace analyze
What is DevSpace.cli?
DevSpace.cli is an open-source command-line tool that provides everything you need to develop, deploy and debug applications with Docker and Kubernetes.
You can either use DevSpace.cli as standalone solution for your self-managed Kubernetes namespaces or in combination with DevSpace.cloud.
What is DevSpace.cloud?
DevSpace.cloud is a developer platform for Kubernetes that lets you create and manage Spaces via DevSpace.cli or GUI.
The Spaces you create with DevSpace.cloud either run on DevSpace.host or on your own Kubernetes clusters after connecting them to the platform.
What is DevSpace.host?
DevSpace.host is a hosting service that lets you create Spaces instead of entire Kubernetes clusters. Because you only pay for the resources used for creating your containers, it is much cheaper than having to pay for an entire Kubernetes cluster, especially for small and medium size workloads.
DevSpace.host runs on top of Google Cloud, AWS and Azure clusters and is optimized for reliability and scalability.
What is a Helm chart?
Helm is the package manager for Kubernetes. Packages in Helm are called Helm charts.
You can use the DevSpace.cli for any private or commercial projects because it is licensed under the Apache 2.0 open source license.