---
# System prepended metadata

title: 'Task 1: Web Server'

---

總共 3 個 Tasks，每個 Task 會基於前一個完成的功能再往下延伸，因此請照順序實作。

限時 90 分鐘，時間到之後機器將會自動關閉，請務必注意時間。

p.s. 你有 root 權限，可安裝任何額外工具。

* [Task 1: Web Server](#Task-1:-Web-Server)
* [Task 2: Dockerfile](#Task-2:-Dockerfile)
* [Task 3: Kubernetes](#Task-3:-Kubernetes)

---

# Task 1: Web Server

## 目標

建立一個簡單的 Web Server。

## 實作細節

1. Web server listen 本機的 9090 Port。
2. 可以使用任何語言或框架。
3. 不用撰寫任何 route 邏輯。

# Task 2: Dockerfile

請修改 Dockerfile 檔案，將 task1 application build 成 docker image，並且 push 到本機的 registry。

Image: api-server
Registry: localhost:5000
Expose port: 9090

# Task 3: Kubernetes

## 目標

建立一個可自動擴展的 K8s 環境，將 task1 & task2 的成果部署上去。

## 實作方式

撰寫一個 api-server.yaml 檔案，讓我們可透過 kubectl apply -f api-server.yaml 的方式一次建立好以下環境：

## Deployment

name: api-server
image: 10.201.0.40:5000/api-server
replicas: 2

## Service

name: api-server
port: 9090
protocol: TCP
targetPort: 9090
type: ClusterIP

## Horizontal Pod Autoscaler

name: api-server
minReplicas: 1
maxReplicas: 50
metrics: cpu averageUtilization 達到 75
