Supergiant: Kubernetes Orchestration
Supergiant empowers developers and administrators through its simplified deployment and management of Kubernetes, in addition to easing the configuration and deployment of Helm charts, taking advantage of Kubernetes' power, flexibility, and abstraction.
Supergiant facilitates clusters on multiple cloud providers, striving for truly agnostic and impartial infrastructure--and it does this with an autoscaling system that cares deeply about efficiency. It asserts through downscaling and resource packing that unutilized infrastructure shouldn't be paid for (and, therefore, shouldn't be running).
Supergiant implements simple practices that abstract load-balancing, application deployment, basic monitoring, node deployment or destruction, and more, on a highly usable UI. Its efficient packing algorithm enables seamless auto-scaling of Kubernetes clusters, minimizing costs while maintaining the resiliency of applications. To dive into top-level concepts, see the documentation.
- Fully compatible with native Kubernetes versions 1.5.7, 1.6.7, 1.7.7, and 1.8.7
- Easy management and deployment of multiple kubes in various configurations
- AWS, DigitalOcean, OpenStack, Packet, GCE, and on-premise kube deployment
- Easy creation of Helm releases, Pods, Services, LoadBalancers, etc.
- Automatic, resource-based node scaling
- Compatibility with multiple hardware architectures
- Role-based Users, Session-based logins, self-signed SSLs, and API tokens
- A clean UI and CLI, both built on top of an API (with importable Go client lib)
Currently, the core team is working on the following:
- Add LDAP and OAuth user authentication
- Add support for new cloud providers
- Add support for local installations
- Supergiant Website
- Top-level concepts)
- Slack Support Channel
- Installation ~ UI Usage ~ API Usage
Community and Contributing
We are grateful for any contribution to the Supergiant project be it in a form of a new GitHub issue, a GitHub feature Pull Request, social media engagement etc. Contributing to Supergiant projects requires familiarization with Community and our Contribution Guidelines. Please see these links to get started.
Use Docker in development
docker-compose build server docker-compose run --rm --service-ports server
Native go on your host
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.
Checkout the repo
go get github.com/supergiant/supergiant
Create a Config file
You can copy the example configuration:
cp config/config.json.example config/config.json
go run cmd/server/server.go --config-file config/config.json open localhost:8080
Build the CLI
This will allow for calling the CLI with the
go build -o $GOPATH/bin/supergiant cmd/cli/cli.go
govendor test +local
If you make a change and import a new package, run this to vendor the imports.
govendor add +external
Compiling Provider files, 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 or if you're working with Provider code:
go-bindata -pkg bindata -o bindata/bindata.go config/providers/... ui/assets/... ui/views/...
Our AMI distribution automatically sets up self-signed SSL for Supergiant, but the default config/config.json.example does not enable SSL.
You can see our AMI boot file for an example of how that is done if you would like to use SSL locally or on your own production setup.
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.