• This repository has been archived on 04/May/2022
  • Stars
    star
    734
  • Rank 61,748 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Kubernetes native multi-cluster canary or blue-green rollouts using Helm

Build Status Documentation Status

Deprecation notice

⚠️ Shipper has reached end of life. We are no longer accepting pull requests or providing support for community users. The project has been discontinued and the core team will not develop any feature or bug-fix.


Shipper

Visit Read the Docs for the full documentation, examples and guides.

Shipper is an extension for Kubernetes to add sophisticated rollout strategies and multi-cluster orchestration.

It lets you use kubectl to manipulate objects which represent any kind of rollout strategy, like blue/green or canary. These strategies can deploy to one cluster, or many clusters across the world.

Why does Shipper exist?

Kubernetes is a wonderful platform, but implementing mature rollout strategies on top of it requires subtle multi-step orchestration: Deployment objects are a building block, not a solution.

When implemented as a set of scripts in CI/CD systems like Jenkins, GitLab, or Brigade, these strategies can become hard to debug, or leave out important properties like safe rollbacks.

These problems become more severe when the rollout targets multiple Kubernetes clusters in multiple regions: the complex, multi-step orchestration has many opportunities to fail and leave clusters in inconsistent states.

Shipper helps by providing a higher level API for complex rollout strategies to one or many clusters. It simplifies CI/CD pipeline scripts by letting them focus on the parts that matter to that particular application.

Multi-cluster, multi-region, multi-cloud

Shipper can deploy your application to multiple clusters in different regions.

It expects a Kubernetes API and requires no agent in the application clusters, so it should work with any compliant Kubernetes implementation like GKE or AKS. If you can use kubectl with it, chances are, you can use Shipper with it as well.

Release Management

Shipper doesn't just copy-paste your code onto multiple clusters for you -- it allows you to customize the rollout strategy fully. This allows you to craft a rollout strategy with the appropriate speed/risk balance for your particular situation.

After each step of the rollout strategy, Shipper pauses to wait for another update to the Release object. This checkpointing approach means that rollouts are fully declarative, scriptable, and resumable. Shipper can keep a rollout on a particular step in the strategy for ten seconds or ten hours. At any point the rollout can be safely aborted, or moved backwards through the strategy to return to an earlier state.

Roll Backs

Since Shipper keeps a record of all your successful releases, it allows you to roll back to an earlier release very easily.

Charts As Input

Shipper installs a complete set of Kubernetes objects for a given application.

It does this by relying on Helm, and using Helm Charts as the unit of configuration deployment. Shipper's Application object provides an interface for specifying values to a Chart just like the helm command line tool.

Relationship to Tiller

Tiller is the server-side component of Helm 2 which installs Charts into the cluster, and keeps track of releases. Shipper does not use Tiller: it replaces Tiller entirely.

Shipper consumes Charts directly from a Chart repository like ChartMuseum, and installs objects into clusters itself. This has the nice property that regular Kubernetes authentication and RBAC controls can be used to manage access to Shipper APIs.

Documentation and Support

Visit Read the Docs for the full documentation, examples and guides.

You can find us at #shipper channel of Kubernetes slack.

Demo

Here's a video demo of Shipper from the SIG Apps community call June 2018. Shipper object definitions have changed a little bit since then, but this is still a good way to get a general idea of what problem Shipper is solving and how it looks in action.

License

Apache License 2.0, see LICENSE.

More Repositories

1

upliftml

UpliftML: A Python Package for Scalable Uplift Modeling
Python
317
star
2

perfsuite-android

Lightweight Android library for collecting basic app performance metrics
Kotlin
104
star
3

perfsuite-ios

PerformanceSuite: A Swift-based iOS library for monitoring app performance and quality metrics.
Swift
90
star
4

powercalculator

Calculator to define runtime of experiments
JavaScript
87
star
5

carbonapi

High-performance Graphite frontend in Go
Go
81
star
6

nanotube

High-performance router for Graphite.
Go
56
star
7

bpfink

BPF based FIM solution
Go
41
star
8

pakket

An Unopinionated Meta-Packaging System
Perl
26
star
9

ml-dataset-mdt

Multi Destination Trips dataset for research purposes - fully anonymized, sampled, limited
Jupyter Notebook
13
star
10

perl-Net-Kafka

Net::Kafka - High-performant Perl client for Apache Kafka
Perl
12
star
11

ml-quality-model

Jupyter Notebook
9
star
12

uplift-modeling-for-marketing-personalization-tutorial

Jupyter Notebook
6
star
13

yubistack

A golang implementation of Yubico TOTP stack
Go
6
star
14

rules_lombok_java_library

Bazel rules that apply delombok over your code so it can be properly passed to java_library
Starlark
5
star
15

cloudsec-metrics

Cloud security metrics collector\exporter
Go
3
star
16

rules_booking

Some Bazel rules we have built at Booking.com
Starlark
2
star
17

rules_rpmbuild

Starlark
2
star
18

aws-security-connectors

Tool which connects member AWS accounts security tooling to master account
Go
2
star
19

rules_pitest

Bazel rules to wrap pitest.org
Starlark
2
star
20

rules_patchelf_prebuilt

Bazel rule providing prebuilt patchelf for serveral operative systems and versions
Starlark
1
star
21

ml-dataset-reviews

1
star
22

dotnet-http

Common Http library for all Http client operations
C#
1
star
23

rules_lambda

Some bazel rules to ease working with lambdas
Starlark
1
star
24

rules_flatbuffers

Flatbuffers rules for Bazel, based on prebuilt flatc and open source rules provided by google
Starlark
1
star