
Introduction to the Author (Abhishek Veeramalla)
I am a passionate content creator with more than 400k subscribers on Youtube. Other than content creation, I am also a software engineer with 11 years of experience working for various MNCs. I am current working as a principal software engineer at Red Hat.
In this lecture you will learn a brief overview of what exactly is this course. Key Highlights of this course will be covered in the next lecture.
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
GitHub Repos
-------------------
Project - iam-veeramalla/ultimate-devops-project-demo
Documentation for revision - iam-veeramalla/ultimate-devops-project-aws
Discover the docker lifecycle for containerizing microservices, including creating a dockerfile, building an image, and running a container with docker build and docker run.
Log in to the EC2 instance via SSH using the PEM file, identify Golang, Java, and Python microservices, build the Go-based product catalog binary with go.mod, and begin Docker containerization.
Containerize a Java add microservice by building locally with the Gradle wrapper, installing dependencies, and producing a bin executable and jar, then export port 999 for testing.
Learn to containerize a Java microservice by building a multi-stage Docker file, manage Gradle dependencies, include a proto file, and optimize the final image.
Containerize a python-based recommendation service by creating a dockerfile, installing dependencies from requirements.txt, and running recommendation_server.py.
Discover how docker init writes dockerfiles for rust and other languages, creates a multi-stage image, and guides you through port choices, builds, and desktop versus ec2 usage.
Push local container images to centralized registries such as Docker Hub, docker.io, or AWS ECR by authenticating with docker login and using docker push to create repositories with tags.
Updated the docker compose file in the github repo. Please run "git pull" if you have already pulled the repo. Also, adding the docker-compose.yaml file to the resources.
Explore how to start with Kubernetes, compare local vs managed clusters, and deploy a managed cloud Kubernetes cluster with Terraform, including virtual private cloud setup, remote backend, and state locking.
github repo name for source code - iam-veeramalla/ultimate-devops-project-demo
github repo name for documentation - iam-veeramalla/ultimate-devops-project-aws
VSCode Plugins
- Terraform
- YAML
- GitHub Copilot
Learn the Terraform lifecycle across init, plan, and apply, including provider and backend initialization, the plan dry-run, and the apply step that creates resources via cloud provider APIs.
Authenticate Terraform with aws by creating iam access keys and configuring the aws cli with aws configure. Terraform reads dot aws credentials file during plan or apply to create resources.
Discover how the terraform state file acts as the heart of terraform's memory, recording resources created by apply and updating with changes to enable safe deletions.
Learn how Terraform state locking uses DynamoDB with a remote backend like S3 to prevent concurrent applies and avoid race conditions.
Learn to create a Terraform backed AWS state store by provisioning an S3 bucket and a DynamoDB table for remote state locking, with provider setup and resource blocks.
Adopt a modular approach in Terraform by creating and invoking reusable VPC and ECS modules, avoiding duplicate code and promoting shared modules via Git repositories.
Design and implement a reusable vpc module with terraform, including vpc, private and public subnets, internet gateway, nat gateway, route tables, and variables and outputs.
Learn to create a VPC and ECS on AWS using Terraform modules with a remote S3 backend and DynamoDB state locking, including plan and apply.
Learn to connect to one or more Kubernetes clusters from the command line by configuring kubeconfig contexts with kubectl and updating kubeconfig via the aws eks update-kubeconfig command.
Learn why every pod needs a service account in Kubernetes, how default accounts work, and how to grant permissions via role bindings or cluster role bindings for api access.
Discover how the deployment resource handles scaling and healing by managing a replica set, and how the service resource enables stable networking on an eks cluster.
Learn how Kubernetes services solve the service discovery problem by using a proxy with labels and selectors instead of IP addresses, enabling front-end to reach back-end pods via service name.
Explore Kubernetes service manifests, including api version v1 and kind service, configure metadata, labels, selectors, ports, and target ports, and understand FQDNs for internal and external access.
Deploy and validate a multi-service Kubernetes project by applying merged deployment and service YAMLs, creating a service account, and verifying pods and services before planning external access.
Expose the app on Kubernetes by changing the frontend service to a load balancer, wait for the fqdn, and verify the end-to-end shopping flow from cart to order.
examine the drawbacks of load balancer service type, including non-declarative provisioning and higher costs, and compare it to the declarative, cost-efficient, and flexible ingress approach.
Install alb ingress controller on the ECS cluster and configure IAM OIDC provider with a mapped service account and IAM role, using a downloaded policy and helm deployment.
Access the front end proxy via an ingress resource, configure host and path routing to example.com, and verify load balancer provisioning and ingress controller operation.
Learn how to obtain a real custom domain, connect it to your Kubernetes ingress load balancer, and map DNS with providers like GoDaddy to access your project.
Create a public hosted zone in Route 53, configure a www alias record to your load balancer, and update GoDaddy name servers to route ownership to Route 53.
Small Correction* -> Ingress hostname should be "www.abhishekveeramalla.shop" NOT "abhishekveeramalla.shop"
Map your custom domain by creating a Route 53 hosted zone and updating GoDaddy name servers, then verify DNS propagation with what's my DNS, NS lookup, and curl --resolve.
Update the ingress host name to match the Route 53 alias, apply the ingress configuration, and wait for the ingress controller to propagate the changes to access the custom domain.
End to End DevOps Implementation on a E-Commerce project with Resume preparation and Interview Q&A.
The project covers:
1. Introduction to the project
2. A detailed overview of the project
3. AWS Setup and Configuration
4. IAM, IAM role setup for the project
5. EC2 Instance creation
6. Security group and Inbound traffic rule configuration
7. Docker Installation and Configuration
8. Kubectl Installation and Configuration
9. Terraform Installation and Configuration
10. Docker compose setup
11. Run the project locally using Docker compose
12. Containerization of the project
13. Build and Run the Docker cotnainers
14. Terraform lifecycle
15. Configure AWS for Terraform
16. Terraform statefile management
17. Terraform backend configuration
18. Terraform state locking
19. Terraform project for backend implementation
20. Terraform implementation for VPC and EKS
21. Terraform Kubernetes cluster configuration
22. Kubernetes manifest files implementation
23. Kubernetes deployment
24. Kubernetes services
25. Kubernetes Ingress config
26. Kubernetes Ingress controller setup
27. Kubernetes storage class
28. Kubernetes pv and pvc setup
29. Running the project on Kubernetes
30. Verify the project on Kubernetes
31. Setup a custom domain
32. Setup route53 for the custom domain
33. Route 53 configuration for the EKS cluster
34. Ingress setup with the custom domain
35. Gitopsificaiton of the project
36. Argo CD install and config
37. Deploy the project using Argo CD
38. Implement continuous integration for the project
39. GitHub Actions setup for a micro service of the project
40. CI/CD for the project
41. GitHub Action with Argo CD for end to end CI/CD
42. Resume preparation for the project
43. Day to day tasks for the project in the resume
44. Interview questions for the project
45. Key takeaways of the project.