Skip to content

turnerlabs/udeploy

Repository files navigation

uDeploy

A simple web based deployment portal for AWS resources.

Authorized users can perform drag-n-drop deployments without understanding the technical aspects of the AWS resource being deployed. Resources like Fargate Tasks, Lambda Functions, and S3 Objects are versioned, deployed, and monitored in the same way reducing complexity.

This portal compliments CI/CD processes like GitHub Actions, Jenkins, TeamCity, AWS CodeBuild, CircleCI, and the like with a user friendly GUI. It is not intended to be a replacement for CI/CD pipelines.

BuildNPublish

Why?

Goals

  • Create portal to deploy and monitor AWS resources
  • Make projects searchable for quick access to details, versions, and documentation
  • Enable consitent application versioning across multiple AWS resource types
  • Secure deployments by application and/or environment
  • Allow simple drag-n-drop deployments
  • Provide high level environment resource notifications and troubleshooting
  • Improve resource monitoring and interaction for integration partners
  • Support authentication with any OAuth2 API
  • Enable deployment workflow innovation (avoid third-party timelines and costs)
  • Centralize navigation to project resources by linking to scrum boards, config tools, and project documentation
  • Assist projects transitioning from Harbor UI

Non-Goals

  • Duplicate AWS console functionality
  • Implement continuous integration features
  • Display or modify infrastructure
  • Replace existing CI/CD piplines
Features
Fargate Service Fargate Task Lambda Function S3 Contents
Multiple Accounts Manages AWS resources accross multiple accounts with a single portal.
Authentication Supports OAuth2 for authenticating users.
Authorization Supports role based user permissions for editing and deploying environment instances.
View Instance Version Provides a view into an instance's deployed version details.
View Instance Status Provides a view into an instances status showing deployments in progress, erroring containers or lambdas, and scaling services and tasks.
View Instance Tasks Provides a view into what version of a service's tasks are starting or stopping at any given moment.
Deploy Version Allows drag and drop deployments for all supported AWS resources.
Start Instance Supports quickly starting a stopped service or task.
Scale Instance Supports quickly scaling any service or task.
Stop Instance Supports quickly stopping a running service or task.
Deployment Notifications Sends SNS or Slack notifications for AWS resource deployments and other changes in status.
Error Notifications Sends SNS or Slack notifications for AWS resource errors.
Audit Deployments Tracks user deployments via an audit trail.
Quick Linking Provides direct links to AWS logs, GitHub commits, Jira stories, and many more without browsing through the websites.
Deployment Propagation Provides option for automatically pushing deployments to QA, UAT, or PROD without user interaction keeping environments in sync.
Environment Migration Supports configuring specific environment variables to be automatically migrated between environments.
GitHub Integration Provides a quick view into version changes before and after deployments.
Projects Allows applications to be grouped by projects for organization and function.

Supported Browser: Chrome

Requirements

Instalation

Tool Version
terraform v0.12
docker-compose v1.24
aws cli v1.16
cstore v3.6

Operational

Service Platform Purpose
Route53 AWS DNS (SSL)
ECS Fargate AWS Docker Container
SQS AWS Notifications
CloudWatch AWS Notifications
MongoDB Atlas Store
OAuth2 Provider Azure User Authentication
Install/Upgrade
Tech Stack
  • Client
    • Bulma (css)
    • Vue.js (javascript)
  • Server
    • Echo (go)
  • Database
    • MongoDB
Architecture

The portal functions as a passive monitoring and active deployment platform. The architecture diagram is divided into two sections, monitoring and user actions.

uDeploy Architecture

Publish Build

NOTE: semver tag format required v1.0.0-rc

$ git tag {{TAG}}
$ git push origin {{TAG}}

Once the GitHub Actions build is complete the Docker image tagged {{TAG}} release will be published to Quay.io.

Configure Apps

Step by step instructions for configuring applications in a running instance of the portal.