Real Time Task- TakeTo Home

DevOps Problem

\> Please note that you are not permitted to distribute this problem or any versions/variations of this problem to anyone.

We would like to test your knowledge on basic Kubernetes, common security practices, and basic programming skills (Bash or Python). For that reason, please don't use Helm charts, Terraform, or any infrastructure-as-code tools in this assignment. Of course, we do use those tools in our work!

## Problem Statement

Provide a setup of a Kubernetes cluster with:

SApplicationExternal URIInternal URI or Hostname and Port
1[KeyCloak](https://www.keycloak.org/)http://localhost:8081 or http://keycloak.localhttp://keycloak:8080
2[Ghost](https://ghost.org)http://localhost:8082 or http://ghost.localhttp://ghost:8080
3PostgreSQLNApostgres:5432
4MySQLNAmysql:3306

where the apps are reachable from the internet. They must be reachable within the cluster. However, KeyCloak and Ghost are not communicating with each other for this assignment.

\> FYI, in our work, our applications are communicating internally.

Here is the list of additional constraints and requirements.

* A simple and maintainable script, called setup.sh or setup.py, to deploy and test your setup is required.

Each application *must** be at least usable.

* KeyCloak

Use *PostgreSQL** as the data storage.

* Authentication as both as superuser and a normal user must work.

* Ghost

Use *MySQL** as the data storage.

* Authentication must work.

* Publishing a post must work.

* The default site navigation must work, i.e., no broken link.

* All ingress to the applications must go through an ingress controller, i.e., no direct access to the applications.

* The use of the default ingress controller is acceptable.

**Optional:\* We recommend Traefik as the ingress controller as we use it in our production setting.

Database backup is out of scope*.

* You may use the following programming languages or tools:

* Any distributions of Kubernetes

**Bash\* (5+)

**Python\* (3.8+ with packages only from [PyPI](https://pypi.org))

* Add a README that contains the following information:

* Basic environment specs (OS version, Docker version, kubectl version, lightweight kubernetes implementation used, etc.)

* System Requirements (if any)

* Instructions for how to get the cluster running

* A short explanation of security best practices you applied to the cluster

## Assignment Delivery (IMPORTANT)

When you complete the assignment, please email your version of the assignment back to us in a ZIP file, containing all files necessary for the deployment, including the README.

Please do not update to any public repository, e.g., GitHub, GitLab, BitBucket. Copyright infringement issues will crop up.

## Evaluation

Your solution will be also evaluated for correctness, maintainability, portability, security, scalability, and repeatability (automation).

We will test your solution on a lightweight Kubernetes distribution.

## Expected time to complete

Upto 2-3 hours, including setting up the host machine, install dependencies, etc.

Did you find this article valuable?

Support Vishvanath Patil by becoming a sponsor. Any amount is appreciated!