├── README.md ├── Week1 ├── README.md ├── Solution │ └── README.md ├── index.html └── style.css ├── Week2 ├── README.md └── Solution │ └── README.md ├── Week3 ├── README.md └── Solution │ └── README.md ├── Week4 ├── README.md └── Solution │ └── README.md ├── Week5 ├── README.md └── Solution │ └── README.md ├── Week6 └── README.md ├── Week7 └── Readme.md └── Week8 └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # 10WeeksOfCloudops Challenge 2 | 3 | ## Why are we doing this challenge? 🤷‍♂️ 4 | 5 | - Self Learning and Development 🛠️📚 6 | - To gain hands-on experience in building real-time use cases. 7 | - To develop the ability to justify your hands-on experience on your resume. 8 | - Showcase your skills through GitHub, blogs, and social media.🚀 9 | 10 | ## 🔗 Join our community 👇 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | # 🏆 #10WeeksOfCloudOps Challenge - Winners 22 | 23 | Welcome to the official winners' announcement of the **#10WeeksOfCloudOps Challenge!** 🎉 24 | 25 | This challenge aimed to upskill participants in CloudOps, Kubernetes, DevOps, and Infrastructure as Code (IaC). We received outstanding contributions from talented individuals worldwide. 26 | 27 | ## Here are the winners of **10weeksofclouOps** challenge who recived $100 AWS Credits each: 28 | 29 | ### 🏅 Winners List 30 | 31 | | Name | LinkedIn Profile 32 | |----------------------|--------------------------------------------------| 33 | | **Sridhar Modalavalasa** | [LinkedIn](https://www.linkedin.com/in/sridhar-modalavalasa-12b492173/) 34 | | **Harshal Jethwa** | [LinkedIn](https://www.linkedin.com/in/harshaljethwa/) 35 | | **Seun Ogunsemowo** | [LinkedIn](https://www.linkedin.com/in/seun-ogunsemowo2077/) 36 | | **Gopal Gupta** | [LinkedIn](https://www.linkedin.com/in/gopalgupta009/) 37 | | **Ankit Jodhani** | [LinkedIn](https://www.linkedin.com/in/ankit-jodhani/) 38 | | **Devarshi Shimpi** | [LinkedIn](https://www.linkedin.com/in/devarshi-shimpi) 39 | | **Aman Pathak** | [LinkedIn](https://www.linkedin.com/in/aman-devops/) 40 | | **Ishan Sharma** | [LinkedIn](https://www.linkedin.com/in/ishuar/) 41 | | **Joel Oduyemi** | [LinkedIn](https://www.linkedin.com/in/joel-oduyemi/) 42 | | **Shreyash Bhise** | [LinkedIn](https://www.linkedin.com/in/shreyash-bhise-909719239/) 43 | 44 | ## 🏆 What's Next? 45 | - Stay tuned for the next **Challenge**! 46 | 47 | 🚀 Keep learning, keep building, and stay awesome! 48 | 49 | --- 50 | 51 | *If you participated but didn't make the list, don't be discouraged! The CloudOps journey is ongoing, and every step you take brings you closer to mastery.* 🌟 52 | 53 | ### Contributions are welcome: 54 | You can raise the pull request to contribute to the course material; do not forget to star the repository. 55 | 56 | 57 | ## Frequently asked questions 👇 58 | 59 | 1) **What is the #10WeeksOfCloudOps challenge?** 60 | The #10WeeksOfCloudOps challenge involves building 10 cloud and DevOps projects over 10 weeks, with one project per week. 61 | 62 | 2) **What are the benefits of taking this challenge?** 63 | This challenge is about learning together as a community, gaining hands-on experience, receiving feedback from IT professionals, and growing together. 64 | 65 | 3) **How do I submit my task?** 66 | To submit your task, could you create a blog post on your preferred blogging platform and share it on LinkedIn or Twitter? Mention me (Piyush Sachdeva) and use the hashtag #10WeeksOfCloudOps. I will be tracking submissions using this hashtag. 67 | 68 | 4) **In which cloud are we focusing on ☁?** 69 | You can complete the challenge using any of the three major cloud platforms: AWS, Azure, or GCP. 70 | 71 | 5) **Which CICD tools are we focusing on?** 72 | You can use any Continuous Integration and Continuous Deployment (CICD) tool. 73 | 74 | 6) **What should I do if I get stuck?** 75 | If you encounter any issues or have questions, post them in the 📕-help channel. Someone from the community will assist you. Don't hesitate to ask for help! 76 | 77 | 7) **Can I join the challenge late?** 78 | Absolutely! Feel free to join at any time. Remember, this is a learning opportunity, not a competition. We will review late submissions at the end of the 10th week, but priority will be given to those who submit on time. 79 | 80 | 8) **Will there be prizes for the winners?** 81 | Yes, there will be prizes at the end of the 10th week. While we don't have any sponsors yet, @Agile Guru and I (Piyush Sachdeva) will sponsor the prizes. Please contact me if you'd like to contribute to this cause and support the prize fund. 🎁 82 | -------------------------------------------------------------------------------- /Week1/README.md: -------------------------------------------------------------------------------- 1 | # Week 1 Challenge: Static website hosting on AWS, Azure, or GCP and implement CICD 🚀 2 | 3 | This week's challenge will explore critical concepts and services related to cloud storage, content delivery, and DNS management 🔍 We will also implement CICD for automated changes to your website. 4 | 5 | ## Technologies Covered 📚 ( Use either of the below options) 6 | - **AWS**: Amazon S3, CloudFront, and Route 53 7 | - **Azure**: Azure Storage, Azure CDN, and DNS Management 8 | - **Google Cloud**: Cloud Storage, Load Balancing, and Content Delivery Networks (CDN) 9 | 10 | ## Get Started 🚀 11 | - Review the challenge requirements. ✔️ 12 | - Dive into AWS, Azure, or GCP documentation to familiarize yourself with the services mentioned. 📖 13 | - Start building your architecture diagram. 🏗️ 14 | - Document your progress in a blog or GitHub Readme. 📝 15 | 16 | ## Deliverables 📦 17 | 18 | In this challenge, you are expected to produce the following deliverables: 19 | 20 | ### 1. Architecture Diagram 🏗️ 21 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 22 | 23 | ### 2. Blog or GitHub Readme 📄 24 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post or a GitHub Readme file. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 25 | 26 | Here's a suggested outline for your documentation: 27 | 28 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 29 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Could you include code examples and configurations where applicable? 💡 30 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 31 | - **Key Takeaways**: Share what you learned from this week's challenge. 🧐 32 | - **Resources**: List any helpful resources or references you used. 📚 33 | 34 | ### 3. Screen Recording or Live Website 📽️ 35 | Optionally, you can just create a screen recording or deploy a live website showing your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 36 | 37 | 38 | ### Reference resources: ✅ 39 | 💡 If you are an absolute beginner to the cloud and CICD, get yourself. Familiarize with the concepts, you can refer to the below documentation and study material: 40 | 41 | **For AWS** 42 | https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html 43 | https://docs.aws.amazon.com/AmazonS3/latest/userguide/website-hosting-cloudfront-walkthrough.html 44 | 45 | **For Azure** 46 | 47 | https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website-how-to?tabs=azure-portal 48 | https://learn.microsoft.com/en-us/azure/storage/blobs/storage-custom-domain-name?tabs=azure-portal 49 | 50 | **For GCP** 51 | https://cloud.google.com/storage/docs/hosting-static-website 52 | https://www.cloudskillsboost.google/focuses/1251?parent=catalog 53 | 54 | We encourage you to ask questions, seek help from the community by posting your queries/question in the help channel after joining our Discord community 55 | 56 | ## 🔗 Join our community 👇 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | Have fun and learn during this Week 1 Challenge! 🤗 68 | 69 | Good luck, and happy cloud computing! 🌟 70 | -------------------------------------------------------------------------------- /Week1/Solution/README.md: -------------------------------------------------------------------------------- 1 | ## If you are a visual learner, feel free to check out the video solution 2 | [![Static website hosting and CICD](https://img.youtube.com/vi/UVvc_RtOoWg/sddefault.jpg)](https://youtu.be/UVvc_RtOoWg) 3 | 4 | ## Architecture Diagram for AWS by Ankit 5 | ![image](https://github.com/piyushsachdeva/10weeksofcloudops/assets/40286378/1c645259-3075-4b4a-9d63-eb5bf9065f65) 6 | 7 | [Image Source](https://ankitjodhani.hashnode.dev/host-your-static-website-on-amazon-s3-services-cicd-pipeline-with-the-domain-name-and-ssl-certificate-10weeksofcloudops) 8 | 9 | ## Blog containing step-by-step instructions for AWS 10 | [Blog by Ankit](https://ankitjodhani.hashnode.dev/host-your-static-website-on-amazon-s3-services-cicd-pipeline-with-the-domain-name-and-ssl-certificate-10weeksofcloudops) 11 | 12 | ## Architecture Diagram for Azure by Nishant 13 | ![image](https://github.com/piyushsachdeva/10weeksofcloudops/assets/40286378/7b646161-7a81-4113-bbfe-2fe547f463dd) 14 | 15 | [Image Source](https://nishantsingh.hashnode.dev/10weeksofcloudops-firstweek) 16 | 17 | ## Blog By Nishant containing the step-by-step instructions for Azure 18 | [Blog by Nishant](https://nishantsingh.hashnode.dev/10weeksofcloudops-firstweek) 19 | 20 | 21 | -------------------------------------------------------------------------------- /Week1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | My Static Site 5 | 6 | 7 | 8 | 9 | 10 |
11 |

