This is capstone project for Udacity's Cloud DevOps Engineer Nanodegree. It demonstrates author's devops skills including AWS, updating existing structure using blue/green deployment, and servicing scalable microservices using Kubernetes. It is an accumulation of many lessons I've learned.
This app converts an image from a format (e g. png, jpg, webp) to another. It's an app to go if a user wants to convert images.
- Please follow the guide provided here
- If this is first time, please create user first by following the instruction below, after clicking this link here
- Please download or write down access key for the use in step 5
- Please follow the instruction below, after clicking this link here
- a. Please sign up / sign in to Docker Hub
- Note: Please sign up using random and secure passwords. This will help increase user protection from unexpected circumstances.
-
a. Please sign up / sign in to Github
- Note: Please sign up using random and secure passwords. This will help increase user protection from unexpected circumstances.
-
b. Please fork, or clone and then re-upload this repository to user's github.
-
a. Please sign up or sign in to CircleCI
- Note: Please sign up using random and secure passwords. This will help increase user protection from unexpected circumstances.
-
b. Please link this CircleCI account to signed-in Github account from step 3
- a. Please follow the instruction provided below, after clicking this link here:
- a. Please add space or an extra character to this README.md, and make a commit. This will trigger CircleCI, and start executing a build.
-
Create Github repository with project code.
- All project code is stored in a GitHub repository and a link to the repository has been provided for reviewers.
-
Use image repository to store Docker images
- The project uses a centralized image repository to manage images built in the project. After a clean build, images are pushed to the repository.
-
Execute linting step in code pipeline
- Code is checked against a linter as part of a Continuous Integration step (demonstrated w/ two screenshots)
-
Build a Docker container in a pipeline
- The project takes a Dockerfile and creates a Docker container in the pipeline.
-
The Docker container is deployed to a Kubernetes cluster
- The cluster is deployed with CloudFormation or Ansible. This should be in the source code of the student’s submission.
-
Use Blue/Green Deployment or a Rolling Deployment successfully
-
The project performs the correct steps to do a blue/green or rolling deployment into the environment selected. Submit the following screenshots as evidence of the successful completion of chosen deployment methodology:
- a. Screenshot of the Circle CI or Jenkins pipeline showing all stages passed successfully.
- b. Screenshot of your AWS EC2 page showing the newly created (for blue/green) or modified (for rolling) instances running as the EKS cluster nodes.
- c. Screenshot of the kubectl command output showing that the deployment is successful, pods are running, and the service can be accessed via an external IP or port forwarding.
- d. Screenshot showing that you can access the application after deployment.
-
- The Kompose Authors. (2022). Go from docker compose to kubernetes. https://kompose.io/
- Udacity. (2023). Cloud DevOps Engineer Nanodegree. https://www.udacity.com/course/cloud-dev-ops-nanodegree--nd9991
- Jonatan Heyman, Carl Byström, Joakim Hamrén, Hugo Heyman. (2023). Locust - An open source load testing tool. https://locust.io
- Ashley D. (2021). Bootstrapping Microservices with Docker, Kubernetes and Terraform. Manning Publications Co.
- Ben Dilts, Karl Sun, et. al. (2023). Lucid chart - Where seeing becomes doing. Lucid.https://www.lucidchart.com/pages/landing
- Benjamin Muschko. (2021). Certified Kubernetes Application Developer (CKAD) Study Guide: In-Depth Guidance and Practice 1st Edition. O'Reilly Publications.
- Benjamin Muschko. (2022). Certified Kubernetes Administrator (CKA) Study Guide. O'Reilly Publications.
- Bas Meijer, Lorin, Hochstein, Rene Moser. (2022). Ansible: Up and Running, Third Edition. O'Reilly Publications.
- Ashley Davis. (2021). Bootstrapping Microservices with Docker, Kubernetes and Terraform. Manning Publications.
- Imam Bux. (2020, Aug 4th). minikube ip is not reachable. Stack Overflow. https://stackoverflow.com/questions/60710171/minikube-ip-is-not-reachable#answer-63243909
- Jeff Geerling. (2011). Ansible for DevOps. Leanpub.
- Amazon. (2023). Auto Scaling Template Snippets. AWS. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-autoscaling.html
- Andres. (05.03.2023). Multiple Playbooks in Ansible. dev.to. https://dev.to/andresfmoya/multiple-playbooks-in-ansible-2pdc
- Build Virtual. Deploy a kubernetes cluster using ansible. Build Virtual. https://buildvirtual.net/deploy-a-kubernetes-cluster-using-ansible/
- Troung. AWS S3: Bucket cannot have ACLs set with ObjectOwnership's BucketOwnerEnforced setting. Stack Overflow. https://stackoverflow.com/questions/76097031/aws-s3-bucket-cannot-have-acls-set-with-objectownerships-bucketownerenforced-s#76107203
- Tamás Panyi. Build a Kubernetes Cluster on AWS with CloudFormation from Scratch. Medium. https://medium.com/@panyitamas/build-a-kubernetes-cluster-on-aws-with-cloudformation-from-scratch-d7ecfbed16a2
- Ankit Gangwar. Setup Prometheus and Grafana monitoring on Kubernetes cluster using Helm. Medium. https://medium.com/globant/setup-prometheus-and-grafana-monitoring-on-kubernetes-cluster-using-helm-3484efd85891
- The Kubernetes Authors. Configuring Redis using a ConfigMap. Kubernetes. https://kubernetes.io/docs/tutorials/configuration/configure-redis-using-configmap
- Shahar Azulay. Redis on Kubernetes: A Powerful Solution – With Limits. groundcover. https://www.groundcover.com/blog/redis-cluster-kubernetes
- Ferdinand de Antoni. Redis Cluster on Kubernetes. Medium. https://medium.com/geekculture/redis-cluster-on-kubernetes-c9839f1c14b6
- Dragonfly DB. Error: redis.exceptions.responseerror moved. Dragonfly. https://www.dragonflydb.io/error-solutions/redis-exceptions-responseerror-moved
- Anish. Kubernetes Access Service located in another namespace. 8gwifi. https://8gwifi.org/docs/kube-externalname.jsp
- Kubernetes. Debugging DNS Resolution. kubernetes. https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
- JPG. How to add a custom decorator to a FastAPI route?. https://stackoverflow.com/questions/64497615/how-to-add-a-custom-decorator-to-a-fastapi-route
- Mario. Building a Decorator for a Fastapi Route Simplify and Beautify Your App Routes. https://www.pythonbynight.com/blog/building-decorator-for-fastapi
- Bubu Tripathy. Blue-Green Deployment using Kubernetes. https://medium.com/@bubu.tripathy/blue-green-deployment-using-kubernetes-be994df956b4
- AWS Team. Why can't I connect to my Amazon EKS cluster? . https://repost.aws/knowledge-center/eks-cluster-connection
- Giant Swarm. Using Kubernetes LoadBalancer Services on AWS. Medium. https://medium.com/@GiantSwarm/using-kubernetes-loadbalancer-services-on-aws-5c22f932d0c9
- Meysam. How to Set Up Ingress Controller in AWS EKS. Medium. https://towardsdatascience.com/how-to-set-up-ingress-controller-in-aws-eks-d745d9107307
- Kubernetes. Ingress. Kubernetes. https://kubernetes.io/docs/concepts/services-networking/ingress/
- AWS EKS Workshop. Microservices on Kubernetes. Amazon Web Services. https://www.eksworkshop.com/docs/introduction/getting-started/microservices/
- Peter De Tender. Setting up SSL/TLS for Kubernetes Ingress. snyk. https://snyk.io/blog/setting-up-ssl-tls-for-kubernetes-ingress/
- Michael Pratt. Ingress vs. Load Balancer in Kubernetes. Baeldung. https://www.baeldung.com/ops/kubernetes-ingress-vs-load-balancer
- Yang Yang and Michael Hausenblas. Kubernetes Ingress with AWS ALB Ingress Controller. AWS. https://aws.amazon.com/blogs/opensource/kubernetes-ingress-aws-alb-ingress-controller/
- Kubernetes Team. Ingress-Nginx Controller Installation Guide. Kubernetes. https://kubernetes.github.io/ingress-nginx/deploy/
- Elton Stoneman. (2021). Learn Kubernetes in a Month of Lunches. Manning Publications Co.
- NGINX Team. Configure Rate Limiting. NGINX. https://docs.nginx.com/nginx-service-mesh/tutorials/ratelimit-walkthrough/#:~:text=In%20a%20Kubernetes%20environment%2C%20rate,workloads%20running%20inside%20the%20cluster.
- Mike Petersen. Ultimate Guide to Kubernetes Ingress Controllers. Platform 9. https://platform9.com/blog/ultimate-guide-to-kubernetes-ingress-controllers/
- Harsh Manvar. Kubernetes Ingress Vs Gateway API. https://medium.com/google-cloud/kubernetes-ingress-vs-gateway-api-647ee233693d
- Dawid Kruk. How to create nginx ingress rules for services in 3 different namespaces in azure Kubernetes cluster. https://stackoverflow.com/questions/73918866/how-to-create-nginx-ingress-rules-for-services-in-3-different-namespaces-in-azur#answer-73921798
- Awanish. Building a Kubernetes Application with Amazon EKS. Medium. https://medium.com/edureka/amazon-eks-ac646c23abf8
- AWS Team. Clean Up. AWS. https://archive.eksworkshop.com/beginner/130_exposing-service/cleaning/
- Digital Ocean Team. How to Delete Load Balancers from Kubernetes Clusters. Digital Ocean. https://docs.digitalocean.com/products/kubernetes/how-to/delete-load-balancers
- ElmoVanKielmo. What is the meaning of "gaierror: [Errno -3] Temporary failure in name resolution". Stack Overflow. https://stackoverflow.com/questions/40238610/what-is-the-meaning-of-gaierror-errno-3-temporary-failure-in-name-resolutio#answer-40238730