Skip to content
master
Switch branches/tags
Code

deploy-node-app

npm version

Deploy apps to Kubernetes, with zero config!

deploy-node-app will prompt you with a minimal set of questions required to deploy your app to any Kubernetes cluster. If zero-config with no lock-in sounds too good to be true - remember this project is in beta 😉. However, it mostly works, and deploy-node-app also supports more than just Node.js projects! Try it on a Python or Ruby project or a static site project!

Once you've run deploy-node-app in your project, you can commit your .dna.json file and use deploy-node-app with no prompts in the future (works great for CI too!)

If you don't have a Kubernetes cluster, don't worry! This tool can automatically provision a free KubeSail.com cluster for you!

Instructions

Just run npx deploy-node-app in your node project.

Example

What does this tool do?

deploy-node-app is a project bootstrapper, powered by Skaffold. After answering a few questions about your app, this tool can:

  1. Create a Dockerfile, skaffold.yaml and all the YAML Kubernetes!
  2. Automatically provision common dependencies (like redis and postgres)!
  3. Develop and deploy your app on any Kubernetes cluster!

Essentially, deploy-node-app supercharges any web applications with awesome tools and best practices.

With deploy-node-app, any codebase can have:

  1. Local and remote development!
  2. Infrastructure-as-code with no effort!
  3. Zero downtime, rolling deployments!
  4. Free hosting, including SSL and custom domains! (provided by KubeSail)

Usage and examples

Usage: deploy-node-app [env] [action]

Options:
  -V, --version                        output the version number
  -w, --write                          Write files to project (writes out Dockerfile, skaffold.yaml, etc)
  -u, --update                         Update existing files (default: false)
  -f, --force                          Dont prompt if possible (default: false)
  -l, --label [foo=bar,tier=service]   Add labels to created Kubernetes resources
  -t, --target <path/to/project>       Target project directory (default: ".")
  -c, --config <path/to/kubeconfig>    Kubernetes configuration file (default: "~/.kube/config")
  -m, --modules <redis,postgres>       Explicitly add modules

By default, deploy-node-app will write a few files to your directory, and by default files won't be touched if they've been modified. deploy-node-app by itself is the same as deploy-node-app production deploy

Simply run npx deploy-node-app in your repository. The tool will attempt to prompt you when it needs answers to questions, and do it's best to bootstrap your application. Take a look at supported languages - we're always looking to add more!

Tests-as-examples

Take a look at /test for a growing list of examples!

Dependencies

deploy-node-app knows about dependencies! For example, if you install a redis or postgres driver for Node.js, Python, Ruby and more, deploy-node-app will automatically create Redis or Postgres deployments that work with your app!

Suggested tools:

  • kubectl - required for creating your deployment, and recommended for managing your deployment after created
  • Skaffold - Kubernetes workflow utility

deploy-node-app is created and maintained by

Kubesail
KubeSail - Kubernetes for Human Beings


Contributing

If you feel that this tool can be improved in any way, feel free to open an issue or pull request!