#10WeeksOfCloudOps Week1

12 | 19 |
20 | 21 |
22 |

#10WeeksOfCloudOps! week1

23 |

This is a simple static site built for the #10weeksofcloudops challenge.

24 |
25 | 26 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Week1/style.css: -------------------------------------------------------------------------------- 1 | /* Reset the default browser styles */ 2 | * { 3 | margin: 0; 4 | padding: 0; 5 | box-sizing: border-box; 6 | } 7 | 8 | /* Set a default font family */ 9 | body { 10 | font-family: Arial, sans-serif; 11 | } 12 | 13 | /* Style the header */ 14 | header { 15 | background-color: #333; 16 | color: #fff; 17 | padding: 20px; 18 | } 19 | 20 | header h1 { 21 | margin: 0; 22 | } 23 | 24 | nav ul { 25 | list-style: none; 26 | margin: 0; 27 | padding: 0; 28 | display: flex; 29 | } 30 | 31 | nav li { 32 | margin-right: 20px; 33 | } 34 | 35 | nav li:last-child { 36 | margin-right: 0; 37 | } 38 | 39 | nav a { 40 | color: #fff; 41 | text-decoration: none; 42 | } 43 | 44 | nav a:hover { 45 | text-decoration: underline; 46 | } 47 | 48 | /* Style the main content */ 49 | main { 50 | max-width: 800px; 51 | margin: 0 auto; 52 | padding: 20px; 53 | } 54 | 55 | /* Style the footer */ 56 | footer { 57 | background-color: #333; 58 | color: #fff; 59 | padding: 20px; 60 | text-align: center; 61 | } 62 | -------------------------------------------------------------------------------- /Week2/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Week2 Challenge: Design a 3-Tier Architecture 🚀 3 | 4 | For this task, your objective is to design a 3-tier architecture in a cloud platform, such as AWS, Azure, or GCP, with a focus on the following key considerations: 5 | 6 | 1. **High Availability**: Ensure your architecture is highly available, capable of withstanding failures, and can provide uninterrupted service. 7 | 8 | 2. **Scalability**: Design your architecture to be highly scalable, allowing for easy and efficient resource scaling as your application's demands increase. 9 | 10 | 3. **Fault Tolerance**: Implement fault-tolerant mechanisms to minimize downtime and service interruptions during failures. 11 | 12 | 4. **Custom VPC/VNET**: Consider using a custom Virtual Private Cloud (VPC) for AWS or GCP, a Virtual Network (VNET) for Azure, or a similar network customization instead of relying on the default configurations. 13 | 14 | 5. **Security**: Prioritize security by adhering to best practices for Identity and Access Management (IAM) and implementing robust security measures. 15 | 16 | Your design should address these considerations, resulting in a well-structured, efficient, and secure 3-tier architecture. 17 | Feel free to leverage the capabilities of your chosen cloud platform to implement this architecture effectively. 18 | 19 | 20 | ## Deliverables 📦 21 | 22 | In this challenge, you are expected to produce the following deliverables: 23 | 24 | ### 1. Architecture Diagram 🏗️ 25 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 26 | 27 | ### 2. Blog or GitHub Readme 📄 28 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post or a GitHub Readme file. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 29 | 30 | **Here's a suggested outline for your documentation:** 31 | 32 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 33 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Include code examples and configurations where applicable. 💡 34 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 35 | - **Key Takeaways**: Share your key learnings from this week's challenge. 🧐 36 | - **Resources**: List any helpful resources or references you used. 📚 37 | 38 | ### 3. Screen Recording or Live Website 📽️ 39 | Optionally, you can create a screen recording or deploy a live website demonstrating your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 40 | 41 | 42 | ### Reference resources: ✅ 43 | 💡 To ensure you're ready to take on this challenge, it's important to have a solid understanding of networking concepts. Check out the following resources for guidance: 44 | 45 | 👉 AWS: [Click Here](https://youtu.be/yUhzvVrwkV8?si=CZs9EllFW8Lp3G17) 46 | 47 | 👉 Azure: [Click Here](https://youtu.be/fzaWF9OzkRs) 48 | 49 | 👉 GCP: [Click Here](https://youtu.be/XLaFU1t9pM8) 50 | 51 | 🚀IP address calculation/CIDR and Subnet Masks: [Click here](https://youtu.be/G1azmL5-eQI) 52 | 53 | 📌Once you've got a good handle on networking, take a look at this sample 3-tier architecture using AWS services: [Click here](https://docs.aws.amazon.com/whitepapers/latest/web-application-hosting-best-practices/an-aws-cloud-architecture-for-web-hosting.html). 54 | 55 | We encourage you to ask questions, seek help from the community by posting your queries/question in the help channel after joining our Discord community 56 | 57 | ## 🔗 Join our community 👇 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | Have fun and learn during this Week 2 Challenge! 🤗 68 | 69 | Good luck, and happy cloud computing! 🌟 70 | -------------------------------------------------------------------------------- /Week2/Solution/README.md: -------------------------------------------------------------------------------- 1 | # Solution to design a 3-tier architecture in a cloud platform, such as AWS, Azure, or GCP 🚀 2 | 3 | ## If you are a video person, feel free to check out the below video for end to end solution:👇 4 | [![3-tier Architecture](https://img.youtube.com/vi/amiIcyt-J2A/sddefault.jpg)](https://youtu.be/amiIcyt-J2A) 5 | 6 | ## Architecture Diagram for AWS 7 | ![Architecture](https://github.com/aws-samples/aws-three-tier-web-architecture-workshop/blob/main/application-code/web-tier/src/assets/3TierArch.png) 8 | 9 | [Image Source](https://github.com/aws-samples/aws-three-tier-web-architecture-workshop/blob/main/application-code/web-tier/src/assets/3TierArch.png) 10 | 11 | ## Architecture Diagram for Azure 12 | ![Architecture](https://github.com/thakurnishu/10_Weeks_Of_CloudOps/blob/week2/application-code/web-tier/src/assets/3TierArch.png) 13 | 14 | [Image Source](https://github.com/thakurnishu/10_Weeks_Of_CloudOps/tree/week2) 15 | 16 | ## Detailed workshop for AWS with step-by-step instructions: 17 | [Workshop link](https://catalog.us-east-1.prod.workshops.aws/workshops/85cd2bb2-7f79-4e96-bdee-8078e469752a/en-US) 18 | 19 | ## Detailed blog for Azure for step-by-step instructions 20 | [Blog by Nishant Singh](https://nishantsingh.hashnode.dev/10weeksofcloudops-secondweek) 21 | -------------------------------------------------------------------------------- /Week3/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Week 3 Challenge: Implement a 2-tier architecture in AWS, Azure, or GCP using Terraform 🚀 3 | 4 | ## Objective 5 | This project task aims to leverage infrastructure as code (IaC) best practices to create a reusable and shareable infrastructure setup. Our focus is on promoting modularity, flexibility, and maintainability. 6 | 7 | ## Key Guidelines 8 | 9 | ### 1. Leverage Custom Modules 10 | Build custom modules to break your infrastructure code into reusable and shareable components. This approach not only organizes your code but also allows other team members to easily incorporate and adapt the components for their specific needs. 11 | 12 | ### 2. Use Variables and Data Sources 13 | Please implement variables and data sources in your IaC code to enhance flexibility and maintainability. Variables make it easier to adapt and modify configuration settings, while data sources allow you to retrieve information from external sources to inform your infrastructure. 14 | 15 | ### 3. Remote State File 16 | You can store your state file remotely. This practice enhances collaboration, security, and version control of your IaC code. Consider using your infrastructure's remote state storage service, such as Terraform Cloud or AWS S3. 17 | 18 | ### 4. Security First 19 | Keep security in mind throughout your IaC development. Ensure that your infrastructure is configured with appropriate security measures and adhere to best practices for secure and compliant deployments. 20 | 21 | By following these guidelines, you'll create an infrastructure setup that is efficient, highly adaptable, and secure. 22 | 23 | Feel free to document your IaC code and any specific implementation details in your GitHub README to make it easier for others to understand and use your work. 24 | 25 | 26 | ## Deliverables 📦 27 | 28 | In this challenge, you are expected to produce the following deliverables: 29 | 30 | ### 1. Architecture Diagram 🏗️ 31 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 32 | 33 | ### 2. Blog and GitHub Readme 📄 34 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post and reference your public GitHub repo. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 35 | 36 | **Here's a suggested outline for your documentation:** 37 | 38 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 39 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Include code examples and configurations where applicable. 💡 40 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 41 | - **Key Takeaways**: Share your key learnings from this week's challenge. 🧐 42 | - **Resources**: List any helpful resources or references you used. 📚 43 | 44 | ### 3. Screen Recording or Live Website 📽️ 45 | Optionally, you can create a screen recording or deploy a live website demonstrating your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 46 | 47 | 48 | ### Reference resources: ✅ 49 | 💡 If you have completed the week2 challenge then you are already familiar with the networking concepts, feel free to use the below resources to get started with Terraform 50 | 51 | - [Terraform Overview](https://youtu.be/l5k1ai_GBDE) 52 | - [AWS Terraform](https://youtu.be/ZP_vAbjfFMs) 53 | - [Terraform Best Practices](https://youtu.be/gxPykhPxRW0) 54 | - [Terraform Modules](https://youtu.be/W92fsWzVRsg) 55 | - [Azure Terraform](https://youtu.be/I-MbnfNcikk) 56 | 57 | 58 | We encourage you to ask questions, seek help from the community by posting your queries/question in the help channel after joining our Discord community 59 | 60 | ## 🔗 Join our community 👇 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | Have fun and learn during this Week 2 Challenge! 🤗 71 | 72 | Good luck, and happy cloud computing! 🌟 73 | -------------------------------------------------------------------------------- /Week3/Solution/README.md: -------------------------------------------------------------------------------- 1 | ## If you are a visual learner, feel free to check out the video solution 2 | [![2-tier Architecture using terraform](https://img.youtube.com/vi/s8q5B6DLH7s/sddefault.jpg)](https://youtu.be/s8q5B6DLH7s) 3 | 4 | ## Repository containing the code for AWS Terraform 👉[Click here](https://github.com/piyushsachdeva/10WeeksOfCloudOps_Task3/blob/main/README.md)👈 5 | 6 | ## Architecture Diagram for AWS by Mahesh Upreti 7 | ![Diagram by Mahesh](https://github.com/mahupreti/Keeping-it-DRY-with-reusable-Terraform-modules-in-the-AWS-cloud/blob/main/2tier-web-application-architecture.png) 8 | 9 | ## Blog containing step-by-step instructions for AWS 10 | [Blog by Mahesh Upreti](https://mupreti.hashnode.dev/keeping-it-dry-with-reusable-terraform-modules-in-the-aws-cloud) 11 | 12 | ## Architecture Diagram for Azure by Joel 13 | ![Diagram by Joel](https://github.com/Joelayo/Week-3_Azure_CloudOps/blob/main/architecture.png) 14 | 15 | ## Blog containing the step-by-step instructions for Azure 16 | [Blog by Joel](https://github.com/Joelayo/Week-3_Azure_CloudOps/) 17 | 18 | 19 | -------------------------------------------------------------------------------- /Week4/README.md: -------------------------------------------------------------------------------- 1 | # Week 4 Challenge: Docker, Kubernetes and GitOps 🚀 2 | 3 | ## Objective 4 | In this challenge, your task is to demonstrate your proficiency in containerization, orchestration, continuous integration, and continuous deployment (CI/CD) in a Kubernetes environment. 5 | 6 | ## Key Guidelines 7 | 8 | ### 1. Dockerize a Web Application: 9 | Containerize a web application using Docker. This step should result in a Docker image that encapsulates your web application and its dependencies. 10 | 11 | ### 2. Provision a Kubernetes Cluster: 12 | Utilize Terraform to provision a Kubernetes cluster. You have the choice of deploying on AWS Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), Google Kubernetes Engine (GKE), or locally on Minikube. Select the platform that best suits your needs. 13 | 14 | ### 3. GitOps on Kubernetes using ArgoCD: 15 | Implement a GitOps pipeline using ArgoCD for deploying your Dockerized web application to the Kubernetes cluster. Automate the deployment process and ensure your application is automatically updated by ArgoCD as soon as there is a change in your GitHub repo. 16 | 17 | ### 4. Security and Best Practices: 18 | Throughout this challenge, prioritize security and adhere to best practices for containerization, Kubernetes configuration, and CI/CD pipelines. Your solution should demonstrate a commitment to robust, secure, and scalable infrastructure. 19 | 20 | ## Deliverables 📦 21 | 22 | In this challenge, you are expected to produce the following deliverables: 23 | 24 | ### 1. Architecture Diagram 🏗️ 25 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 26 | 27 | ### 2. Blog and GitHub Readme 📄 28 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post and reference your public GitHub repo. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 29 | 30 | **Here's a suggested outline for your documentation:** 31 | 32 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 33 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Include code examples and configurations where applicable. 💡 34 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 35 | - **Key Takeaways**: Share your key learnings from this week's challenge. 🧐 36 | - **Resources**: List any helpful resources or references you used. 📚 37 | 38 | ### 3. Screen Recording or Live Website 📽️ 39 | Optionally, you can create a screen recording or deploy a live website demonstrating your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 40 | 41 | ## Reference resources: ✅ 42 | 43 | 1) **Docker** 44 | - [Docker Tutorial for Beginners by Tech World with Nana](https://youtu.be/pg19Z8LL06w) 45 | - [Docker Crash Course by Fireship](https://youtu.be/gAkwW2tuIqE) 46 | - [Docker for Beginners by Programming with Mosh](https://youtu.be/pTFZFxd4hOI) 47 | 48 | 2) **Docker and Kubernetes in Hindi** 49 | - [Setup Kubernetes Cluster and Deploy Sample Apps in Hindi by @TrainWithShubham](https://youtu.be/LPaWASGjwbs) 50 | - [Deploy Reddit Clone to Kubernetes by Shubham](https://youtu.be/9tl0A_rwgu4) 51 | - [Kubernetes Overview in Hindi by Shubham](https://youtu.be/FqfoDUhzyDo) 52 | - [Dockerize an App and Deploy to Kubernetes (By Abhishek and Shubham)](https://youtu.be/6Kax3ZvMOQU) 53 | - [Dockerize an App in Hindi](https://youtu.be/Q7kyVumu1VA) 54 | - [Docker Crash Course by Code with Harry](https://youtu.be/WNUCAPKa44Y) 55 | 56 | 3) **Deploy Kubernetes with Terraform** 57 | - [Provision AKS Using Terraform on Azure by Tech Tutorials with Piyush](https://youtu.be/I-MbnfNcikk) 58 | - [Provision EKS Using Terraform by Anton Putra](https://youtu.be/MZyrxzb7yAU) 59 | - [Create GKE Using Terraform](https://youtu.be/X_IK0GBbBTw) 60 | 61 | 4) **Amazing Video Playlist by Abhishek Veeramalla for CI/CD to Kubernetes** 62 | - [What is GitOps](https://youtu.be/eqiqQN1CCmM) 63 | - [ArgoCD Architecture](https://youtu.be/lR120HCErLI) 64 | - [ArgoCD Example Apps](https://github.com/argoproj/argocd-example-apps) 65 | - [How to Install, Configure, and Use ArgoCD](https://youtu.be/ZgJQG475oME) 66 | 67 | Sorry for the long list, but you can choose resources based on your preference. 68 | 69 | 70 | We encourage you to ask questions, seek help from the community by posting your queries/question in the help channel after joining our Discord community 71 | 72 | ## 🔗 Join our community 👇 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | Have fun and learn during this Week 4 Challenge! 🤗 83 | 84 | Good luck, and happy cloud computing! 🌟 85 | -------------------------------------------------------------------------------- /Week4/Solution/README.md: -------------------------------------------------------------------------------- 1 | ## If you are a visual learner, feel free to check out the video solution 2 | [![GitOps](https://img.youtube.com/vi/LgBnbmfsIdA/sddefault.jpg)](https://youtu.be/LgBnbmfsIdA) 3 | 4 | ## Architecture diagram for AWS 5 | 6 | ![image](https://github.com/piyushsachdeva/10weeksofcloudops/assets/40286378/d1617a98-384b-45c3-95fd-b84c42d1dfcb) 7 | 8 | [Image Source](https://github.com/chauhan-himani/kube_manifest) 9 | 10 | ## Step-by-step blog on AWS by Himani Chauhan 11 | [Blog by Himani](https://medium.com/@chauhanhimani512/deploying-dockerized-app-on-aws-eks-cluster-using-argocd-and-gitops-methodology-with-circleci-71983375e550) 12 | 13 | 14 | ## Architecture diagram for Azure 15 | 16 | (![image](https://github.com/user-attachments/assets/20b66cfe-8ded-4290-b11d-286c0e2357d7) 17 | 18 | [Image source](https://joeloduyemi.hashnode.dev/utilizing-gitops-approach-and-azure-pipelines-to-deploy-a-dockerized-application-onto-an-aks-cluster-via-argocd) 19 | 20 | ## Step-by-step blog on Azure by Joel 21 | [Blog by Joel](https://joeloduyemi.hashnode.dev/utilizing-gitops-approach-and-azure-pipelines-to-deploy-a-dockerized-application-onto-an-aks-cluster-via-argocd) 22 | -------------------------------------------------------------------------------- /Week5/README.md: -------------------------------------------------------------------------------- 1 | # Week5 Challenge: Implement Continuous Monitoring, Alerting, and Logging on Kubernetes 🚀 2 | 3 | ## Objective 4 | 5 | In this project, you'll work with popular open-source monitoring and alerting tools such as Prometheus, Grafana, and the ELK (Elasticsearch, Logstash, Kibana) stack. Your goal is to set up an end-to-end monitoring and alerting system for your infrastructure. 6 | 7 | ## Key Guidelines 8 | 9 | ### Leverage Open-Source Tools 10 | 11 | Utilize Prometheus for metrics collection, Grafana for visualization, and the ELK stack for log management and analysis. 12 | 13 | ### Custom Monitoring Dashboard 14 | 15 | Create a custom monitoring dashboard that provides insights into key system performance metrics. Include visualizations for CPU usage, memory consumption, disk space, and error code occurrences. 16 | 17 | ### Alerting Configuration 18 | 19 | Implement at least two metrics-based alerts to notify you of critical system performance issues proactively. Optionally, set up two log-based alerts to detect and respond to specific events in your logs. 20 | 21 | ### Log Streaming to ELK 22 | 23 | Stream your logs to the ELK stack (Elasticsearch, Logstash, and Kibana) to enable efficient log analysis and visualization. Ensure that log data is readily available for troubleshooting and auditing. 24 | 25 | 26 | ## Deliverables 📦 27 | 28 | In this challenge, you are expected to produce the following deliverables: 29 | 30 | ### 1. Architecture Diagram 🏗️ 31 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 32 | 33 | ### 2. Blog and GitHub Readme 📄 34 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post and reference your public GitHub repo. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 35 | 36 | **Here's a suggested outline for your documentation:** 37 | 38 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 39 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Include code examples and configurations where applicable. 💡 40 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 41 | - **Key Takeaways**: Share your key learnings from this week's challenge. 🧐 42 | - **Resources**: List any helpful resources or references you used. 📚 43 | 44 | ### 3. Screen Recording or Live Website 📽️ 45 | Optionally, you can create a screen recording or deploy a live website demonstrating your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 46 | 47 | 48 | ### Reference resources: ✅ 49 | - [Prometheus Architecture](https://youtu.be/h4Sl21AKiDg) 50 | - [Grafana Overview in 5 Minutes](https://youtu.be/lILY8eSspEo) 51 | - [A 2-Minute Animated Introduction to Monitoring and Alerting](https://youtu.be/P3nEJNtYYYM) 52 | - [Monitoring and Alerting Setup on Docker Containers](https://youtu.be/xM5Ys0rbtVQ) 53 | - [Setup Kubernetes Monitoring Using Prometheus and Grafana by Abhishek Veeramalla](https://youtu.be/EeiYpnBHnhY) 54 | - [Monitoring Setup by Nana](https://youtu.be/QoDqxm7ybLc) 55 | - [FluentD Log Collector](https://youtu.be/5ofsNyHZwWE) 56 | 57 | 58 | We encourage you to ask questions seek help from the community by posting your queries/questions in the help channel after joining our Discord community. 59 | 60 | ## 🔗 Join our community 👇 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /Week5/Solution/README.md: -------------------------------------------------------------------------------- 1 | # Solution to set Continuous monitoring, logging, and alerting on Kubernetes cluster using opensource tools 🚀 2 | 3 | ## If you are a video person, feel free to check out the below video for end to end solution:👇 4 | [![Monitoring and Alerting](https://img.youtube.com/vi/gBdyIv9d_O8/sddefault.jpg)](https://youtu.be/gBdyIv9d_O8) 5 | 6 | ## Below are all the commands used in the video 👇 7 | 8 | ## Steps to be performed: 9 | * Setup a Kubernetes cluster 10 | * Helm installation 11 | * Deploy Opensource Prometheus and AlertManager using Helm 12 | * Deploy Grafana 13 | * Deploy a sample application to the cluster 14 | * Setup alerts using AlertManager and Slack 15 | * Setup Grafana dashboard 16 | * EFK stack setup (Work-in-progress) 17 | * Logging Setup (Work-in-progress) 18 | 19 | ## Create a GKE cluster using cloud 20 | **Note: Please do not create the autopilot cluster as it will have some restrictions, you can use the standard GKE cluster** 21 | ```bash 22 | gcloud container clusters create-auto thecloudopscommunity \ 23 | --release-channel=stable \ 24 | --region=us-east1 25 | ``` 26 | 27 | 28 | ## Helm installation 29 | 30 | ```bash 31 | curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 32 | chmod 700 get_helm.sh 33 | ./get_helm.sh 34 | ``` 35 | 36 | ## Clone the application repo 37 | 38 | ``` 39 | git clone https://github.com/GoogleCloudPlatform/bank-of-anthos.git 40 | cd bank-of-anthos/ 41 | ``` 42 | 43 | ## Deploy Prometheus, AlertManager and Grafana 44 | 45 | ```bash 46 | helm repo add bitnami https://charts.bitnami.com/bitnami 47 | helm install tutorial bitnami/kube-prometheus \ 48 | --version 8.2.2 \ 49 | --values extras/prometheus/oss/values.yaml \ 50 | --wait 51 | 52 | helm repo add grafana https://grafana.github.io/helm-charts 53 | helm repo update 54 | helm install my-release grafana/grafana 55 | 56 | ``` 57 | 58 | ## Deploy sample application Bank of Anthos 59 | ```bash 60 | kubectl apply -f extras/jwt/jwt-secret.yaml 61 | kubectl apply -f kubernetes-manifests 62 | ``` 63 | 64 | ## Configure Slack 65 | 66 | ## Configure Alert manager 67 | ``` 68 | kubectl create secret generic alertmanager-slack-webhook --from-literal webhookURL=SLACK_WEBHOOK_URL 69 | kubectl apply -f extras/prometheus/oss/alertmanagerconfig.yaml 70 | ``` 71 | 72 | ### Configure Prometheus 73 | ``` 74 | kubectl apply -f extras/prometheus/oss/probes.yaml 75 | kubectl apply -f extras/prometheus/oss/rules.yaml 76 | ``` 77 | 78 | ## Step by Step Blog by Mallikarjun 79 | [Blog by Mallikarjun](https://devo.hashnode.dev/comprehensive-aws-eks-cluster-monitoring-with-prometheus-grafanaand-efk-stack-10weeksofcloudops) 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /Week6/README.md: -------------------------------------------------------------------------------- 1 | # Week 6 Challenge: Configuration as a Code using Ansible and MongoDB 🚀 2 | 3 | ## Objective 4 | 5 | In this project task, you will demonstrate your proficiency with Ansible in setting up and configuring infrastructure as well as deploying a production-ready MongoDB cluster. The task involves creating Ansible playbooks, roles, and integrating them into a Continuous Integration/Continuous Deployment (CICD) pipeline. Additionally, a focus on security and best practices is essential. 6 | 7 | ## Key Guidelines 8 | 9 | ### Nginx and Application Deployment with Ansible Playbooks 10 | 11 | Write Ansible playbooks to install Nginx and host an application on multiple servers. The playbooks should automate the deployment of your chosen application, ensuring consistency and reliability. 12 | 13 | ### Provision a Production-Ready MongoDB Cluster with Ansible Roles 14 | 15 | Create Ansible roles to provision a production-ready MongoDB cluster. This involves setting up MongoDB instances, configuring replication, and implementing proper security measures. 16 | 17 | ### CICD Pipeline Integration 18 | 19 | Integrate your Ansible playbooks and roles into a CICD pipeline. This integration should automate the execution of playbooks, ensuring that your infrastructure and MongoDB cluster remain up-to-date and secure. 20 | 21 | ### Security and Best Practices 22 | 23 | Throughout this project, prioritize security and adhere to best practices for infrastructure, application deployment, and MongoDB configuration. Ensure that your system is well-protected and follows industry standards. 24 | 25 | ## Deliverables 📦 26 | 27 | In this challenge, you are expected to produce the following deliverables: 28 | 29 | ### 1. Architecture Diagram 🏗️ 30 | A comprehensive architecture diagram illustrates how the various cloud services and components fit together. You can use tools like draw.io, Lucidchart, or any other diagramming tool of your choice to create the diagram. 📊 31 | 32 | ### 2. Blog and GitHub Readme 📄 33 | You should document your progress and steps taken during the challenge. This documentation could be in the form of a blog post and reference your public GitHub repo. Include code snippets, configuration files, and explanations for each step. Share your insights and learning experiences. 📝 34 | 35 | **Here's a suggested outline for your documentation:** 36 | 37 | - **Introduction**: Briefly introduce the challenge and its objectives. 📋 38 | - **Step-by-Step Guide**: Provide a detailed completed task walkthrough. Include code examples and configurations where applicable. 💡 39 | - **Challenges Faced**: Discuss any challenges you encountered and how you overcame them. 🤔 40 | - **Key Takeaways**: Share your key learnings from this week's challenge. 🧐 41 | - **Resources**: List any helpful resources or references you used. 📚 42 | 43 | ### 3. Screen Recording or Live Website 📽️ 44 | Optionally, you can create a screen recording or deploy a live website demonstrating your implementation. This adds an interactive element to your documentation and can be valuable to your portfolio. 🎥 45 | 46 | 47 | ### Reference resources: ✅ 48 | 49 | [YouTube video on Ansible by Abhishek Veeramalla](https://youtu.be/Z6T2r3Xhk5k) 50 | [GitHub Repository for sample Ansible playbooks](https://github.com/ansible/ansible-examples) 51 | 52 | We encourage you to ask questions, seek help from the community by posting your queries/question in the help channel after joining our Discord community 53 | 54 | ## 🔗 Join our community 👇 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Have fun and learn during this Week 3 Challenge! 🤗 65 | -------------------------------------------------------------------------------- /Week7/Readme.md: -------------------------------------------------------------------------------- 1 | # Week 7 Challenge: Kubernetes Administration in Depth 🚀 2 | 3 | ## Below are the task details: 4 | 5 | Your organization is evolving, and your CTO wants to streamline the build and deployment process. As a DevOps engineer, you have been tasked to deploy a local docker images registry on Kubernetes to store the docker images in the namespace called “democloudops” and should meet the following requirements: 6 | 7 | **Cluster Provisioning:** 8 | * Provision a Kubernetes regional cluster with at least three worker nodes. 9 | * Ensure that the nodes are distributed across different availability zones. 10 | 11 | **Sample Deployment:** 12 | * The Docker registry should be deployed with three replicas, and each replica should be scheduled on a separate node. 13 | * Pod runs in a container with image `registry:2.8.2` and name as `registry-cloudops` 14 | * The application container should store images under `/var/lib/10weeksofcloudops`. 15 | 16 | **Storage:** 17 | * Configure a Persistent Volume (PV) to store data for the application. 18 | * The PV should request at least 50Gi of storage space. 19 | * Ensure the data stored in the PV survives pod restarts. 20 | 21 | **Container Configuration:** 22 | * The application container should expose itself on port 5000. 23 | * Kubelet should perform health checks on the registry-cloudops and restart the pod if it doesn't respond on TCP port 5000 for 30 seconds. Kubelet should wait for 15 seconds before performing its first health check 24 | * The container should request 1Gi Memory, and the limit should be 2Gi 25 | 26 | **Init Container:** 27 | * Implement an init container within the registry-cloudops deployment to ensure the presence of the data directory required by the Docker registry. 28 | * The init container should use an Alpine-based image and create the data directory "/var/lib/10weeksofcloudops" if it doesn't exist. 29 | 30 | 31 | **Service Exposure:** 32 | * Create a Kubernetes load balancer service to expose the application externally. 33 | * The service should map an external port to port 5000 on the pods. 34 | 35 | **Network Policies:** 36 | * Implement Network Policies to restrict incoming and outgoing network traffic for the Docker registry pods. 37 | * Allow necessary communication while enforcing security practices. 38 | 39 | 40 | **Secrets and ConfigMap:** 41 | * Store sensitive information in Kubernetes Secrets, such as authentication credentials for the Docker registry. 42 | * Utilize a ConfigMap to manage configuration settings for the Docker registry deployment. 43 | 44 | **Backup and Recovery:** 45 | * Define a backup strategy for the data stored in the Persistent Volume. 46 | * Explore options for restoring the registry in case of data loss or pod failures. 47 | 48 | **Perform cluster upgrade to 1 major version** 49 | * After the upgrade, make sure that your cluster is healthy, including the workload 50 | 51 | **Deliverables:** 52 | * Your solution should be well-structured, documented in a blog including the GitHub repo, and optimized for the best Kubernetes architecture, resource utilization, and security practices. 53 | * Please also tag me(piyush-sachdeva) and `#10weeksofcloudops` in the Linkedin/Twitter post so that we can track all the submissions. 54 | 55 | * Please provide a detailed YAML manifest or command set that demonstrates how you would achieve the above requirements. 56 | * Also, include any necessary explanations or considerations related to your implementation. 57 | 58 | Note: Feel free to use any appropriate resources, such as Kubernetes documentation, to assist in your implementation. 59 | 60 | ## 🔗 Join our community 👇 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | Have fun and learn during this Week 7 Challenge! 🤗 71 | -------------------------------------------------------------------------------- /Week8/README.md: -------------------------------------------------------------------------------- 1 | # Week 8 Challenge: Serverless 🚀 2 | 3 | In this challenge, you will use Serverless Functions to build a serverless API. All major cloud providers offer Serverless Functions, a compute service that lets you run code without provisioning or managing servers. You can use these to build many applications, including APIs, web applications, and mobile backends. 4 | 5 | The following are the services: 6 | 7 | - [AWS Lambda](https://aws.amazon.com/lambda/) 8 | - [Azure Functions](https://azure.microsoft.com/en-in/products/functions#:~:text=Azure%20Functions%20is%20an%20event,highest%20level%20of%20hardware%20abstraction.) 9 | - [GCP Cloud Functions](https://cloud.google.com/functions) 10 | 11 | ## Requirements 🙋‍♂️ 12 | 13 | - A cloud provider account (AWS, Azure or GCP) 14 | - Knowledge of Python or another programming language supported by these services. 15 | - IaC Tool like Terraform or Pulumi 16 | - CICD: Continuous Integrations and Continuous Deployment 17 | 18 | ## Challenge Ideas 💡 19 | 20 | Here are some examples of serverless APIs that you can build with AWS Lambda: 21 | 22 | - A simple API for your favorite TV Show (see below for reference) 23 | - An API that fetches data from a database 24 | - An API that processes images or videos (see below an example of QR Code Generator) 25 | - An API that triggers other AWS services, such as Amazon Simple Notification Service (SNS) or Amazon Simple Email Service (SES) 26 | 27 | ## Steps 👇 28 | 29 | 1. Create a Serverless function. You can do this using the cloud management console or the cloud provider CLI. 30 | 2. Write the code for your function. Your function should handle incoming HTTP requests and return a response. 31 | 3. Deploy your function to the cloud. 32 | 4. Create an API Gateway resource or HTTP trigger and configure it to trigger your Serverless function. 33 | 5. Test your API by sending HTTP requests to the API Gateway resource. 34 | 6. Write IaC for your Serverless Function so that you can use code to deploy it. 35 | You can use any one of the following: Terraform or Pulumi. 36 | 7. Set up a GitHub repository where you will push your serverless function code and IaC code. 37 | 8. Set up a CICD pipeline using GitHub Actions or a tool of your choice to deploy your Function if a push or change is made to the code in the repo. 38 | 39 | ## Examples 🟢 40 | 41 | Here are a few example ideas of what you can build. 42 | 43 | ### Serverless Resume API 44 | 45 | Would you be interested in a beginner-friendly cloud serverless project? I have one for you. 46 | AWS Lambda Resume API Challenge. A project where you can build and deploy a serverless API using AWS Lambda and DynamoDB, integrated with GitHub Actions. The primary goal? Construct an API that can serve resume data in JSON format. 47 | 48 | I have a GitHub repo where you can submit your solutions! 49 | Link to the [GitHub Repo](https://github.com/rishabkumar7/aws-resume-api) 50 | 51 | #### Code walkthrough 52 | 53 | [![Serverless Resume API](https://img.youtube.com/vi/-pKrT7Ix3G0/sddefault.jpg)](https://youtu.be/-pKrT7Ix3G0?si=tZ784UqtJdKpq6kH) 54 | 55 | ### QR Code Generator 56 | 57 | I built an API using AWS Lambda that accepts POST requests with a URL field in the body and generates a QR Code for the provided URL, saves the QR Code in the S3 bucket, and then sends back the QR Code S3 Object with 200 OK response. 58 | 59 | [![QR Code Generator](https://img.youtube.com/vi/j8QZwM3LFDM/sddefault.jpg)](https://youtu.be/j8QZwM3LFDM?si=Ue46RnlmYzaJsGMY) 60 | 61 | #### [Live App](https://url2qr.rishab.cloud) 62 | 63 | ### Peaky Blinders API 64 | 65 | An API for my favorite TV Show, the Peaky Blinders. This was built as FastAPI in Python, but you can convert it into a Serverless Lambda API. It has a different endpoint that you can send GET requests to show data like: 66 | 67 | - Cast 68 | - Seasons 69 | - Episodes 70 | 71 | [![Peaky Blinders API](https://img.youtube.com/vi/LVuxmQfqivA/sddefault.jpg)](https://youtu.be/LVuxmQfqivA?si=qaGv51-10CF8X8cN) 72 | 73 | #### [Live App](https://peaky-blinders.calmsand-ff14fe59.eastus.azurecontainerapps.io/) 74 | 75 | ## Conclusion 76 | 77 | Serverless Functions are a powerful tool for building serverless APIs. Following this challenge's steps, you can learn how to build your serverless API with AWS, Azure, or GCP. 78 | 79 | ## 🔗 Join our community 👇 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | Have fun and learn during this Week 8 Challenge! 🤗 90 | --------------------------------------------------------------------------------