Navigation Menu

Skip to content

pradeepto/kedge

 
 

Repository files navigation

Kedge - Concise Application Definition for Kubernetes

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

What is Kedge?

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

Key features and goals include:

  • Simplicity: Using a simple and concise specification that is easy to understand and define.
  • Multi-container environments: Define your containers, services and applications in one simple file, or abstract 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.
  • No need to define everything: 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.

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.1.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.1.0/kedge-linux-amd64 -o kedge

# macOS
curl -L https://github.com/kedgeproject/kedge/releases/download/v0.1.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 /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.

About

Kedge - Concise Application Definition for Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 87.1%
  • Shell 11.1%
  • Makefile 1.8%