Pod, node hay cụm: sidecar VPN thực sự định tuyến lại điều gì
Các container trong một Pod chia sẻ namespace mạng, nên một sidecar thay đổi tuyến ảnh hưởng đến ứng dụng nhưng không ảnh hưởng đến Pod khác hay node.
Một sidecar VPN trong Pod Kubernetes trông giống VPN cấp máy chủ với cách cư xử tốt hơn, và sự tương đồng dừng lại ở ranh giới namespace. Các container trong một Pod chia sẻ namespace mạng, bao gồm không gian địa chỉ và cổng, nên một sidecar cài đặt tuyến và chính sách thực sự thay đổi nơi các gói tin của ứng dụng đi tới. Nó không thay đổi gì cho các Pod khác trên node, và không chạm vào ngăn xếp riêng của node trừ khi bạn cấu hình như vậy. Hiểu đúng ranh giới đó quyết định cả những gì bạn có thể triển khai và những gì bạn phải kiểm tra. Các phần dưới đây theo nó từ namespace ra ngoài.
Namespace chung, hệ quả chung
Hai container trong một Pod nói chuyện qua loopback và thấy cùng các giao diện, và đó là lý do mô hình sidecar hoạt động: ứng dụng không cần biết có đường hầm, vì tuyến mà nó phân giải được cài trong namespace mà nó dùng. Cùng thuộc tính đó nghĩa là lỗi của sidecar là lỗi của ứng dụng. Một tuyến bắt quá nhiều, hoặc một thay đổi DNS trỏ tới resolver bên trong đường hầm, áp dụng ngay cho mọi tiến trình trong Pod đó. Trong namespace chung không có định tuyến theo container, nên không thể giới hạn sidecar vào một tiến trình.
Đây là cơ chế cần ghi nhớ khi rà soát: bán kính ảnh hưởng là Pod, không phải node và không phải cụm.
Nơi sidecar không với tới
Các Pod khác giữ namespace và định tuyến riêng, nên khối lượng công việc cần cùng lối ra cần cùng sidecar hoặc thay vào đó là thiết kế ở cấp node. Lưu lượng của node cũng nằm ngoài namespace của Pod, và các Pod dùng mạng máy chủ chủ động rời bỏ hoàn toàn sự cô lập này. Nếu bạn chạy sidecar với mạng máy chủ để với tới một thứ tiện lợi, bạn đã mở rộng phạm vi từ một Pod ra toàn bộ node và nên nói to điều đó.
Lưu lượng tới các dịch vụ của cụm là bất ngờ phổ biến khác. Một tuyến mặc định rộng trong Pod có thể bắt các yêu cầu dành cho máy chủ API hoặc một dịch vụ ClusterIP, rồi chúng thất bại theo cách trông như đường hầm bị hỏng.
Kế hoạch tuyến: dải Pod, dịch vụ, node và VPN
Ghi ra bốn dải và kiểm tra chồng lấn trước khi triển khai bất cứ thứ gì: CIDR của Pod, CIDR của dịch vụ, địa chỉ node và các đích phía sau VPN. Chồng lấn giữa các dải riêng của VPN và không gian riêng của cụm không hiếm, và tuyến mặc định là giải pháp sai cho việc đó. Kế hoạch tuyến thuộc cùng kho lưu trữ với manifest, vì cụm tiếp theo có thể cấp những dải Pod và dịch vụ hoàn toàn khác.
DNS là một phần của kế hoạch chứ không phải mối lo riêng. Một sidecar viết lại cấu hình resolver có thể phá vỡ khám phá dịch vụ bên trong cụm trong khi truy vấn bên ngoài hoạt động hoàn hảo.
Khởi động và thất bại là những trạng thái rõ ràng
Một tiến trình sidecar đang chạy không phải là chính sách lối ra. Hãy quyết định lưu lượng nào được phép chảy trước khi đường hầm sẵn sàng và điều gì xảy ra nếu nó chết sau đó, rồi thực hiện quyết định đó: một probe chặn container ứng dụng, một chính sách mạng từ chối mặc định, hoặc cả hai. Không có một trong hai, ứng dụng khởi động, phân giải và gửi lưu lượng ra ngoài đường đi bình thường của node trong khi đường hầm vẫn đang kết nối.
Khoảng trống đó ngắn trong cụm khỏe mạnh và vĩnh viễn trong cụm hỏng, và đó chính là thuộc tính mà kẻ tấn công hoặc một rò rỉ dữ liệu tình cờ ưa thích.
Ghép thứ tự với một bài kiểm tra thất bại. Giết sidecar và xác nhận rằng ứng dụng mất lối ra dự định thay vì âm thầm lùi lại.
Năng lực, chính sách và kiểm thử từ container ứng dụng
Cấp các năng lực cần thiết để tạo giao diện và thay đổi tuyến là một quyết định về đặc quyền, và một đặc quyền phù hợp với Pod cô lập không tự động phù hợp trên ngăn xếp của node. Hãy dùng các cơ chế chính sách mạng và bảo mật mà cụm hỗ trợ, và đừng cho rằng mọi cách triển khai CNI hay chính sách đối xử với giao diện VPN như nhau; khác biệt xuất hiện đúng ở những trường hợp thất bại mà bạn quan tâm.
Hãy kiểm thử từ container ứng dụng thật, với các yêu cầu mới tới một đích riêng, một dịch vụ của cụm và internet công cộng. Kiểm thử từ sidecar chứng minh đường hầm hoạt động, không chứng minh ứng dụng với tới được thứ nó cần.
Ghi lại các giả định mạng của cụm bên cạnh cấu hình VPN. Chuyển khối lượng công việc sang cụm khác khi đó là một bài tập kiểm tra kế hoạch tuyến chứ không phải một thay đổi image âm thầm ngừng hoạt động.