繁體中文

開發者工具·語法轉換器

將 kubectl JSON 輸出轉換為您可以實際讀取的清單

· 為什麼它很重要

json yaml 開發人員工作流程

密集的 JSON 資源開啟到縮排的 YAML 樹中以供檢查
原始 ToolAcre 向量圖

Kubernetes 工具發出 JSON ,它很精确但难以掃描,而清單是用 YAML 編寫的。這篇文章展示了為什麼它們之間的轉換可以加快讀取、比較和重複使用資源定義的速度。

上午 2 處有 200 行大括號 — 一個以 JSON 形式獲取的部署以及您需要埋入狀態塊中的欄位

在事件期間,大型資源物件可以將相關選擇器或條件隱藏在元資料和狀態中。將捕獲的 JSON 轉換為縮排的 YAML 會刪除標點符號,而不更改普通物件、陣列、布林值、數字、字串和空值。收穫是視覺掃描,而不是新的事實來源。

在使用任何瀏覽器頁面之前編輯令牌、位址和識別碼。 ToolAcre 嚴格解析 JSON 並在本地轉儲 YAML。它不會聯繫集群,也不知道該物件是否來自 kubectl、另一個客戶端或已儲存的裝置。

為什麼 API 會說 JSON 而人類會寫 YAML — API 伺服器的格式、明顯的傳統以及為什麼兩者都描述相同的對象

相同的 JSON 形資源樹可以表示為 YAML 映射和序列。該儲存庫沒有確定特定 Kubernetes 元件選擇一種線路表示的原因或每個 API 端點如何協商媒體類型,因此本文避免將常見做法轉變為有關 Kubernetes 內部結構的實作宣告。

可以證明的範圍更窄:JSON 輸入被解析為 JavaScript 值,並 js-yaml 以區塊樣式序列化該值。陣列保持有序,物件鍵保持與相同值關聯,且不明確的字串會收到保護性引號。

JSON 和 YAML 可以承載相同的資源樹; API 傳輸宣告不在該轉換器的證據範圍內

縮排和破折號使巢狀更易於掃描,而區塊標量可以使多行字串可讀。這些是序列化器的選擇。它們不會刪除狀態、驗證 API 版本或使活動物件適合重新套用。即使 YAML 看起來不如 JSON 明確,帶引號的類似日期的字串仍保留文字。

使用轉換來定位欄位、比較形狀並準備審查副本。保留原始 JSON 以取得確切證據。如果啟用排序鍵選項,物件呈現會進一步更改,而陣列順序保持不變。

YAML 改變表示形式,而不是 Kubernetes 物件或其有效性

活動物件通常包含由其伺服器或控制器維護的欄位。刪除 `status`、`managedFields`、`uid` 或 `resourceVersion` 可能適合可重複使用清單,但 ToolAcre 不知道該策略並從不刪除它們。每次刪除都必須是轉換後經過深思熟慮的 Kubernetes 感知編輯。

可能會產生其他欄位,但仍需要保留意圖。與 git 中的版本進行比較並查閱所屬系統的當前文件,而不是應用記憶的清理清單。轉換器故意對域語義視而不見。

工作範例:作為 JSON 取得的服務 — 轉換為 YAML,刪除伺服器填入的欄位並與 git 中的版本進行比較

採用經過編輯的服務型對象,其中包含元資料、規格連接埠和狀態區塊。將其轉換為 YAML,使用您的操作過程識別伺服器填充的欄位,並僅刪除那些批准用於可重複使用工件的欄位。在任何應用步驟之前,將標籤、選擇器、連接埠和類型與版本控制進行比較。

YAML 編寫者可以引用 `NO`、`yes`、`1.0` 等字串或日期文字來保護其類型。這些引言並不是隨意刪除的雜亂。將編輯後的 YAML 重新轉換為 JSON 並比較資料樹,同時記住編輯期間新增的註釋無法在反向傳遞中倖存。

相反方向 - 將 YAML 清單轉換為 JSON 以準確查看 API 將收到的內容,包括如何鍵入帶引號的值

可以使用相反方向。 YAML 在嚴格的 JSON 模式或核心模式下讀取,然後使用選定的縮排寫入 JSON。嚴格模式將 `~`、空值和 `0o755` 保留為文字; Core 以不同的方式解決它們。兩者都不將 `NO` 視為 false。

這清楚地顯示了 ToolAcre 的解析器將作為 JSON 形狀的資料發送的內容。它並不能證明叢集的 YAML 函式庫或模式准入會做什麼,特別是對於自訂標籤或特定於應用程式的欄位。

這不包括什麼 - 根據 Kubernetes 模式驗證清單,這需要 kubectl 的試執行或模式工具

未載入 Kubernetes 架構、CRD 定義或存取規則。未知欄位、不建議使用的版本和無效組合可能會完美轉換。使用目標平台的試執行或模式感知驗證器來解決這些問題。

ToolAcre 也無法進行身份驗證、取得即時資源或比較所需狀態和觀察到的狀態。它的工作以語法映射結束。保持該邊界明確可以防止可讀檔案被誤認為是已接受的清單。

重點:讀取 YAML,在 JSON 中驗證 — 以及語法轉換器面板如何在不離開分頁的情況下在兩者之間切換

讀取有助於任務的符號中的資源,但單獨驗證其資料和域規則。 JSON 提供明確的標點符號; YAML 提供緊湊的區塊視圖。對於普通的 JSON 形值,即使註解和樣式不能往返,兩者也可以保留樹。

語法轉換器在瀏覽器中的這些視圖之間切換,並公開架構選項和警告。將其用作檢查階段,而不是作為刪除欄位或部署資源的權限。

對於事件註釋,將原始命令輸出、轉換後的檢查副本和每個手動刪除記錄為單獨的工件。這個線索可以讓另一位工程師區分叢集傳回的內容和為了可讀性或重複使用而刪除的內容。它還可以防止乾淨的 YAML 摘錄被誤認為是完整的即時資源。轉換器僅貢獻符號變更;來源和變更控制仍然是操作工作流程的一部分。