This project is no longer being maintained by the Kelda team. To get updated when our next project is ready, sign up for our mailing list!
A straightforward way to configure containerized applications.
Kelda is a simple way to configure, run, and manage containerized applications in the cloud.
No more YAML, templating, complicated CLIs, and new domain specific languages. Kelda’s intuitive JavaScript API makes it easy to describe what you want to run in the cloud — that is, the virtual machines, containers, network policies, and more.
Using Kelda's CLI, simply pass your high-level blueprint to Kelda’s Kubernetes-based deployment platform. We'll take care of the nitty gritty details needed to get your system up and running in your cloud of choice.
Install Kelda with npm:
$ npm install -g @kelda/install
Check out more in our Quick Start tutorial.
-
Describe your application using Kelda's JavaScript API (or use a pre-made blueprint).
const kelda = require('kelda'); // A Docker container running your application. const app = new kelda.Container({ name: 'my-app', image: 'myDockerImage', }); // Expose the application to the public internet on port 80. kelda.allowTraffic(kelda.publicInternet, app, 80);
-
Describe where to run the application.
// A virtual machine with 8 GiB RAM and 2 CPUs on Amazon EC2. const virtualMachine = new kelda.Machine({ provider: 'Amazon', // 'Google', 'DigitalOcean'. ram: 8, cpu: 2, }); // An infrastructure with one Kelda Master machine and 6 Worker machines -- all in EC2. const infrastructure = new kelda.Infrastructure({ masters: virtualMachine, workers: virtualMachine.replicate(6), }); // Deploy the app to the infrastructure. app.deploy(infrastructure);
-
Boot the application to your preferred cloud using Kelda's CLI.
$ kelda run ./myBlueprint.js Your blueprint is being deployed. Check its status with `kelda show`.
-
Manage your deployment from the command line.
Keep track of virtual machines and containers.
$ kelda show MACHINE ROLE PROVIDER REGION SIZE PUBLIC IP STATUS i-0d1d363a57 Master Amazon us-west-1 m3.medium 54.149.85.24 connected i-0b6ef239c7 Worker Amazon us-west-1 m3.medium 54.218.19.34 connected ... CONTAINER MACHINE COMMAND HOSTNAME STATUS CREATED PUBLIC IP bce2362f3a1f i-0b6ef239c7 my-app running 20 seconds ago 54.218.19.34:80 ...
SSH into containers and machines (here, the
my-app
container).$ kelda ssh my-app
Stop the deployment.
$ kelda stop
And more...
Learn more in our Quick Start tutorial.
Here are a some of the cool things you can do with Kelda's API.
Don't waste time combing through reams of application specific documentation. Share and reuse configuration like you do with other software libraries.
const Redis = require('@kelda/redis');
const redisDB = new Redis(3, 'ADMIN_PASSWORD'); // A Redis database with 3 workers.
Only allow the traffic your application needs.
// Let the app send traffic to the Redis database on port 6379.
kelda.allowTraffic(app, redisDB.master, 6379);
Quickly get running in the cloud.
const otherApp = new kelda.Container({
name: 'my-other-app',
image: 'myOtherImage',
});
We keep your keys, certificates, and passwords encrypted and in the right hands.
otherApp.env['GITHUB_OATH_TOKEN'] = new kelda.Secret('githubOathToken');
Kelda's API is cloud agnostic, so you, your users, and colleagues can run the same blueprint in any of Kelda's supported clouds.
const machine = new kelda.Machine({
provider: 'Google', // 'Amazon', 'DigitalOcean'.
size: 'n1-standard-2', // 'm3.medium', '1gb'.
});
See the full API reference in our docs.
Kelda blueprints have been written for many popular applications. Here are some that we recommend checking out:
- Apache Spark. Deploy a multi-node Spark cluster for data processing.
- HAProxy. Load balance traffic across different applications.
- Kibana. Vizualize data from a hosted Elasticsearch instance.
We would love to work with you, get your feedback, or answer any questions you have!
- If you have any questions or want to introduce yourself, come join our Slack.
- If you have a suggestion or find a problem, please submit a GitHub issue.
- If you want to help make the cloud approachable, we would love to see your pull requests. Check out our docs for how to get started contributing.
- Want to learn more? Check out our docs and website.