Có ai sử dụng chuỗi chứng chỉ riêng cho cụm Kubernetes không?
Đã xảy ra sự cố với kiểu thiết lập như vậy và tôi rất biết ơn nếu có bất kỳ ý tưởng nào về cách giải quyết vấn đề đó.
Giả sử chúng ta có Root CA có chứng chỉ tự ký. Ngoài ra, chúng tôi có một CA trung gian có chứng chỉ được ký bởi Root CA. Chúng tôi tạo một chuỗi chứng nhận (bằng cách ghép cả hai vùng chứa PEM trong một tệp) và thiết lập Kubernetes với chuỗi đó. Hầu hết mọi thứ đều hoạt động hoàn hảo: Kubernetes hoạt động tốt, ứng dụng khách Kubernetes hoạt động tốt, người vận hành Kubernetes hoạt động tốt... Cuộc sống thật tuyệt.
Nhưng có một điều mà chúng ta phải ghi nhớ. Tất cả các Bí mật
đối tượng chứa mã thông báo bảo mật cho Dịch vụTài khoản
các đối tượng có phiên bản "rút gọn" của chứng chỉ CA. Phiên bản "rút gọn" không chứa chứng chỉ Root CA, chỉ có chứng chỉ Trung cấp.
Như tôi có thể thấy, đối với hầu hết các thư viện TLS là đủ. Một phần mềm thiết lập kết nối TLS với Máy chủ API Kubernetes, đảm bảo rằng chứng chỉ của máy chủ được ký bởi một CA đáng tin cậy (giả sử rằng chứng chỉ CA trung gian được nhận từ CA có liên quan Bí mật
được tin cậy) và mọi thứ hoạt động trơn tru.
Nhưng đôi khi chúng ta có một vấn đề.Khi chúng tôi sử dụng một phần mềm (ví dụ: trình điều khiển Kubernetes hoặc bất kỳ chương trình nào khác cần giao tiếp với Máy chủ API Kubernetes) sử dụng thư viện TLS nghiêm ngặt hơn một chút - chúng tôi đang gặp rắc rối. Trong trường hợp này, chúng tôi phải cung cấp cho công cụ này phiên bản của chuỗi chứng chỉ (chứa cả chứng chỉ CA Trung gian và Chứng chỉ gốc), vì phiên bản "rút gọn" do Kubernetes cung cấp là không đủ. Và điều đó không sao nếu chúng tôi có thể cung cấp cho công cụ này chuỗi chứng chỉ đầy đủ, nhưng đôi khi điều đó là không thể, do đó, chúng tôi cần chứng chỉ CA "rút gọn" từ /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
và điều đó không dễ để thuyết phục nó lấy chứng chỉ CA từ một nguồn khác. :-(
Câu hỏi của tôi như sau: có cách nào để khiến Kubernetes tạo những Bí mật
các đối tượng có phiên bản đầy đủ của chuỗi chứng nhận? Và nếu có, nó có gây ra một loại khó khăn nào khác không (ví dụ: nếu phần mềm được cung cấp với toàn bộ chuỗi sẽ bị trục trặc)? Hoặc, có lẽ, có thể có một cách giải quyết khác?
Cảm ơn trước.