This assignment is designed to assess your skills and proficiency in MLOps practices, particularly in Kubernetes, Docker, CI/CD pipelines, and cloud services. You will be tasked with both hands-on practical tasks and theoretical questions to demonstrate your understanding and expertise.
- Set up a Kubernetes cluster and deploy a simple application.
- Containerize an application using Docker.
- Create a CI/CD pipeline for the automated deployment of the application.
- Deploy the application to a cloud service of your choice.
-
Kubernetes Cluster Setup
- Set up a local Kubernetes cluster using minikube or kind. These tools allow you to run Kubernetes clusters on your local machine, which is ideal for development and testing purposes.
- Deploy a simple application to the cluster. Examples of simple applications include:
- A static website using Nginx.
- A REST API built with Flask or Express.js.
- Ensure the application is accessible via an external IP address or port-forwarding.
-
Dockerization
- Create a Dockerfile for the simple application you chose to deploy.
- Build the Docker image and push it to a public container registry like Docker Hub.
-
CI/CD Pipeline
- Set up a CI/CD pipeline using a tool like Jenkins, GitLab CI, or GitHub Actions.
- The pipeline should automate the testing, building, and deployment of the Dockerized application to the Kubernetes cluster.
-
Cloud Deployment
- Deploy the application to a cloud service (AWS, GCP, Azure, etc.). If you do not have access to a cloud service, you may document the steps you would take to deploy the application to a cloud service, including any necessary configuration files or scripts.
Please provide answers to the following questions:
- What are the benefits of using a container orchestration tool like Kubernetes?
- How does a CI/CD pipeline improve the software development process?
- What considerations should be taken into account when deploying an application to the cloud?
- A GitHub repository containing:
- The Kubernetes configuration files.
- The Dockerfile and any scripts used to build and push the Docker image.
- The CI/CD pipeline configuration files.
- A
README.md
documenting the steps taken and how to access the deployed application.
- A report answering the theoretical questions.
Please submit your GitHub repository link and report via email to [Insert Contact Email Here] by the end of the next business day following the receipt of this assignment.
Good luck, and we look forward to reviewing your work!