shipyard

package module
v0.0.0-...-6515ce2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2016 License: Apache-2.0 Imports: 3 Imported by: 0

README

Shipyard

Build Status

Shipyard enables multi-host, Docker cluster management. It uses Docker Swarm for cluster resourcing and scheduling.

Quick Start

There is a deploy script provided on the Shipyard website for quick installation.

Note: you must already have a Docker engine available. If you do not have Docker, you can use Docker Machine to get started.

curl -s https://shipyard-project.com/deploy | bash -s

For full options:

curl -s https://shipyard-project.com/deploy | bash -s -- -h

Documentation

Full docs are available at http://shipyard-project.com Source code analyse gitbook md file

Components

There are three components to Shipyard:

Controller

The Shipyard controller talks to a RethinkDB instance for data storage (user accounts, engine addresses, events, etc). It also serves the API and web interface (see below). The controller uses Citadel to communicate to each host and handle cluster events.

API

Everything in Shipyard is built around the Shipyard API. It enables actions such as starting, stopping and inspecting containers, adding and removing engines and more. It is a very simple RESTful JSON based API.

UI

The Shipyard UI is a web interface to the Shipyard cluster. It uses the Shipyard API for all interaction. It is an AngularJS app that is served via the Controller.

Contributing

Controller

To get a development environment you will need:

  • Go 1.4+
  • Node.js: (npm for bower to build the Angular frontend)

Run the following:

  • install Godep: go get github.com/tools/godep
  • run npm install -g bower to install bower
  • run make build to build the binary
  • run make media to build the media
  • run ./controller -h for options

License

Shipyard is licensed under the Apache License, Version 2.0. See LICENSE for full license text.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ClusterInfo

type ClusterInfo struct {
	Cpus           float64 `json:"cpus,omitempty"`
	Memory         float64 `json:"memory,omitempty"`
	ContainerCount int     `json:"container_count,omitempty"`
	EngineCount    int     `json:"engine_count,omitempty"`
	ImageCount     int     `json:"image_count,omitempty"`
	ReservedCpus   float64 `json:"reserved_cpus,omitempty"`
	ReservedMemory float64 `json:"reserved_memory,omitempty"`
	Version        string  `json:"version,omitempty"`
}

type ConsoleSession

type ConsoleSession struct {
	ID          string `json:"id,omitempty" gorethink:"id,omitempty"`
	ContainerID string `json:"container_id,omitempty" gorethink:"container_id,omitempty"`
	Token       string `json:"token,omitempty" gorethink:"token,omitempty"`
}

type Event

type Event struct {
	Type          string                      `json:"type,omitempty"`
	ContainerInfo *dockerclient.ContainerInfo `json:"container_info,omitempty"`
	Time          time.Time                   `json:"time,omitempty"`
	Message       string                      `json:"message,omitempty"`
	Username      string                      `json:"username,omitempty"`
	Tags          []string                    `json:"tags,omitempty"`
}

type Node

type Node struct {
	ID             string   `json:"id,omitempty" gorethink:"id,omitempty"`
	Name           string   `json:"name,omitempty" gorethink:"name,omitempty"`
	Addr           string   `json:"addr,omitempty" gorethink:"addr,omitempty"`
	Containers     string   `json:"containers,omitempty"`
	ReservedCPUs   string   `json:"reserved_cpus,omitempty"`
	ReservedMemory string   `json:"reserved_memory,omitempty"`
	Labels         []string `json:"labels,omitempty"`
	ResponseTime   float64  `json:"response_time" gorethink:"response_time,omitempty"`
}

type Registry

type Registry struct {
	ID   string `json:"id,omitempty" gorethink:"id,omitempty"`
	Name string `json:"name,omitempty" gorethink:"name,omitempty"`
	Addr string `json:"addr,omitempty", gorethink:"addr,omitempty"`
	// contains filtered or unexported fields
}

func NewRegistry

func NewRegistry(id, name, addr string) (*Registry, error)

func (*Registry) DeleteRepository

func (r *Registry) DeleteRepository(name string) error

func (*Registry) Repositories

func (r *Registry) Repositories() ([]*registry.Repository, error)

func (*Registry) Repository

func (r *Registry) Repository(name string) (*registry.Repository, error)

type Usage

type Usage struct {
	ID              string  `json:"id,omitempty"`
	Version         string  `json:"version,omitempty"`
	NumOfEngines    int     `json:"num_of_engines,omitempty"`
	NumOfImages     int     `json:"num_of_images,omitempty"`
	NumOfContainers int     `json:"num_of_containers,omitempty"`
	TotalCpus       float64 `json:"total_cpus,omitempty"`
	TotalMemory     float64 `json:"total_memory,omitempty"`
}

