Files
flamingo-tech-test/TASKS.md
Andriy Oblivantsev 33ebb4af89
Helm Chart CI & Release / Lint Helm Chart (push) Successful in 10s
Helm Chart CI & Release / Semantic Release (push) Successful in 2m7s
Minor fixes
2026-02-20 13:38:28 +00:00

89 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **🦩Flamingo Home Assignment - DevOps Engineer**
## Wed like to get a sense of how you approach cloud infrastructure, containerization, and deployment automation. This assignment is not tied to Flamingos domain; feel free to use any lightweight setup or example application that makes it easier for you to demonstrate your skills. **📌 Practical Part**
### **Objective**
#### Package and deploy [**FleetDM**](https://fleetdm.com/) to a local Kubernetes cluster using Helm.
#### **1. Helm Chart**
Create a public Helm chart that deploys:
- FleetDM Server
- MySQL
- Redis
#### **2. Local cluster**
Include a `Makefile` with the following targets:
- `make cluster` — create local cluster (Minikube or Kind)
- `make install` — install the Helm chart
- `make uninstall` — remove all deployed resources
#### **3. Documentation**
Provide a `README.md` that includes:
- Installation & teardown instructions
- Verification steps to confirm FleetDM, MySQL, and Redis are operational
#### **4. Enhancements**
- Set up a basic CI pipeline to release new Helm chart versions.
- Expose the FleetDM UI and ensure that FleetDM is reachable by `agents`
- Automatically run `fleet prepare db` on fresh install
## **📌 Theoretical Part** **Architectural Design Document for “Company Inc.”**
**Objective**
1. A **12 page, well-structured architectural design document** (PDF or similar).
2. A **High-Level Diagram (HLD)** of the architecture (using draw.io, Lucidchart, etc.) illustrating the overall infrastructure design.
**Task Overview**
Company Inc. is a small startup developing a web application and planning to deploy it on a major cloud provider (AWS or GCP). They have limited cloud experience and seek expertise to design a robust, scalable, secure, and cost-effective infrastructure. They are particularly interested in leveraging managed Kubernetes and following best practices.
### **Application Details**
- **Type:** Web application with a REST API backend and a single-page application (SPA) frontend.
- **Technology Stack:** Backend: Python/Flask; Frontend: React; Database: MongoDB.
- **Traffic:** Initially low (a few hundred users/day), but expected to grow rapidly to millions of users.
- **Data:** Sensitive user data is handled, requiring strong security measures.
- **Deployment Frequency:** Continuous Integration and Continuous Delivery (CI/CD) is required.
### **Assignment Requirements**
#### **1. Cloud Environment Structure**
- Recommend the optimal number and purpose of AWS accounts / GCP projects for Innovate Inc., considering best practices for isolation, billing, and management.
- Justify the choice of provider and the environmental structure.
#### **2. Network Design**
- Design the Virtual Private Cloud (VPC) architecture.
- Describe how the network will be secured (firewalls, security groups, private/public subnets, etc.).
#### **3. Compute Platform**
- Detail how managed Kubernetes Service (EKS for AWS / GKE for GCP) will be leveraged to deploy and manage the application.
- Describe the approach to node groups, scaling policies (horizontal & vertical), and resource allocation within the cluster.
- Explain the containerization strategy, including:
- Image building process
- Container registry management
- Deployment pipelines (CI/CD integration)
#### **4. Database**
- Recommend the appropriate managed MongoDB service and justify the choice.
- Outline the approach to:
- Automated backups
- High availability (multi-AZ/replicas)
- Disaster recovery strategy
We value your time and want to gain a clear understanding of how you approach DevOps tasks in a clean, thoughtful, and structured manner.
**Good luck, and happy deploying! 🦩**