Công cụ dành cho nhà phát triển · Trình chuyển đổi cú pháp
Biến đầu ra kubectl JSON thành một bảng kê khai mà bạn thực sự có thể đọc được
· Tại sao nó quan trọng
json yaml developer-workflow
Công cụ Kubernetes phát ra JSON chính xác nhưng khó quét, trong khi các bảng kê khai được viết bằng YAML. Bài đăng này cho thấy lý do tại sao việc chuyển đổi giữa chúng lại tăng tốc độ đọc, so sánh và sử dụng lại các định nghĩa tài nguyên.
Hai trăm dòng dấu ngoặc nhọn lúc 2 sáng — Triển khai được tìm nạp dưới dạng JSON và trường bạn cần được chôn trong khối trạng thái
Trong khi xảy ra sự cố, một đối tượng tài nguyên lớn có thể ẩn bộ chọn hoặc điều kiện liên quan giữa siêu dữ liệu và trạng thái. Việc chuyển đổi JSON đã ghi thành YAML thụt lề sẽ loại bỏ dấu câu mà không thay đổi các giá trị đối tượng, mảng, Boolean, số, chuỗi và null thông thường. Lợi ích thu được là quét hình ảnh, không phải là nguồn sự thật mới.
Biên tập lại mã thông báo, địa chỉ và số nhận dạng trước khi sử dụng bất kỳ trang trình duyệt nào. ToolAcre phân tích cú pháp JSON một cách nghiêm ngặt và kết xuất YAML cục bộ. Nó không liên hệ với cụm hoặc biết liệu đối tượng đến từ kubectl, ứng dụng khách khác hay vật cố định đã lưu.
Tại sao API nói JSON và con người viết YAML — định dạng của máy chủ API, truyền thống hiển thị và tại sao cả hai đều mô tả cùng một đối tượng
Cây tài nguyên có hình dạng JSON tương tự có thể được biểu diễn dưới dạng ánh xạ và trình tự YAML. Kho lưu trữ này không giải thích lý do tại sao một thành phần Kubernetes cụ thể chọn một biểu diễn dây hoặc cách mọi điểm cuối API đàm phán các loại phương tiện, vì vậy bài viết tránh biến thông lệ phổ biến thành yêu cầu triển khai về nội bộ Kubernetes.
Những gì có thể được chứng minh là hẹp hơn: đầu vào JSON được phân tích cú pháp thành giá trị JavaScript và js-yaml tuần tự hóa giá trị đó theo kiểu khối. Mảng vẫn được sắp xếp theo thứ tự, các khóa đối tượng vẫn được liên kết với cùng một giá trị và các chuỗi không rõ ràng nhận được dấu ngoặc kép bảo vệ.
JSON và YAML có thể mang cùng một cây tài nguyên; API khiếu nại vận chuyển nằm ngoài bằng chứng của người chuyển đổi này
Thụt lề và dấu gạch ngang giúp việc quét lồng dễ dàng hơn, trong khi khối vô hướng có thể làm cho các chuỗi nhiều dòng có thể đọc được. Đó là những lựa chọn nối tiếp. Chúng không xóa trạng thái, xác thực phiên bản API hoặc tạo đối tượng trực tiếp phù hợp để đăng ký lại. Chuỗi giống ngày được trích dẫn vẫn giữ nguyên văn bản ngay cả khi YAML có vẻ ít rõ ràng hơn JSON.
Sử dụng chuyển đổi để xác định vị trí các trường, so sánh các hình dạng và chuẩn bị bản sao đánh giá. Hãy giữ JSON bản gốc để có bằng chứng chính xác. Nếu tùy chọn khóa sắp xếp được bật, cách trình bày đối tượng sẽ thay đổi hơn nữa trong khi thứ tự mảng vẫn không bị ảnh hưởng.
YAML thay đổi cách trình bày, không phải đối tượng Kubernetes hoặc tính hợp lệ của nó
Một đối tượng trực tiếp thường chứa các trường được duy trì bởi máy chủ hoặc bộ điều khiển của nó. Việc xóa `status`, `managedFields`, `uid` hoặc `resourceVersion` có thể phù hợp với tệp kê khai có thể sử dụng lại nhưng ToolAcre không biết chính sách đó và không bao giờ loại bỏ chúng. Mỗi lần xóa phải là một chỉnh sửa có chủ ý nhận biết Kubernetes sau khi chuyển đổi.
Các trường khác có thể được tạo nhưng vẫn cần thiết để duy trì ý định. So sánh với phiên bản trong git và tham khảo tài liệu hiện tại của hệ thống sở hữu thay vì áp dụng danh sách dọn dẹp đã ghi nhớ. Trình chuyển đổi cố tình làm mù ngữ nghĩa miền.
Ví dụ đã hoạt động: Dịch vụ được tìm nạp dưới dạng JSON — chuyển đổi thành YAML, xóa các trường do máy chủ điền và so sánh với phiên bản trong git
Lấy một đối tượng hình Dịch vụ được sắp xếp lại với siêu dữ liệu, cổng thông số kỹ thuật và khối trạng thái. Chuyển đổi nó thành YAML, xác định các trường được điền trên máy chủ bằng cách sử dụng quy trình vận hành của bạn và chỉ xóa những trường được phê duyệt cho tạo phẩm có thể tái sử dụng. So sánh nhãn, bộ chọn, cổng và loại với tính năng kiểm soát phiên bản trước bất kỳ bước áp dụng nào.
Người viết YAML có thể trích dẫn các chuỗi như `NO`, `yes`, `1.0` hoặc văn bản tìm kiếm ngày tháng để bảo vệ loại của chúng. Những trích dẫn đó không lộn xộn để xóa ngẫu nhiên. Chuyển đổi lại YAML đã chỉnh sửa thành JSON và so sánh cây dữ liệu, đồng thời nhớ rằng các nhận xét được thêm vào trong quá trình chỉnh sửa không thể tồn tại trong quá trình chuyển ngược lại đó.
Hướng ngược lại — chuyển đổi tệp kê khai YAML thành JSON để xem chính xác những gì API sẽ nhận được, bao gồm cả cách nhập các giá trị được trích dẫn
Hướng ngược lại có sẵn. YAML được đọc theo lược đồ JSON nghiêm ngặt hoặc lược đồ cốt lõi, sau đó JSON được viết với thụt lề đã chọn. Chế độ nghiêm ngặt giữ `~`, các giá trị trống và `0o755` dưới dạng văn bản; Core giải quyết chúng theo cách khác nhau. Cả hai đều không coi `NO` là sai.
Điều này cung cấp cái nhìn rõ ràng về những gì trình phân tích cú pháp của ToolAcre sẽ gửi dưới dạng dữ liệu có hình dạng JSON. Nó không chứng minh việc nhập học lược đồ hoặc thư viện YAML của cụm sẽ làm gì, đặc biệt đối với các thẻ tùy chỉnh hoặc các trường dành riêng cho ứng dụng.
Điều này không bao gồm những gì - xác thực tệp kê khai dựa trên lược đồ Kubernetes, cần công cụ lược đồ hoặc chạy thử của kubectl
Không có lược đồ Kubernetes, định nghĩa CRD hoặc quy tắc nhập học nào được tải. Các trường không xác định, phiên bản không được dùng nữa và kết hợp không hợp lệ có thể chuyển đổi hoàn hảo. Sử dụng trình xác thực chạy thử hoặc nhận biết lược đồ của nền tảng đích cho những câu hỏi đó.
ToolAcre cũng không thể xác thực, tìm nạp tài nguyên trực tiếp hoặc so sánh trạng thái mong muốn và trạng thái được quan sát. Công việc của nó kết thúc ở việc ánh xạ cú pháp. Việc giữ ranh giới đó rõ ràng sẽ ngăn không cho tệp có thể đọc được bị nhầm lẫn với tệp kê khai được chấp nhận.
Bài học rút ra: đọc trong YAML, xác minh trong JSON — và cách bảng chuyển đổi Cú pháp chuyển đổi giữa hai bảng mà không cần rời khỏi tab
Đọc tài nguyên trong ký hiệu giúp thực hiện nhiệm vụ nhưng hãy xác minh riêng dữ liệu và quy tắc miền của nó. JSON cung cấp dấu câu rõ ràng; YAML cung cấp chế độ xem khối nhỏ gọn. Đối với các giá trị có hình dạng JSON thông thường, cả hai có thể bảo tồn cây mặc dù nhận xét và kiểu không thể quay vòng.
Bộ chuyển đổi cú pháp chuyển đổi giữa các chế độ xem đó trong trình duyệt và hiển thị các cảnh báo và tùy chọn lược đồ. Sử dụng nó như một giai đoạn kiểm tra, không phải là quyền để xóa các trường hoặc triển khai tài nguyên.
Đối với các ghi chú sự cố, hãy ghi lại đầu ra lệnh gốc, bản sao kiểm tra đã chuyển đổi và mọi thao tác xóa thủ công dưới dạng các tạo phẩm riêng biệt. Dấu vết đó cho phép một kỹ sư khác phân biệt những gì cụm trả về với những gì đã bị xóa để có thể đọc hoặc tái sử dụng. Nó cũng ngăn không cho đoạn trích YAML sạch bị nhầm lẫn với tài nguyên trực tiếp hoàn chỉnh. Trình chuyển đổi chỉ góp phần thay đổi ký hiệu; kiểm soát xuất xứ và thay đổi vẫn là một phần của quy trình hoạt động.