← 返回上一頁
Kubernetes

Datree:用策略檢查工具攔截 K8s YAML 錯誤配置,避免問題進入生產環境

本頁目錄

前言

你有沒有遇過因為一個小小的 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 和記憶體請求)
  • 映像檔使用了 latest tag(不利於版本追蹤)
  • 缺少健康檢查(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 流程,你就能建立一道有效的防線,確保只有合規的配置才能進入生產環境。

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料