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.
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.
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
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.
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.
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.