Skip to content

A project to showcase DevOps skills through real-world tasks. Develop a Python web server, containerize it with Docker, deploy on Kubernetes using Helm, and create AWS infrastructure with Terraform. Includes solutions and documentation, with optional advanced challenges to demonstrate additional expertise.

License

Notifications You must be signed in to change notification settings

berneldahssi/the-real-devops-challenge

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Real DevOps Challenge

This challenge was designed to look for your DevOps skills with some tasks that we could find in our day in day. You have to fork this repository to complete the following challenges in your own Github account. Feel free to solve the challenge you want.

Once completed, upload all files to reproduce the challenges and if you think is necessary create SOLUTION.md file to add some explanation in each challenge directory.

In each challenge you can reach some tasks, some are mandatory and others optionals. If you want to do it and prove your knowledge, go for the optional ones! ;). If you have any doubt, don't hesitate to open an issue to ask any question about any challenge.

Pre-requisites

First step!

Clone repository

git clone https://github.com/intelygenz/the-real-devops-challenge.git

Challenge 1. Docker and CI/CD

Estimated time: 30 minutes

Now, show us your skills with Python (or whatever language you are most comfortable with) to develop a webserver (using HTTPServer python library) which listens on port 8000. When you make a request to the server, it will return the following information:

webserver-example.png

Once you have it finished, can you create a Dockerfile and build an image with your application?

Helpers:

Optional:

  • Application accepts arguments. Example: --host, --port
  • Securize your Dockerfile
  • Allow pass arguments when executing docker run. For example: docker run <your-image-tag> --port 8081
  • Pass coverage with dive (wagoodman/dive). Use .dive-ci that is provided in the repository
# command
CI=true dive <your-image-tag>

# result
Result:PASS [Total:3] [Passed:3] [Failed:0] [Warn:0] [Skipped:0]

Challenge 2. Kubernetes

Estimated time: 45 minutes

Finally, deploy your Challenge 1 application on Kubernetes. Can you develop a Helm chart and deploy your image? The application will be exposed with an Ingress (choose the one you want: Nginx, Traefik…).

Note: if you couldn’t complete Challenge 1, you can use the latest version of the httpd image on Helm chart.

Helpers:

Optional:

Challenge 3. Infrastructure as a Code

Estimated time: 2 hours

We’ve a infrastructure diagram, can you develop Terraform manifests? To check everything works properly, add user_data to install httpd (default config) and start service.

Maybe read helpers section can you give you how-to start the challenge and organize files. Create challenge-3 folder to store all files.

ch3-diagram-infrastructure.png

When you finish, you can reach Load Balancer a get the following output:

ch3-output-load-balancer.png

Helpers:

Optional:

About

A project to showcase DevOps skills through real-world tasks. Develop a Python web server, containerize it with Docker, deploy on Kubernetes using Helm, and create AWS infrastructure with Terraform. Includes solutions and documentation, with optional advanced challenges to demonstrate additional expertise.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 72.8%
  • Dockerfile 17.5%
  • HCL 9.7%