Pangaea: Point and Shoot Kubernetes with Exactly One Command

Why

  • To treat a Kubernetes cluster and Kubernetes nodes as the fundamental units of infrastructure, abstracting out the underlying provider.
  • Excellent developer workflow.

Single run setup

pangaea/bin/vagrant up  # for Vagrant  
pangaea/gce/up.sh       # for GCE

You have working Kubernetes running on a CoreOS node

Pangaea powers production projects built on the Hasura platform by 34cross, our services team

Uniform interface across development and production

pangaea/bin/kubectl_setup  # configure kubectl as per config file  
kubectl get po             # use as normal

Development workflow for containers that works

The project directory, that also contains our application files we’re going to modify, is mounted using nfs at /pangaea

We want to mount these files into the container to see changes reflected immediately (in production we bake it into the image itself), so we use templating-

# ...
containers:  
- image: reponame/nginxcustomized
  name: nginx
{% if config['environment'] == 'development' %}
    volumeMounts:
      - name: nginx-html
        mountPath: /usr/share/nginx/html
volumes:  
  - name: nginx-html
    hostPath:
      path: /pangaea/app/nginx/html
{% endif %}
# ...

Facilitate common infrastructure tasks

Mount GCE disks specified in config files

# ...
GCE_DISK_MOUNTS=(  
    disk-name /path/to/mount/disk
)
# ...

Pangaea goals

  • Focus on building the application, not on doing repetitive infrastructure tasks correctly.
  • Adapt to include better ideas that may emerge. If you know of a better way, please share!

Get Pangaea


Hasura is an open-source engine that gives you realtime GraphQL APIs on new or existing Postgres databases, with built-in support for stitching custom GraphQL APIs and triggering webhooks on database changes.


Hasura

Hasura

The Hasura GraphQL Engine gives you realtime, high performance GraphQL on any Postgres app. Now supports event triggers for use with serverless.

Read More