1. Authentication
POST /auth/login
Request:
{
"username": "admin",
"password": "password123"
}
2. Deployments
Create Deployment
POST /deployments
{
"name": "my-service",
"image": "image:1.25",
"replicas": 3,
"resources": {
"cpu": "0.5",
"memory": "512Mi"
},
"ports": [
{ "containerPort": 80, "protocol": "TCP" }
]
}
List Deployments
GET /deployments
Response:
[
{
"id": "dep-12345",
"name": "my-service",
"status": "running",
"replicas": 3
}
]
Get Deployment Details
GET /deployments/{id}
Update Deployment (e.g., rolling update)
PUT /deployments/{id}
{
"image": "nginx:1.26",
"replicas": 5
}
Delete Deployment
DELETE /deployments/{id}
List Nodes
GET /nodes
[
{
"id": "node-001",
"status": "ready",
"cpu_capacity": "16",
"memory_capacity": "64Gi",
"cpu_allocated": "10",
"memory_allocated": "25Gi"
}
]
Get Node Details
GET /nodes/{id}
List Services
GET /services
Create Service
POST /services
{
"name": "my-service",
"type": "LoadBalancer",
"ports": [
{ "port": 80, "targetPort": 80, "protocol": "TCP" }
],
"selector": {
"app": "my-service"
}
}
5. Monitoring & Health
Cluster Metrics
GET /metrics/cluster
{
"cpu_usage": "75%",
"memory_usage": "60%",
"node_count": 1000,
"container_count": 100000
}
Deployment Metrics
GET /metrics/deployments/{id}
Node Metrics
GET /metrics/nodes/{id}
Health Check
GET /healthz
{
"status": "ok"
}
7. CI/CD Integration
Trigger Deployment via Webhook
POST /webhooks/deploy
{
"service": "my-service",
"image": "myrepo/my-service:latest"
}
We need to capture:
An example of Cluster Metadata:
/cluster
/clusters
/cluster1
- name: "Cluster1"
- region: "us-west"
/cluster2
- name: "Cluster2"
- region: "us-east"
/nodes
/cluster1
/node1
- status: "Ready"
- cpu_capacity: "16"
- memory_capacity: "64Gi"
/node2
- status: "NotReady"
- cpu_capacity: "32"
- memory_capacity: "128Gi"
An example of Workload Definitions:
/workload-definitions
/apps
/app1
- image: "nginx:latest"
- version: "1.0"
/deployments
/deployment1
- app: "app1"
- replicas: 3
/container-specs
/spec1
- resources: "{cpu: '0.5', memory: '256Mi'}"
An example of Runtime State:
/runtime-state
/pods
/pod1
- node: "node1"
- status: "Running"
/pod2
- node: "node2"
- status: "Pending"
/scheduling
/pod1
- priority: "High"
/health
/pod1
- liveness: "OK"
- readiness: "OK"
An example of Networking & Services:
/security
/users
/user1
- roles: ["admin", "developer"]
/roles
/admin
- permissions: ["*"]
/namespaces
/namespace1
- role-bindings: ["role1"]
/rbac
/role-bindings
/role1
- role: "admin"
- users: ["user1"]
/events-monitoring
/container-lifecycle-events
/event1
- pod: "pod1"
- type: "Started"
/metrics-references
/metric1
- pod: "pod1"
- cpu_usage: "70%"
/audit-logs
/actions
/action1
- user: "user1"
- operation: "deployment-create"
- timestamp: "2023-11-25T10:30:00Z"
POST request to the /deployments endpoint.Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Responsibilities:
Design Considerations:
Explain any trade offs you have made and why you made certain tech choices...
Try to discuss as many failure scenarios/bottlenecks as possible.
What are some future improvements you would make? How would you mitigate the failure scenario(s) you described above?