/eastern

Simple Kubernetes Deployment

Primary LanguagePythonMIT LicenseMIT

Project Eastern

Travis GitHub license Read the Docs PyPI Docker Hub

A Kubernetes templating and deployment tool.

Table of Contents

Features

  • Simple, logicless template engine designed for YAML
  • Work with multiple environments
  • In use in production at Wongnai
  • Extensible plugin architecture

Installation

Note that Eastern requires kubectl.

Installing from PyPI

Run pip install eastern to install.

Running from Docker Image

Eastern is available on Docker Hub for continuous delivery users.

docker run -v `pwd`:/projects/ --rm wongnai/eastern eastern generate /projects/kubernetes.yaml

Installing from Git

  1. Clone this repository
  2. Run python3 setup.py install. You might to run this as root.
  3. Run eastern to verify that it is installed.

Usage

Template language

At its core, Eastern is a YAML templating tool. Eastern provides the following commands as YAML comment.

  • load? file_1.yaml, file_2.yaml ...: Load the first file available
  • load! file_1.yaml, file_2.yaml ...: Same as load? but throw when no file is loaded.

The file name and contents may contains variable interpolation. Available variable is

  • ${NAMESPACE}: Name of namespace

Additional variables can be passed by -s var=value.

For example:

image: wongnai/eastern:${IMAGE_TAG}
env:
  # load! env-${NAMESPACE}.yaml, env.yaml

See full deployment example in the example folder.

Once you have written a template, test it with eastern generate path/to/file.yaml namespace -s IMAGE_TAG=2.0.

Deploy

To deploy, run eastern deploy path/to/file.yaml namespace.

Available options:

  • --set var=value (-s): Set additional template variables
  • --edit (-e): Edit resulting YAML before deploying
  • --no-wait: Exit after running kubectl without waiting for rolling deploy

Deploy jobs

Eastern comes with Job deployment tool.

To start a job, run eastern job path/to/file.yaml namespace image_tag. The file must have the job as its only document. Eastern will add image_tag as job suffix, deploy, wait until job's completion and remove the job.

Supplied image_tag is available in the template as ${IMAGE_TAG}.

Plugin

Eastern is extensible. We use Eastern plugins ourselves. The API docs is available on Read the Docs.

License

(C) 2017 Wongnai Media Co, Ltd.

Eastern is licensed under MIT License