89 lines
3.7 KiB
Markdown
89 lines
3.7 KiB
Markdown
# **🦩Flamingo Home Assignment - DevOps Engineer**
|
||
|
||
## We’d like to get a sense of how you approach cloud infrastructure, containerization, and deployment automation. This assignment is not tied to Flamingo’s 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 **1–2 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! 🦩**
|