Go JavaScript Other
Latest commit 8af569a Oct 19, 2017 @kklin kklin ci: Wait for the credential files rather than just the directory
Commit db2c21b (ci: Wait for the daemon to generate TLS credentials)
attempted to avoid a race between the daemon generating the credentials,
and the tester running commands that required those credentials.
However, the presence of simply the TLS directory is not sufficient for
the commands to work -- the actual credential files are needed. The
commands were still failing because the daemon creates the TLS directory
before actually writing the credentials, so the tester would start
running kelda commands while the daemon was writing the credentials.
Permalink
Failed to load latest commit information.
api kelda: Implement secure Secret storage Oct 21, 2017
blueprint kelda: Implement secure Secret storage Oct 21, 2017
cli cli: Make `usage` dynamically generate the list of subcommands Oct 21, 2017
cloud cloudcfg: Remove unnecessary Docker directory creation Oct 24, 2017
connection tls: Export functions for getting paths to TLS files Oct 18, 2017
counter kelda: Move from github.com/quilt/quilt to github.com/kelda/kelda Oct 13, 2017
db kelda: Implement secure Secret storage Oct 21, 2017
docs docs: Fix minor spelling mistake Oct 24, 2017
examples kelda: Update the last few stragglers to the new name Oct 18, 2017
integration-tester ci: Wait for the credential files rather than just the directory Oct 24, 2017
join join: Reorder imports to be consistent with goimports Oct 14, 2017
js bindings: Checks that non-preemptible sizes do not have "preemptible"… Oct 24, 2017
minion ci: Ignore Vault container in stop test Oct 23, 2017
ovs kelda: Update the last few stragglers to the new name Oct 18, 2017
scripts blueprints-tester: Test against the local bindings.js Oct 21, 2017
util kelda: Make inconsequential renames to kelda in go source Oct 18, 2017
vendor cli: Make `usage` dynamically generate the list of subcommands Oct 21, 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 eslint: Update version and check for more JSDoc Oct 17, 2017
.gitignore kelda: Rename binaries, user, and docker image Oct 15, 2017
.travis.yml travis: Fix NODEJS_VERSION deployment check Oct 24, 2017
CHANGELOG.md cloudcfg: Create TLS credentials directory before minion runs Oct 23, 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 kelda: Implement secure Secret storage Oct 21, 2017
README.md readme: Migrate the README.md from Quilt to Kelda Oct 18, 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.

Deploy Quickly on...

providers

Install

Install Kelda with npm:

$ npm install -g @kelda/install

Check out more in our Getting Started Guide.

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'
});

See full example blueprints 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!