shipcat

Deploy right meow! :ship::pouting_cat:

  • Owner: babylonhealth/shipcat
  • Platform:
  • License:: Apache License 2.0
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

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.

Main metrics

Overview
Name With Ownerbabylonhealth/shipcat
Primary LanguageRust
Program languageDockerfile (Language Count: 8)
Platform
License:Apache License 2.0
所有者活动
Created At2018-10-12 09:57:46
Pushed At2022-03-31 15:45:50
Last Commit At2022-03-31 16:41:55
Release Count210
Last Release Name0.168.3 (Posted on 2022-03-31 16:41:55)
First Release Namev0.22.0 (Posted on 2018-04-20 11:54:36)
用户参与
Stargazers Count208
Watchers Count116
Fork Count16
Commits Count1.3k
Has Issues Enabled
Issues Count120
Issue Open Count45
Pull Requests Count382
Pull Requests Open Count7
Pull Requests Close Count38
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private