Code Monkey home page Code Monkey logo

ship's Introduction

Ship

Test Coverage Maintainability CircleCI Docker Image Go Report Card GitHub stars

Replicated Ship

Replicated Ship is an open source project by Replicated designed to extend Google’s Kustomize project in a way that can reduce the operational overhead of maintaining 3rd party applications (open source or proprietary) deployed to a Kubernetes cluster.

The initial release of Replicated Ship exposes the power of Kustomize as an advanced custom configuration management tool for Helm charts, Kubernetes manifests and Knative applications. With Ship, cluster operators can automatically stay in sync with upstream changes (ie. via automated pull requests or another form of automation) while preserving their local, custom configurations and extensions (add, deletes and edits) without git merge conflicts. This is possible because of how the three operating modes of Ship invoke, store and apply Kustomizations made by the cluster operator.

Three operating modes

ship init

Prepares a new application for deployment. Use for:

  • Generating initial config (state.json) for an application
  • Creating and managing Kustomize overlays to be applied before deployment

ship watch

Polls an upstream source, blocking until any change has been published. Use for:

  • Triggering creation of pull requests in a CI pipeline, so that third party updates can be manually reviewed, and then automatically deployed once merged

ship update

Updates an existing application by merging the latest release with the local state and overlays. Use for:

  • Preparing an update to be deployed to a third party application
  • Automating the update process to start from a continuous integration (CI) service

Features

Ship is designed to provide first-time configuration UI and/or be used headless in a CI/CD pipeline to automate deployment of third party applications.

  • Web based "admin console" provides initial configuration of Helm values and creates Kustomize overlays
  • Headless mode supports automated pipelines
  • Merge Helm charts with override values and apply custom overlays with Kustomize to avoid merge conflicts when upstream or local values are changed
  • Watch upstream repos for updates & sync changes to your local version.
  • Deploy Helm charts to a Kubernetes cluster without Tiller
  • Enables GitOps workflows to update third party applications
  • Configuration workflow ship.yaml files can be included in Helm chart repos, to customize the initial ship init experience

Installation

There are two ways you can get started with Ship:

Installing locally

Ship is packaged as a single binary, and Linux and MacOS versions are distributed:

  • To download the latest Linux build, run:
curl -sSL https://github.com/replicatedhq/ship/releases/download/v0.16.0/ship_0.16.0_linux_amd64.tar.gz | tar xv && sudo mv ship /usr/local/bin
  • To download the latest MacOS build, run:
curl -sSL https://github.com/replicatedhq/ship/releases/download/v0.16.0/ship_0.16.0_darwin_amd64.tar.gz | tar xv && sudo mv ship /usr/local/bin

Ship is also available through Homebrew:

brew tap replicatedhq/ship
brew install ship

After ship is installed, run it with:

ship init <path-to-chart> # github.com/helm/charts/stable/mysql

Running in Docker

To run ship in Docker:

docker run -p 8800:8800 replicated/ship init <path-to-chart> # github.com/helm/charts/stable/mysql

Note, you will need to mount and configure a shared volume, in order to persist any changes made within the Ship admin console when launched via Docker.

Ship Modes

Replicated Ship Modes

CI/CD Integration

Once you've prepared an application using ship init, the deployable application assets can be generated, using any version of the application, by running:

ship update

The watch command is designed to be a trigger for a CI/CD process by watching the upstream application for changes. Running ship watch will load the state file and periodically poll the upstream application and exit when it finds a change. A simple, starting workflow could be to run ship watch && ship update after completing ship init. This will apply an update to the base directory.

Community

For questions about using Ship, there's a Replicated Community forum.

For bug reports, please open an issue in this repo.

For instructions on building the project and making contributions, see Contributing

ship's People

Contributors

dexhorthy avatar laverya avatar graysonnull avatar marccampbell avatar ebramanti avatar rob0h avatar divolgin avatar 10dimensional avatar kherrowisc avatar areed avatar jgruica avatar grantmiller avatar emosbaugh avatar

Watchers

James Cloos avatar  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.