Skip to content

DevOps-centric project that demonstrates modern infrastructure provisioning and application deployment workflows. This project exemplifies persistence and continuous development

License

Notifications You must be signed in to change notification settings

juanroldan1989/sisyphus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sisyphus

License Last Commit

A practical guide to modern infrastructure provisioning and application deployment.

Project Logo

Table of Contents

  1. Introduction
  2. Highlights
  3. Applications
  4. Structure
  5. Environments
  6. Conventions
  7. Security
  8. Contributing
  9. License

Introduction

Sisyphus is a DevOps-centric project that demonstrates modern infrastructure provisioning and application deployment workflows.

It showcases best practices for setting up scalable, resilient, and observable environments, with a focus on cloud-native technologies.

This repository is designed for DevOps engineers, Cloud Architects, and Developers aiming to understand end-to-end infrastructure and application workflows.

Highlights

  • End-to-end workflows for provisioning, deployment, and monitoring.
  • Infrastructure-as-Code (IaC) using Terraform and Terragrunt.
  • Mocked AWS services using LocalStack.
  • Simulated production-like environments with LocalStack.
  • Event-driven architectures with SQS integration.
  • Stress testing and auto-scaling demonstration.
  • Observability with logs and monitoring tools.

Applications

Applications utilized in this project are available in the following GitHub repository: Applications Repository.

Detailed instructions for development and publishing Docker images can also be found within the repository.

Structure

This project structure enables engineers to:

  • Operate within designated environments.
  • Add or remove modules as necessary to build applications within their environments.
  • Deploy specific applications or modules (e.g., networking, karpenter, clusters, ecs-service, eks-deployment) within targeted environments.

Environments

Development (dev)

This environment demonstrates how multiple clusters setup can coexist within the same VPC.

More info in README.

Sandbox (sandbox)

This environment demonstrates Karpenter scaling abilities within an EKS cluster.

More info in README.

Production (prod)

This environment demonstrates infrastructure provisioning through LocalStack vs. AWS.

More info in README.

Migration (migration)

TODO: This environment demonstrates how to migrate a production EKS cluster from one version to another.

More info in README.

Conventions

Each provisioned resource is tagged with the following information:

  1. Environment: Specifies the environment (e.g., prod, qa).
  2. AWS Region: Indicates the AWS region (e.g., us-east-1, us-west-2).
  3. Application Name (if applicable): The name of the application (e.g., wordpress-app, sqs-processor, flask-app).
  4. Resource Type: Defines the type of resource (e.g., ecs-service, ecs-task, vpc).

More info in TAGGING.md file.

Exception

To avoid exceeding length constraints for AWS resource names, the aws_region value may be omitted for certain resources.

Security

Validate EKS Cluster in terms of exposure to attacks.

https://www.youtube.com/watch?v=n9yWIXqrfN8

Contributing

Contributions are welcome and greatly appreciated! If you would like to contribute to this project, please follow the guidelines within CONTRIBUTING.md.

License

This project is licensed under the terms of the MIT License.

About

DevOps-centric project that demonstrates modern infrastructure provisioning and application deployment workflows. This project exemplifies persistence and continuous development

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published