Skip to content
Deploy right meow! 🚢😾
Rust Shell Makefile Dockerfile CSS JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci [DEVP-1171] Remove enum from dataHandling field names to allow looser… ( Jan 7, 2020
.github/workflows rustfmt + clippy ci (#393) Feb 10, 2020
doc
examples manifest.workload + statefulset basic support (#380) Feb 5, 2020
logo New Logo (#272) Sep 3, 2019
merge 0.146 with eventstream logic (#392) Feb 10, 2020
merge_derive
raftcat upgrade reqwest to 0.10 (#403) Feb 21, 2020
scripts bump versions + fix version script (shellcheck) Feb 7, 2019
shipcat_cli Better error messages in async (#408) Feb 24, 2020
shipcat_definitions upgrade reqwest to 0.10 (#403) Feb 21, 2020
shipcat_filebacked Better error messages in async (#408) Feb 24, 2020
tests Remove teams support in shipcat.conf (#354) Nov 16, 2019
.dockerignore fix docker image Nov 19, 2018
.editorconfig [IDM-104] Extract reading manifests from files from `shipcat_definiti… Mar 21, 2019
.gitattributes gitattrs take 2 Oct 9, 2019
.gitignore HANDS-35 (#349) Nov 20, 2019
CHANGELOG.md
CONTRIBUTING.md org rename docs (#321) Oct 18, 2019
Cargo.lock upgrade reqwest to 0.10 (#403) Feb 21, 2020
Cargo.toml Fixes for speedups (#267) Aug 21, 2019
Dockerfile remove old tiller logic + make template verification useful (#375) Jan 22, 2020
Dockerfile.circleci [OB-61] kubernetes 1.15.5 client (#326) Oct 21, 2019
Dockerfile.kongfig Support for Kongfig output (#211) Oct 10, 2018
Dockerfile.raftcat fix image Nov 19, 2018
LICENSE open source cleanups Oct 11, 2018
Makefile rustfmt + clippy ci (#393) Feb 10, 2020
README.md org rename docs (#321) Oct 18, 2019
rustfmt.toml rustfmt + clippy ci (#393) Feb 10, 2020

README.md

shipcat

Shipcat logo

CircleCI Docker Repository on Quay

A standardisation tool and security layer on top of kubernetes to config manage microservices. Developers write manifests:

name: webapp
image: clux/webapp-rs
version: 0.2.0
env:
  DATABASE_URL: IN_VAULT
resources:
  requests:
    cpu: 100m
    memory: 100Mi
  limits:
    cpu: 300m
    memory: 300Mi
replicaCount: 2
health:
  uri: /health
httpPort: 8000
regions:
- minikube
metadata:
  team: Doves
  repo: https://github.com/clux/webapp-rs

and shipcat creates a 2 replica kubernetes deployment for this sample webapp, with a health check to ensure smooth upgrades. Contacts will be slack notified on upgrades.

Secrets are managed by Vault and resolved by shipcat pre-merge, and pre-upgrade.

Documentation

Browse the API documentation, or the setup guides available at:

Components

Shipcat is made up of three main components:

  • shipcat_definitions - allowed syntax in our kube clusters - manifest.yml + shipcat.conf
  • shipcat - the pipeline cli and validator useable by developers and CI
  • raftcat - an kubernetes api/watcher that reads the shipcatmanifests custom resource

Integrations

While shipcat mainly deals with kubernetes, there are extensive and optional integrations with:

and some minor convenience integrations from common technologies like: Grafana, CircleCI, Quay.io, logz.io, Sentry, New Relic

CLI installation

  • Mac/Linux users can install from the releases page
  • Users with rust installed can use git pull && cargo build
  • Babylon employees can brew install shipcat or brew update && brew upgrade shipcat via the internal brew tap

See the building guide, for setting up auto-complete, and being able to use from outside a manifests repo.

CLI Usage

Define your manifest.yml file in a manifests repo, make sure shipcat validate passes.

You either need to have a ~/.kube/config whose current-context is set to the shipcat region you wish to validate, or pass the shipcat region in explicitly with -r region.

If you have vault read credentials (a VAULT_TOKEN evar, or a ~/.vault-token file) you can validate secret existence and generate the completed manifest (values):

shipcat validate webapp --secrets

# Generate completed manifest (what's passed to your chart)
shipcat values webapp -s

If you have helm installed you can generate the helm template via the associated helm chart:

# Pass completed manifest to helm template
shipcat template webapp

License

Apache 2.0 licensed. See LICENSE for details.

You can’t perform that action at this time.