Go JavaScript Other
Latest commit 754a860 Nov 20, 2017 @luise luise init: Lint base infrastructure
The base infrastructure blueprints will now follow the same linting standards as
the rest of the Kelda codebase and blueprints.
Permalink
Failed to load latest commit information.
api server: Fix a race when changing namespaces Nov 15, 2017
blueprint node: Try both node and nodejs binaries Nov 21, 2017
cli cli: Allow setting the host socket using an environment variable Nov 21, 2017
cloud foreman: Try not to set minion config until all machines are ready Nov 20, 2017
connection connection: Increase timeout for connections over the network Nov 7, 2017
counter kelda: Move from github.com/quilt/quilt to github.com/kelda/kelda Oct 13, 2017
db network: Add support for address sets Nov 11, 2017
docs docs: Add network debugging instructions Nov 16, 2017
examples kelda: Update the last few stragglers to the new name Oct 18, 2017
integration-tester ci: Speed up test compilation Nov 21, 2017
join join: Reorder imports to be consistent with goimports Oct 14, 2017
js init: Lint base infrastructure Nov 22, 2017
minion scheduler: Properly set container's hostname Nov 16, 2017
ovs ovs: Upgrade to version 2.8.1 Oct 28, 2017
scripts scp-to-jenkins: Update release directory Nov 17, 2017
util node: Try both node and nodejs binaries Nov 21, 2017
vendor ssh: Demote most SSH key errors to DEBUG Nov 16, 2017
version kelda: Update the last few stragglers to the new name Oct 18, 2017
.codecov.yaml integration-tester: Improve docs on priority Sep 22, 2017
.eslintignore js: Add linting for examples files Sep 10, 2017
.eslintrc.json lint: Change .eslintrc.json to allow `continue` Nov 9, 2017
.gitignore gitignore: Include coverage.lcov Nov 10, 2017
.travis.yml travis: Fix push to GitHub Oct 27, 2017
CHANGELOG.md cli: Allow setting the host socket using an environment variable Nov 21, 2017
Dockerfile ovs: Migrate the ovs container to keldio/ovs Oct 17, 2017
LICENSE.md kelda: Update the last few stragglers to the new name Oct 18, 2017
Makefile make: Ignore vault mocks for coverage Nov 10, 2017
README.md docs: Change the Getting Started guide to use Node/Mongo Nov 11, 2017
kelda.go cli: Make `usage` dynamically generate the list of subcommands Oct 21, 2017
package.json npm: Fix name of dependency on initializer Oct 18, 2017

README.md

Build Status Go Report Card Code Coverage

Kelda

Formerly known as Quilt.

Deploying applications to the cloud can be painful. Booting virtual machines, configuring networks, and setting up databases, requires massive amounts of specialized knowledge — knowledge that’s scattered across documentation, blog posts, tutorials, and source code.

Kelda, formerly Quilt, aims to make sharing this knowledge simple by encoding it in JavaScript. Just as developers package, share, and reuse application code, Kelda’s JavaScript framework makes it possible to package, share, and reuse the knowledge necessary to run applications in the cloud.

To take this knowledge into production, simply kelda run the JavaScript blueprint of your application. Kelda will set up virtual machines, configure a secure network, install containers, and whatever else is needed to get up and running smoothly on your favorite cloud provider.

Kelda is currently in beta.

Deploy Quickly on...

providers

Install

Install Kelda with npm:

$ npm install -g @kelda/install

Check out more in our Quick Start tutorial.

API

Run any container.

let web = new Container('web', 'someNodejsImage');

Load balance traffic.

let webContainers = [];
for (i = 0; i < 3; i += 1) {
  webContainers.push(new Container('web', 'someNodejsImage'));
}
let webLoadBalancer = new LoadBalancer('web-lb', webContainers); // A load balancer over 3 containers.

Share and import blueprints via npm.

const Redis = require('@kelda/redis');
let redis = new Redis(2, 'AUTH_PASSWORD'); // 2 Redis database replicas.

Set up a secure network.

allow(publicInternet, webContainers, 80); // Open the webservers' port 80 to the public internet.
redis.allowFrom(webContainers); // Let the web app communicate with Redis.

Deploy VMs on any supported cloud provider.

let vm = new Machine({
  provider: 'Amazon',
  size: 't2.micro'
});

For more examples, have a look at the blueprints in the blueprint library and check out our docs.

Kelda CLI

# Deploy your application.
$ kelda run ./someBlueprint.js

# SSH into VMs and containers.
$ kelda ssh <ID>

# Check the status of your deployment.
$ kelda show

This is just a small sample of the Kelda CLI. Check out more handy commands for managing your deployment.

Get Started

We would love to hear if you have any questions, suggestions, or other comments!