Skip to content
/ kedge Public
forked from kedgeproject/kedge

Compose Kubernetes apps using Kubernetes constructs

License

Notifications You must be signed in to change notification settings

surajssd/kedge

 
 

Repository files navigation

Kedge - Concise Application Definition for Kubernetes

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

Installation

The best way to try Kedge is to download the most up-to-date binary from the master GitHub branch:

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 generate and deploy this example to Kubernetes:

kedge generate -f httpd.yaml | kubectl create -f -
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.

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.

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

Compose Kubernetes apps using Kubernetes constructs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 90.6%
  • Shell 6.5%
  • Makefile 2.9%