前言
你有沒有遇過因為一個小小的 YAML 設定疏忽,導致服務在 K8s 上跑不起來或者資源爆炸的情況?在微服務環境中,YAML 設定檔數量龐大,光靠人眼 review 很容易漏掉問題。Datree 就是一個開源 CLI 工具,專門在你的 YAML 進叢集之前做「品質把關」,透過策略規則自動檢查配置是否合規。
什麼是 Datree?
Datree 是一個開源的 CLI 工具,透過策略管理來防止 Kubernetes 工作負載的錯誤配置。它完全不需要連接到你的生產叢集,就能在部署前完成驗證。
Datree 的三層檢查機制
| 檢查層級 | 說明 |
|---|---|
| YAML 語法檢查 | 確認 YAML 格式正確,沒有語法錯誤 |
| K8s Schema 驗證 | 檢查 API 版本、資源類型等是否有效 |
| 策略檢查 | 依據自訂規則檢查(記憶體限制、CPU 限制、映像檔版本等) |
最後會產生一份摘要報告,清楚列出通過和失敗的規則。
安裝與快速上手
依照官方文件安裝 Datree CLI 後,就可以直接用了。
測試一個基本的 Deployment YAML
假設你有一個簡單的 nginx Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
用 Datree 檢查:
datree test deployment.yaml
假設預設策略有 30 條規則,你可能會得到 21 條通過、9 條失敗的結果。常見的失敗項目包括:
- 沒有設定
resources.limits(CPU 和記憶體上限) - 沒有設定
resources.requests(CPU 和記憶體請求) - 映像檔使用了
latesttag(不利於版本追蹤) - 缺少健康檢查(liveness/readiness probe)
修正配置並重新驗證
根據 Datree 的提示加上資源限制:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
resources:
limits:
memory: 200Mi
cpu: 1
requests:
memory: 100Mi
cpu: 100m
ports:
- containerPort: 80
再次執行 datree test deployment.yaml,失敗數從 9 降到 5。持續修正直到所有關鍵規則都通過。
透過 Dashboard 管理策略
Datree 提供線上 Dashboard,讓你可以:
- 查看和編輯檢查規則
- 啟用或停用特定規則
- 建立多組策略(例如開發環境和生產環境用不同的規則集)
- 新增自訂規則
所有在 Dashboard 上的變更都會自動反映到 CLI 的檢查結果中。
整合到 CI/CD 流程
Datree 最大的價值在於整合到 CI/CD Pipeline 中。在 PR 合併或部署之前自動跑一次 datree test,不合規的 YAML 直接擋下:
# GitLab CI 範例
validate-k8s:
stage: test
script:
- datree test ./k8s/*.yaml
only:
- merge_requests
這樣就能從根源上避免錯誤配置進入生產環境。
常見的檢查規則
| 規則 | 說明 |
|---|---|
| 確保設定 CPU/Memory limits | 防止單一 Pod 吃光節點資源 |
| 確保設定 CPU/Memory requests | 讓調度器正確分配節點 |
| 禁止使用 latest tag | 確保映像檔版本可追溯 |
| 確保設定 liveness/readiness probe | 讓 K8s 能自動偵測和重啟不健康的 Pod |
| 禁止容器以 root 身份執行 | 降低安全風險 |
| 確保 Deployment 至少 2 個副本 | 保證高可用性 |
小結
Datree 是一個輕量但實用的工具,它不需要連接到叢集就能在部署前攔截配置問題。透過三層檢查機制(YAML 語法、K8s Schema、策略規則),搭配線上 Dashboard 管理規則集,再整合進 CI/CD 流程,你就能建立一道有效的防線,確保只有合規的配置才能進入生產環境。

發佈留言