Giter Site home page Giter Site logo

looksgood / paz Goto Github PK

View Code? Open in Web Editor NEW

This project forked from paz-sh/paz

0.0 1.0 0.0 168 KB

A pluggable in-house service platform with a PaaS-like workflow, built on Docker, CoreOS, Etcd and Fleet. This repository houses the documentation and installation scripts.

License: Other

Shell 100.00%

paz's Introduction

Paz

Continuous deployment production environments, built on Docker, CoreOS, etcd and fleet.

Paz is an in-house service platform with a PaaS-like workflow.

Screenshot

What is Paz?

Paz is...

  • Like your own private PaaS that you can host anywhere
  • Free
  • Open-source
  • Simple
  • A web front-end to CoreOS' Fleet with a PaaS-like workflow
  • Like a clustered/multi-host Dokku
  • Alpha software
  • Written in Node.js

Paz is not...

  • A hosted service
  • A complete, enterprise-ready orchestration solution

Features

  • Beautiful web UI
  • Run anywhere (Vagrant, public cloud or bare metal)
  • No special code required in your services
    • i.e. it will run any containerised application unmodified
  • Built for Continuous Deployment
  • Zero-downtime deployments
  • Service discovery
  • Same workflow from dev to production
  • Easy environments

Components

  • Web front-end - A beautiful UI for configuring and monitoring your services.
  • Service directory - A catalog of your services and their configuration.
  • Scheduler - Deploys services onto the platform.
  • Orchestrator - REST API used by the web front-end; presents a unified subset of functionality from Scheduler, Service Directory, Fleet and Etcd.
  • Centralised monitoring and logging.

Service Directory

This is a database of all your services and their configuration (e.g. environment variables, data volumes, port mappings and the number of instances to launch). Ultimately this information will be reduced to a set of systemd unit files (by the scheduler) to be submitted to Fleet for running on the cluster. The service directory is a Node.js API backed by a LevelDB database.

Scheduler

This service receives HTTP POST commands to deploy services that are defined in the service directory. Using the service data from the directory it will render unit files and run them on the CoreOS cluster using Fleet. A history of deployments and associated config is also available from the scheduler.

For each service the scheduler will deploy a container for the service and an announce sidekick container.

The scheduler is a Node.js API backed by a LevelDB database and uses Fleet to launch services.

Orchestrator

This is a service that ties all of the other services together, providing a single access-point for the front-end to interface with. Also offers a web socket endpoint for realtime updates to the web front-end.

The orchestrator is a Node.js API server that communicates with Etcd, Fleet, the scheduler and service directory.

Web Front-End

A beautiful and easy-to-use web UI for managing your services and observing the health of your cluster. Built in Ember.js.

HAProxy

Paz uses Confd to dynamically configure HAProxy based on service availability information declared in Etcd. HAProxy is configured to route external and internal requests to the correct host for the desired service.

Monitoring and Logging

Currently cAdvisor is used for monitoring, and there is not yet any centralised logging. Monitoring and logging are high-priority features on the roadmap.

Installation

Paz's Docker repositories are hosted at Quay.io, but they are public so you don't need any credentials.

You will need to install fleetctl and etcdctl. On OS/X you can install both with brew:

$ brew install etcdctl fleetctl

Vagrant

Clone this repository and run the following from the root directory of this repository:

$ ./scripts/install-vagrant.sh

This will bring up a three-node CoreOS Vagrant cluster and install Paz on it. Note that it may take 10 minutes or more to complete.

For extra debug output, run with DEBUG=1 environment variable set.

If you already have a Vagrant cluster running and want to reinstall the units, use:

$./script/reinstall-units-vagrant.sh

To interact with the units in the cluster via Fleet, just specify the URL to Etcd on one of your hosts as a parameter to Fleet. e.g.:

$ fleetctl -strict-host-key-checking=false -endpoint=http://172.17.8.101:4001 list-units

You can also SSH into one of the VMs and run fleetctl from there:

$ cd coreos-vagrant
$ vagrant ssh core-01

...however bear in mind that Fleet needs to SSH into the other VMs in order to perform operations that involve calling down to systemd (e.g. journal), and for this you need to have SSHd into the VM running the unit in question. For this reason you may find it simpler (albeit more verbose) to run fleetctl from outside the CoreOS VMs.

DigitalOcean

Paz has been tested on Digital Ocean but there isn't currently an install script for it. It shouldn't take much, just be sure to edit the PAZ_DNSIMPLE_* values in digitalocean/user-data. Stay tuned...

Tests

There is an integration test that brings up a CoreOS Vagrant cluster, installs Paz and then runs a contrived service on it and verifies that it works:

$ cd test
$ ./integration.sh

Each paz repository (service directory, orchestrator, scheduler) has tests that run on paz-ci.yld.io (in StriderCD), triggered by a Github webhook.

Paz Repositories

The various components of Paz are spread across several repositories:

paz's People

Contributors

lukebond avatar sublimino avatar tomgco avatar bfirsh avatar jemgold avatar dscape avatar

Watchers

ken avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.