|
| 1 | +{% include header.html %} |
| 2 | +{% include online-assignment/intro.md %} |
| 3 | + |
| 4 | +# Objective |
| 5 | + |
| 6 | +You are a DevOps engineer working for an ad-tech company called Blue Banana. |
| 7 | + |
| 8 | +The current CI/CD process automates the provision of services on virtual machines running some linux distribution. |
| 9 | + |
| 10 | +Your team is eager to enter the world of containers, and you take the task of exploring Kubernetes as a possible solution. |
| 11 | + |
| 12 | +You decide to make the first step with the deployment of the company's blog site, powered by Lobsters. |
| 13 | + |
| 14 | +# Tasks |
| 15 | + |
| 16 | +The assignments comprises two tasks. |
| 17 | + |
| 18 | +| Task Objective | Expected Completion Time | |
| 19 | +|---|---| |
| 20 | +| [Task 1:](#task-1) Setup a local Kubernetes environment | ~30 minutes | |
| 21 | +| [Task 2:](#task-2) Deploy and expose Lobsters on Kubernetes | ~60 minutes | |
| 22 | + |
| 23 | +## Timing assumptions |
| 24 | + |
| 25 | +The time estimates for the tasks above assume that you are familiar or have professional experience with Kubernetes and Docker. |
| 26 | + |
| 27 | +## Task 1 |
| 28 | + |
| 29 | +You will need to deploy a functional Kubernetes cluster on your machine. |
| 30 | + |
| 31 | +You should be able to interact with the cluster via the `kubectl` command from CLI. |
| 32 | + |
| 33 | +## Task 2 |
| 34 | + |
| 35 | +You will need to create the necessary definition files to have the Lobsters blog deployed on Kubernetes, including any dependencies it may require to run. |
| 36 | + |
| 37 | +You are provided with Lobsters docker images [here](https://hub.docker.com/r/efthymiosh/lobsters/). |
| 38 | + |
| 39 | +These images are built using the repository [here](https://github.com/jamesbrink/docker-lobsters) at the commit with SHA beginning with `d862967`. |
| 40 | + |
| 41 | +You will find that you may configure the running container by having set some environment variables. A required subset would be: |
| 42 | + |
| 43 | + - MARIADB_HOST |
| 44 | + - MARIADB_PORT |
| 45 | + - MARIADB_PASSWORD |
| 46 | + - MARIADB_USER |
| 47 | + - LOBSTER_DATABASE |
| 48 | + - LOBSTER_SITE_NAME |
| 49 | + - RAILS_ENV |
| 50 | + - LOBSTER_HOSTNAME |
| 51 | + - VIRTUAL_HOST |
| 52 | + - RAILS_MAX_THREADS |
| 53 | + |
| 54 | +You will need to install and expose the service on a kubernetes ingress controller. |
| 55 | + |
| 56 | +After being done, your service should be accessible via `lobsters.local` on your local machine outside of the Kubernetes cluster. |
| 57 | + |
| 58 | +# Deliverables |
| 59 | + |
| 60 | +In your uploaded solution you should include: |
| 61 | +1. The definition file(s) that you created for deploying the service and any dependencies on Kubernetes. |
| 62 | +2. The definition file(s) that you created for exposing the service on your local machine. |
| 63 | +3. Step-by-step instructions for deploying the stack you have defined, given a working Kubernetes cluster. |
| 64 | +4. A `README.txt` file describing the rationale behind any interesting decisions you have taken, any work-arounds, and anything else you'd like to add about your solution. |
| 65 | + |
| 66 | +**Note** Upload your solution as a valid `.tar.gz` or `.zip` file containing the deliverables. |
0 commit comments