Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stelligent/mu
A full-stack DevOps on AWS framework
https://github.com/stelligent/mu
cloudformation codepipeline continuous-delivery docker ecs golang microservice pipeline
Last synced: 4 days ago
JSON representation
A full-stack DevOps on AWS framework
- Host: GitHub
- URL: https://github.com/stelligent/mu
- Owner: stelligent
- License: mit
- Created: 2016-12-14T00:35:01.000Z (almost 8 years ago)
- Default Branch: develop
- Last Pushed: 2020-06-18T14:09:29.000Z (over 4 years ago)
- Last Synced: 2024-07-31T21:57:10.813Z (4 months ago)
- Topics: cloudformation, codepipeline, continuous-delivery, docker, ecs, golang, microservice, pipeline
- Language: Go
- Homepage: https://getmu.io
- Size: 3.65 MB
- Stars: 972
- Watchers: 79
- Forks: 136
- Open Issues: 89
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Codeowners: CODEOWNERS
Awesome Lists containing this project
- awesome-ecs - mu - Automates everything relating to ECS devops and CI/CD. This framework lets you write a simple metadata file and it constructs all the infrastructure you need so that you can deploy to ECS by simply pushing to your Git repo. (Uncategorized / Uncategorized)
- awesome-cloudformation - mu
- awesome-docker - mu - Tool to configure CI/CD of your container applications via AWS CodePipeline, CodeBuild and ECS [@Stelligent](https://github.com/stelligent) (Development with Docker / CI/CD)
- awesome-docker - mu - Tool to configure CI/CD of your container applications via AWS CodePipeline, CodeBuild and ECS [@Stelligent](https://github.com/stelligent) (Development with Docker / CI/CD)
- awesome-list-microservice - mu - stack DevOps on AWS framework (golang)
README
### Deprecation Notice
Mu is no longer being maintained. We appreciate the support and interest over the past few years. This repository will be archived in the future. Releases will remain available for the foreseeable future. If you are starting a new project on AWS and looking for alternatives to Mu...
We recently did a [podcast](https://stelligent.com/2020/05/12/devops-on-aws-radio-mutato-and-open-source-at-stelligent-episode-27/) on [Mutato](https://stelligent.github.io/mutato/#/), Mu, and OSS at Stelligent that may be of interest.
Non-Stelligent OSS similar to Mu:
- [ECS CLI v2](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI.html)
- [CDK - particulary APP Delivery](https://docs.aws.amazon.com/cdk/api/latest/docs/app-delivery-readme.html)
- [AWS SAM](https://aws.amazon.com/serverless/sam/)
- [Service Frameworks](https://www.serverless.com/)
- [CDK8s](https://github.com/awslabs/cdk8s)Additionally, check out [RFC 049 of CDK](https://github.com/aws/aws-cdk-rfcs/blob/master/text/0049-continuous-delivery.md). CDK is where a lot of us are banking the future of AWS deployments are.
These alternatives either didn't exist or were in active development when we started Mu. The increased competition, new ideas, and updates to the ecosystem have made the decision easier to discontinue support for Mu.
[![Build Status](https://circleci.com/gh/stelligent/mu.svg?style=shield)](https://circleci.com/gh/stelligent/mu) [![Join the chat at https://gitter.im/stelligent/mu](https://badges.gitter.im/stelligent/mu.svg)](https://gitter.im/stelligent/mu?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Go Report Card](https://goreportcard.com/badge/github.com/stelligent/mu)](https://goreportcard.com/report/github.com/stelligent/mu)
# 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](https://serverless.com/) 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](https://github.com/stelligent/mu/wiki/img/mu-architecture.gif)
# Demo
Watch the 90 second demo below to see mu in action!![Demo](https://github.com/stelligent/mu/wiki/quickstart/mu-quickstart.gif)
# Get Started!
Requires [AWS Credentials](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html) are configured locally (or you are using something like [aws-vault](https://github.com/99designs/aws-vault)).Install latest version to /usr/local/bin (or for additional options, see [wiki](https://github.com/stelligent/mu/wiki/Installation)):
```bash
curl -s https://getmu.io/install.sh | sudo sh
```
Verify installation
```bash
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](https://github.com/stelligent/mu/wiki/Quickstart).
# What's next?
Check out the [examples](examples) to see snippets of `mu.yml` configuration files that you can use in your own project:* **[Basic](examples/basic)** - Simple website with continuous delivery pipeline deploying to dev and prod environments
* **[EKS](examples/eks)** - Demonstration of using EKS provider for mu
* **[Test Automation](examples/pipeline-newman)** - Automating end-to-end testing via [Newman](https://github.com/postmanlabs/newman)
* **[RDS Database](examples/database)** - Defining a database for a service
* **[Env Variables](examples/service-env-vars)** - Defining environment variables for the service
* **[HTTPS](examples/elb-https)** - Enable HTTPS on the ALB for an environment
* **[DNS](examples/elb-dns)** - Associate Route53 resource record with ALB for an environment
* **[VPC Target](examples/vpc-target)** - Targeting an existing VPC for an environment
* **[VPN Connection](examples/vpn)** - Demonstration of adding VPN via CloudFormation
* **[Custom CloudFormation](examples/custom-cloudformation)** - Demonstration of adding custom AWS resources via CloudFormation
* **[Traditional Infrastructure](examples/ec2-provider)** - Demonstration of using EC2 + CodeDeploy rather than ECS for running servicesRefer to the wiki for complete details on the configuration of `mu.yml` and the cli usage:
* **[Environments](https://github.com/stelligent/mu/wiki/Environments)** - managing VPCs, ECS clusters, container instances and ALBs
* **[Services](https://github.com/stelligent/mu/wiki/Services)** - managing ECS service configuration
* **[Databases](https://github.com/stelligent/mu/wiki/Databases)** - managing database configuration
* **[Pipelines](https://github.com/stelligent/mu/wiki/Pipelines)** - managing continuous delivery pipelines
* **[IAM](https://github.com/stelligent/mu/wiki/IAM)** - managing IAM roles that mu uses
* **[EKS](https://github.com/stelligent/mu/wiki/EKS)** - using EKS instead of ECS for environment provider
* **[CLI](https://github.com/stelligent/mu/wiki/CLI-Usage)** - details about using the CLI
* **[Custom CloudFormation](https://github.com/stelligent/mu/wiki/Custom-CloudFormation)** - details about customizing the CloudFormation that is generated by mu.
* **[Service Discovery](https://github.com/stelligent/mu/wiki/Service-Discovery)** - details about configuring and using service discovery
* **[Traditional Infrastructure](https://github.com/stelligent/mu/wiki/Traditional-Infrastructure)** - details about using traditional infrastructure (EC2 instances) for running services, rather than ECS and Docker.# Support
Need help? Check out the [FAQ](https://github.com/stelligent/mu/wiki/FAQ) to try to find an answer to your question. If you can't find an answer there, ask on [Gitter](https://gitter.im/stelligent/mu)!
# Contributing
Want to contribute to Mu? Awesome! Check out the [contributing guidelines](CONTRIBUTING.md) to get involved.
## Building from source
* Ensure [AWS CLI](http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 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](https://goreleaser.com/install) binary for your workstation's OS.
* Clone this repo `git clone [email protected]: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.