Skip to content
A full-stack DevOps on AWS framework
Go Makefile Other
Branch: develop
Clone or download

Latest commit

Latest commit 3deabd7 Jan 7, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci reverting .circleci/config.yml back to master Aug 9, 2019
cli Add support for pipeline factories via Service Catalog Oct 31, 2018
common dockerfile: support ecr private repo as a base image Feb 12, 2019
e2e correct e2e/e2e-eks/mu.yml:rbac.users key to match RoleBinding Oct 23, 2018
examples examples/service-env-vars: use 'acceptance' and 'production' for env … Oct 31, 2018
provider/aws Issue #393 - Fix dry run error when provider is EKS Nov 7, 2018
templates Fixed rds:ListTagsForResource permission Aug 12, 2019
wiki @ 841cfb8 bump wiki Oct 31, 2018
workflows cleanup Feb 12, 2019
.dockerignore
.editorconfig fix #105 - change bucket prefix for codepipeline artfiacts to have `m… Mar 6, 2017
.gitignore enhancements to circleci (v2.1) Sep 21, 2018
.gitmodules doc updates Mar 7, 2017
.goreleaser.yml added .goreleaser.yml file Aug 9, 2019
CODEOWNERS Create CODEOWNERS Jan 28, 2019
CONTRIBUTING.md merge fix from master Feb 14, 2018
Dockerfile add docker image for mu Dec 5, 2018
Gopkg.lock updated Gopkg.log with "dep ensure" Aug 9, 2019
Gopkg.toml Issue #344 - Replace gopass with readline Oct 9, 2018
LICENSE.md Updating LICENSE.md Jan 7, 2020
Makefile put back a @ in front of a command in Makefile Aug 9, 2019
README.md Add aws credentials requirement to Getting Started Aug 12, 2019
go-git.v4.patch patch is only applied once Sep 20, 2018
install.sh update installer to determine latest version via GH tags Sep 26, 2018
main.go multi-document yaml support Oct 2, 2018
main_test.go ignore tempate tests due to AWS credentials missing Oct 20, 2018

README.md


Build Status Join the chat at https://gitter.im/stelligent/mu Go Report Card

Why?

Both Amazon ECS (Elastic Container Service) and Amazon EKS (Elastic Container Service for Kubernetes) provide excellent platforms for deploying microservices as containers. The challenge however is that there is a significant learning curve for microservice developers to deploy their applications in an efficient manner. Specifically, they must learn to use CloudFormation to orchestrate the management of EKS, ECS, ECR, EC2, ELB, VPC, and IAM resources. Additionally, tools like CodeBuild and CodePipeline must be mastered to create a continuous delivery pipeline for their microservices.

To address these challenges, this tool was created to simplify the declaration and administration of the AWS resources necessary to support microservices. Similar to how the Serverless Framework improved the developer experience of Lambda and API Gateway, this tool makes it easier for developers to use EKS or ECS as a microservices platform.

The mu tool uses CloudFormation stacks to manage all resources it creates. Additionally, mu will not create any databases or other AWS resources to support itself. It will only create resources (via CloudFormation) necessary to run your microservices. This means at any point you can stop using mu and continue to manage the AWS resources that it created via AWS tools such as the CLI or the console.

Architecture Diagram

Demo

Watch the 90 second demo below to see mu in action!

Demo

Get Started!

Requires AWS Credentials are configured locally (or you are using something like aws-vault).

Install latest version to /usr/local/bin (or for additional options, see wiki):

curl -s https://getmu.io/install.sh | sudo sh

Verify installation

mu -v
mu version 1.5.10

Assuming your project already has a Dockerfile, you can initialize your mu.yml file with: mu init. More details available in the quickstart.

What's next?

Check out the examples to see snippets of mu.yml configuration files that you can use in your own project:

  • Basic - Simple website with continuous delivery pipeline deploying to dev and prod environments
  • EKS - Demonstration of using EKS provider for mu
  • Test Automation - Automating end-to-end testing via Newman
  • RDS Database - Defining a database for a service
  • Env Variables - Defining environment variables for the service
  • HTTPS - Enable HTTPS on the ALB for an environment
  • DNS - Associate Route53 resource record with ALB for an environment
  • VPC Target - Targeting an existing VPC for an environment
  • VPN Connection - Demonstration of adding VPN via CloudFormation
  • Custom CloudFormation - Demonstration of adding custom AWS resources via CloudFormation
  • Traditional Infrastructure - Demonstration of using EC2 + CodeDeploy rather than ECS for running services

Refer to the wiki for complete details on the configuration of mu.yml and the cli usage:

  • Environments - managing VPCs, ECS clusters, container instances and ALBs
  • Services - managing ECS service configuration
  • Databases - managing database configuration
  • Pipelines - managing continuous delivery pipelines
  • IAM - managing IAM roles that mu uses
  • EKS - using EKS instead of ECS for environment provider
  • CLI - details about using the CLI
  • Custom CloudFormation - details about customizing the CloudFormation that is generated by mu.
  • Service Discovery - details about configuring and using service discovery
  • Traditional Infrastructure - details about using traditional infrastructure (EC2 instances) for running services, rather than ECS and Docker.

Support

Need help? Check out the FAQ to try to find an answer to your question. If you can't find an answer there, ask on Gitter!

Contributing

Want to contribute to Mu? Awesome! Check out the contributing guidelines to get involved.

Building from source

  • Ensure AWS CLI is configured with an access key, secret access key, and region.
  • Install Go tools 1.10+ - (https://golang.org/doc/install)
  • If you will be publishing a new release to GitHub, you must install the goreleaser binary for your workstation's OS.
  • Clone this repo git clone git@github.com:stelligent/mu.git $GOPATH/src/github.com/stelligent/mu
  • Go to src cd $GOPATH/src/github.com/stelligent/mu
  • Build with make
  • Run unit tests with make test
  • Run end-to-end tests with make e2e...takes about 30 minutes and will incur charges in your AWS account.
You can’t perform that action at this time.