Code Monkey home page Code Monkey logo

kedge's Introduction

Kedge : Simple, Concise & Declarative Kubernetes Applications

Build Status Widget Coverage Status Widget GoDoc Widget GoReportCard Widget Slack Widget

What is Kedge?

Kedge is a simple, easy and declarative way to define and deploy applications to Kubernetes by writing very concise application definitions.

Key features and goals include:

  • Declarative: Declarative definitions specifying developer's intent.
  • Simplicity: Using a simple and concise specification that is easy to understand and define.
  • Concise: Define just the necessary bits and Kedge will do the rest. Kedge will interprolate and pick the best defaults for your application to run on Kubernetes.
  • Multi-container environments: Define your containers, services and applications in one simple file, or split them into multiple files.
  • Familiar structure: Using a familiar YAML structure as Kubernetes, it's easy to pick-up and understand Kedge.
  • Built on top of Kubernetes Pod definition: Leverages Kuberenetes Pod definition (PodSpec) and avoids leaky abstractions.

Project status

We are a very evolving project with high velocity, we have listed a file reference specification as well as document our RFC's and changes as GitHub issues.

Check out our roadmap as we push towards a 0.3.0 release.

Using Kedge

Installing

Kedge is released via GitHub on a three-week cycle, you can see all current releases on the GitHub release page.

Linux and macOS:

# Linux
curl -L https://github.com/kedgeproject/kedge/releases/download/v0.3.0/kedge-linux-amd64 -o kedge

# macOS
curl -L https://github.com/kedgeproject/kedge/releases/download/v0.3.0/kedge-darwin-amd64 -o kedge

chmod +x kedge
sudo mv ./kedge /usr/local/bin/kedge

Windows:

Download from GitHub and add the binary to your PATH.

Installing the latest binary (master)

You can download latest binary (built on each master PR merge) for Linux (amd64), macOS (darwin) or Windows (amd64) from Bintray:

Linux and macOS:

# Linux 
curl -L https://dl.bintray.com/kedgeproject/kedge/latest/kedge-linux-amd64 -o kedge

# macOS
curl -L https://dl.bintray.com/kedgeproject/kedge/latest/kedge-darwin-amd64 -o kedge

chmod +x kedge
sudo mv ./kedge /usr/local/bin/kedge

Windows:

Download from Bintray and add the binary to your PATH.

You can also download and build Kedge via Go:

go get github.com/kedgeproject/kedge

Trying it out

We have an extensive list of examples to check out, but the simplest of them all is a standard http example with minikube:

name: httpd
containers:
- image: centos/httpd
services:
- name: httpd
  type: NodePort
  ports:
  - port: 8080
    targetPort: 80

We can now create this example on the Kubernetes cluster:

$ kedge create -f httpd.yaml
deployment "httpd" created
service "httpd" created

And access it:

$ kubectl get po,deploy,svc
NAME                        READY     STATUS    RESTARTS   AGE
po/httpd-3617778768-ddlrs   1/1       Running   0          1m

NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/httpd   1         1         1            1           1m

NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
svc/httpd        10.0.0.187   <nodes>       8080:31385/TCP   1m
svc/kubernetes   10.0.0.1     <none>        443/TCP          18h

$ minikube service httpd
Opening kubernetes service default/httpd in default browser...

Our examples range from as simple as you can get to every possible key you can use. More can be found in the docs/examples directory.

Community, Discussion, Contribution, and Support

Contributing: Kedge is an evolving project and contributions are happily welcome. Feel free to open up an issue or even a PR. Read our contributing guide for more details. If you're interested in submitting a patch, feel free to check our development guide as well for ease into the project.

Chat (Slack): We're fairly active on Slack. You can invite yourself at slack.kedgeproject.org.

License

Unless otherwise stated (ex. /vendor files), all code is licensed under the Apache 2.0 License. Portions of the project use libraries and code from other projects, the appropriate license can be found within the code (header of the file) or root directory within the vendor folder.

kedge's People

Contributors

ashetty1 avatar cdrage avatar concaf avatar jdolitsky avatar kadel avatar pradeepto avatar surajnarwade avatar surajssd avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.