A practical guide to modern infrastructure provisioning and application deployment.
- Introduction
- Highlights
- Applications
- Structure
- Environments
- Conventions
- Security
- Contributing
- License
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.
- 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 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.
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.
This environment demonstrates how multiple clusters setup can coexist within the same VPC.
More info in README.
This environment demonstrates Karpenter
scaling abilities within an EKS
cluster.
More info in README.
This environment demonstrates infrastructure provisioning through LocalStack
vs. AWS
.
More info in README.
TODO: This environment demonstrates how to migrate a production EKS cluster from one version to another.
More info in README.
Each provisioned resource is tagged with the following information:
- Environment: Specifies the environment (e.g.,
prod
,qa
). - AWS Region: Indicates the AWS region (e.g.,
us-east-1
,us-west-2
). - Application Name (if applicable): The name of the application (e.g.,
wordpress-app
,sqs-processor
,flask-app
). - Resource Type: Defines the type of resource (e.g.,
ecs-service
,ecs-task
,vpc
).
More info in TAGGING.md file.
To avoid exceeding length constraints for AWS resource names, the aws_region
value may be omitted for certain resources.
Validate EKS Cluster in terms of exposure to attacks.
https://www.youtube.com/watch?v=n9yWIXqrfN8
Contributions are welcome and greatly appreciated! If you would like to contribute to this project, please follow the guidelines within CONTRIBUTING.md.
This project is licensed under the terms of the MIT License.