Directories

Path Synopsis
Godeps
_workspace/src/github.com/Sirupsen/logrus
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
Package logrus is a structured logger for Go, completely API compatible with the standard library logger.
_workspace/src/github.com/cenkalti/backoff
Package backoff implements backoff algorithms for retrying operations.
Package backoff implements backoff algorithms for retrying operations.
_workspace/src/github.com/codegangsta/cli
Package cli provides a minimal framework for creating and organizing command line Go applications.
Package cli provides a minimal framework for creating and organizing command line Go applications.
_workspace/src/github.com/codegangsta/negroni
Package negroni is an idiomatic approach to web middleware in Go.
Package negroni is an idiomatic approach to web middleware in Go.
_workspace/src/github.com/davecgh/go-spew/spew
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
Package spew implements a deep pretty printer for Go data structures to aid in debugging.
_workspace/src/github.com/docker/go-units
Package units provides helper function to parse and print size and time units in human-readable format.
Package units provides helper function to parse and print size and time units in human-readable format.
_workspace/src/github.com/golang/protobuf/proto
Package proto converts data structures to and from the wire format of protocol buffers.
Package proto converts data structures to and from the wire format of protocol buffers.
_workspace/src/github.com/gorilla/context
Package context stores values shared during a request lifetime.
Package context stores values shared during a request lifetime.
_workspace/src/github.com/gorilla/mux
Package mux implements a request router and dispatcher.
Package mux implements a request router and dispatcher.
_workspace/src/github.com/gorilla/securecookie
Package securecookie encodes and decodes authenticated and optionally encrypted cookie values.
Package securecookie encodes and decodes authenticated and optionally encrypted cookie values.
_workspace/src/github.com/gorilla/sessions
Package gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends.
Package gorilla/sessions provides cookie and filesystem sessions and infrastructure for custom session backends.
_workspace/src/github.com/hailocab/go-hostpool
A Go package to intelligently and flexibly pool among multiple hosts from your Go application.
A Go package to intelligently and flexibly pool among multiple hosts from your Go application.
_workspace/src/github.com/mailgun/oxy/forward
package forwarder implements http handler that forwards requests to remote server and serves back the response websocket proxying support based on https://github.com/yhat/wsutil
package forwarder implements http handler that forwards requests to remote server and serves back the response websocket proxying support based on https://github.com/yhat/wsutil
_workspace/src/github.com/nu7hatch/gouuid
This package provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3, 4 and 5 UUIDs as specified in RFC 4122.
This package provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3, 4 and 5 UUIDs as specified in RFC 4122.
_workspace/src/github.com/pmezard/go-difflib/difflib
Package difflib is a partial port of Python difflib module.
Package difflib is a partial port of Python difflib module.
_workspace/src/github.com/stretchr/testify/assert
Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.
Package assert provides a set of comprehensive testing tools for use with the normal Go testing system.
_workspace/src/golang.org/x/crypto/bcrypt
Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing algorithm.
Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing algorithm.
_workspace/src/golang.org/x/crypto/blowfish
Package blowfish implements Bruce Schneier's Blowfish encryption algorithm.
Package blowfish implements Bruce Schneier's Blowfish encryption algorithm.
_workspace/src/golang.org/x/crypto/pbkdf2
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.
Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC 2898 / PKCS #5 v2.0.
_workspace/src/golang.org/x/net/websocket
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
Package websocket implements a client and server for the WebSocket protocol as specified in RFC 6455.
_workspace/src/golang.org/x/sys/unix
Package unix contains an interface to the low-level operating system primitives.
Package unix contains an interface to the low-level operating system primitives.
_workspace/src/gopkg.in/dancannon/gorethink.v2
Package gorethink implements a Go driver for RethinkDB Current version: v2.0.2 (RethinkDB v2.3) For more in depth information on how to use RethinkDB check out the API docs at http://rethinkdb.com/api
Package gorethink implements a Go driver for RethinkDB Current version: v2.0.2 (RethinkDB v2.3) For more in depth information on how to use RethinkDB check out the API docs at http://rethinkdb.com/api
_workspace/src/gopkg.in/dancannon/gorethink.v2/ql2
Package ql2 is a generated protocol buffer package.
Package ql2 is a generated protocol buffer package.
_workspace/src/gopkg.in/fatih/pool.v2
Package pool implements a pool of net.Conn interfaces to manage and reuse them.
Package pool implements a pool of net.Conn interfaces to manage and reuse them.
api
registry
v1

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL