newsence
來源篩選

Show HN: CEL by Example

Hacker News

CEL by Example is a practical guide to the Common Expression Language, demonstrating its use in data evaluation and security rules across platforms like Kubernetes and Google Cloud.

newsence

Show HN:CEL 實例教學

Hacker News
10 天前

AI 生成摘要

CEL 實例教學是一份關於通用表達式語言的實用指南,展示了它在 Kubernetes 和 Google Cloud 等平台中,如何應用於數據評估與安全規則。

背景

CEL(Common Expression Language)是一種由 Google 開發的開源表達式語言,旨在提供一種快速、便攜且安全的方式來對數據進行邏輯評估。它被廣泛應用於 Kubernetes 的准入控制、Google Cloud 的 IAM 條件設定以及 Envoy 代理的路由規則中。本文透過一系列實例,展示了 CEL 如何處理字串、集合、時間戳記以及數據轉換,強調其在微秒級別完成運算的效能優勢。

社群觀點

在 Hacker News 的討論中,開發者們普遍將 CEL 與 OPA(Open Policy Agent)所使用的 Rego 語言進行比較。多數意見認為,這兩者並非完全的替代關係,而是針對不同場景的工具。Rego 被認為功能更強大,類似於 Prolog 的約束滿足邏輯,適合處理複雜的存取控制;而 CEL 則更偏向程序化,其設計核心在於極致的效能與簡單性。留言者指出,CEL 的評估時間通常在微秒等級,而 OPA 則可能耗費數百甚至數千毫秒,這使得 CEL 成為 Kubernetes API 伺服器或 IAM 系統中嵌入式邏輯的理想選擇。

關於 CEL「非圖靈完備」的特性,社群內引發了激烈的辯論。部分批評者認為,「保證終止」在實務上意義不大,因為一個保證會終止但需要耗時十億年的程式,與永不終止的程式在系統穩定性上並無二致。他們主張,真正的關鍵在於是否能設定運算超時或限制資源消耗。然而,支持者反駁指出,CEL 的非圖靈完備性使其能夠進行靜態成本分析,開發者可以在執行前預估運算成本,甚至拒絕接受過於複雜的過濾器。此外,CEL 的安全性與易於嵌入的特性(如 C++、Python、JS 等多語言支援)使其在沙盒化執行環境中優於 Python 或 SQL。

在應用場景方面,開發者分享了 CEL 在醫療數據標準 FHIR 的路徑表達式中的應用。雖然有人詢問 CEL 是否能像 Jsonnet 或 CUE 一樣作為通用配置語言,但社群共識認為 CEL 的定位是「表達式語言」而非「配置語言」,將其用於複雜配置屬於大材小用。對於非程式設計師(如業務分析師)而言,這類 DSL 的學習曲線也是考量點,但其在特定領域如雲端工具與標籤自動化中的標準化地位,已逐漸建立起其生態價值。

延伸閱讀

在討論中,參與者提到了幾個與 CEL 相關的技術資源與應用案例:

  • Kubernetes 官方文件中關於在 CustomResourceDefinition (CRD) 驗證規則與 ValidatingAdmissionPolicies 中使用 CEL 的說明。
  • 與 CEL 類似的表達式語言專案,如 Expr。
  • 具備強大類型系統與編譯時驗證能力的 Idris 語言,被視為更進階的限制評估方案。