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