SUPERGIANT: Easy container orchestration using Kubernetes
Supergiant is an open-source container orchestration system that lets developers
easily deploy and manage apps as Docker containers using Kubernetes.
We want to make Supergiant the easiest way to run Kubernetes in the cloud.
Quick start...
Features
- Lets you manage microservices with Docker containers
- Lets you manage multiple users (OAUTH and LDAP coming soon)
- Web dashboard served over HTTPS/SSL by default
- Manages hardware like one, big self-healing resource pool
- Lets you easily scale stateful services and HA volumes on the fly
- Lowers costs by auto-scaling hardware when needed
- Lets you easily adjust RAM and CPU min and max values independently for each
service
- Manages hardware topology organically within configurable constraints
Resources
Installation
The current release installs on Amazon Web Services EC2, using a
publicly-available AMI. Other cloud providers and local installation are in
development.
If you want to install Supergiant, follow the Supergiant Install
Tutorial.
Top-Level Concepts
See the docs folder.
Micro-Roadmap
Currently, the core team is working on the following:
- Add LDAP and OAUTH user authentication
- Add support for additional cloud providers
- Add support for local installations
Community and Contributing
We are very grateful of any contribution.
All Supergiant projects require familiarization with our Community and our
Contribution Guidelines. Please see these links to get started.
Development
If you would like to contribute changes to Supergiant, first see the pages in
the section above, Community and Contributing.
Note: Supergiant cloud installers have dependencies
pre-installed and configured and will generate a self-signed cert based on the
server hostname. These instructions are for setting up a local or custom
environment.
Supergiant dependencies:
If you are missing any of these, see below to install or generate
dependencies.
From the supergiant Go package folder (usually
~/.go/src/github.com/supergiant/supergiant
) perform the following:
Initialize Config File
In config/config.json.example
, there's a sample config file to get you
started. Just duplicate and rename to config.json. Examples below assume the
default configuration for localhost development.
cp config/config.json.example config/config.json
Create an Admin User
go run cmd/generate_admin_user/generate_admin_user.go --config-file config/config.json
Run Supergiant
go run cmd/server/server.go --config-file config/config.json
The default configuration expects HTTP requests on port 8080
and HTTPS
requests on port 8081
. These may be changed in config/config.json
. Visiting
http://localhost:8080/ will produce an insecure warning page by design.
Access the dashboard at https://localhost:8081/ui/ with the generated Admin
username and password.
Run Tests
govendor test +local
Saving dependencies
If you make a change and import a new package, run this to vendor the imports.
govendor add +external
Compiling UI templates and static assets
Supergiant uses go-bindata to compile
assets directly into the code. You will need to run this command if you're
making changes to the UI:
go-bindata -pkg ui -o pkg/ui/generated_assets.go ui/...
And this, if you're working with provider code:
PROVIDER=aws # whichever you're working with
go-bindata -pkg $PROVIDER -o pkg/provider/$PROVIDER/generated_assets.go config/providers/$PROVIDER/...
Installing/Generating Dependencies
How to Install Supergiant as a Go Package
go get github.com/supergiant/supergiant
This will install supergiant in your
Go workspace package directory (usually something like
~/.go/src/github.com/supergiant/supergiant
). Packages in this directory
function like Git repositories that are aware of their upstream origin. From
here, you can create your own branches and even checkout branches under
development.
How to Generate a Certificate Signing Request File
You will need local RSA .key
and .pem
files. The default locations are in
the Supergiant Go package tmp folder (usually
~/.go/src/github.com/supergiant/supergiant
) as tmp/supergiant.key
,
tmp/supergiant.pem
. If you wish to customize these locations, you will need
to edit config/config.json
. The following steps require no config editing.
Set the following env session variables:
SSL_KEY_FILE=tmp/supergiant.key
SSL_CRT_FILE=tmp/supergiant.pem
Generate the .key
file
openssl genrsa -out $SSL_KEY_FILE 2048
Generate the CSR file. This step will ask you a few questions about the computer
you are using to generate the file.
When you are asked to enter Common Name (e.g. server FQDN or YOUR name),
enter localhost
. This may be customized in config/config.json
.
openssl req -new -x509 -sha256 -key $SSL_KEY_FILE -out $SSL_CRT_FILE -days 3650
License
This software is licensed under the Apache License, version 2 ("ALv2"), quoted below.
Copyright 2016 Qbox, Inc., a Delaware corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.