7 phương pháp hay nhất để sử dụng vùng chứa theo Google

Ghi chú. bản dịch.: Tác giả của bài viết gốc là Théo Chamley, Kiến trúc sư giải pháp đám mây của Google. Trong bài đăng này trên blog Google Cloud, anh ấy cung cấp bản tóm tắt hướng dẫn chi tiết hơn của công ty anh ấy, được gọi là "Thực tiễn tốt nhất để vận hành container" Trong đó, các chuyên gia của Google đã thu thập các phương pháp hay nhất để vận hành vùng chứa trong bối cảnh sử dụng Google Kubernetes Engine và hơn thế nữa, đề cập đến nhiều chủ đề: từ bảo mật đến giám sát và ghi nhật ký. Vậy theo Google, các biện pháp thực hành vùng chứa quan trọng nhất là gì?

7 phương pháp hay nhất để sử dụng vùng chứa theo Google

Động cơ Kubernetes (Dịch vụ dựa trên Kubernetes để chạy các ứng dụng được chứa trong Google Cloud - khoảng dịch) là một trong những cách tốt nhất để chạy khối lượng công việc cần mở rộng quy mô. Kubernetes sẽ đảm bảo hoạt động trơn tru của hầu hết các ứng dụng nếu chúng được đóng gói. Nhưng nếu muốn ứng dụng của mình dễ quản lý và muốn tận dụng tối đa Kubernetes, bạn cần tuân theo các phương pháp hay nhất. Chúng sẽ đơn giản hóa hoạt động của ứng dụng, giám sát và gỡ lỗi, đồng thời cũng tăng cường tính bảo mật.

Trong bài viết này, chúng ta sẽ điểm qua danh sách những điều bạn nên biết và làm để chạy container hiệu quả trên Kubernetes. Những người muốn đi sâu hơn vào chi tiết nên đọc tài liệu Thực tiễn tốt nhất để vận hành container, và cũng chú ý đến chúng tôi bài đăng trước đó về lắp ráp container.

1. Sử dụng cơ chế ghi nhật ký vùng chứa gốc

Nếu ứng dụng đang chạy trên cụm Kubernetes thì không cần nhiều nhật ký. Hệ thống ghi nhật ký tập trung có thể đã được tích hợp sẵn trong cụm bạn đang sử dụng. Trong trường hợp sử dụng Kubernetes Engine, điều này có trách nhiệm Ghi nhật ký Stackdriver. (Ghi chú. bản dịch.: Và nếu bạn sử dụng bản cài đặt Kubernetes của riêng mình, chúng tôi khuyên bạn nên xem xét kỹ hơn giải pháp Nguồn mở của chúng tôi - nhà gỗ.) Giữ cuộc sống của bạn đơn giản và sử dụng cơ chế ghi nhật ký vùng chứa gốc. Viết nhật ký vào thiết bị xuất chuẩn và thiết bị xuất chuẩn - chúng sẽ tự động được nhận, lưu và lập chỉ mục.

Nếu muốn, bạn cũng có thể ghi nhật ký vào định dạng JSON. Cách tiếp cận này sẽ giúp bạn dễ dàng thêm siêu dữ liệu vào chúng. Và với chúng, Stackdriver Logging sẽ có khả năng tìm kiếm thông qua nhật ký bằng siêu dữ liệu này.

2. Đảm bảo các container không có trạng thái và không thể thay đổi

Để các thùng chứa hoạt động chính xác trong cụm Kubernetes, chúng phải ở trạng thái không trạng thái và không thể thay đổi. Khi các điều kiện này được đáp ứng, Kubernetes có thể thực hiện công việc của mình, tạo và hủy các thực thể ứng dụng khi cần thiết.

Không quốc tịch có nghĩa là mọi trạng thái (dữ liệu liên tục thuộc bất kỳ loại nào) đều được lưu trữ bên ngoài vùng chứa. Đối với điều này, tùy thuộc vào nhu cầu, có thể sử dụng các loại bộ nhớ ngoài khác nhau: Đám mây lưu trữ, Đĩa liên tục, Redis, CloudSQL hoặc cơ sở dữ liệu được quản lý khác. (Ghi chú. bản dịch.: Đọc thêm về điều này trong bài viết của chúng tôi “Toán tử cho Kubernetes: cách chạy các ứng dụng có trạng thái".)

bất biến có nghĩa là container sẽ không bị sửa đổi trong suốt vòng đời của nó: không có bản cập nhật, bản vá, thay đổi cấu hình. Nếu bạn cần cập nhật mã ứng dụng hoặc áp dụng bản vá, hãy tạo hình ảnh mới và triển khai nó. Bạn nên di chuyển cấu hình vùng chứa (cổng nghe, tùy chọn môi trường thời gian chạy, v.v.) ra bên ngoài - sang Bí mật и Bản đồ cấu hình. Chúng có thể được cập nhật mà không cần phải tạo hình ảnh vùng chứa mới. Để dễ dàng tạo các đường dẫn bằng tập hợp hình ảnh, bạn có thể sử dụng Xây dựng đám mây. (Ghi chú. bản dịch.: Chúng tôi sử dụng công cụ Nguồn mở cho những mục đích này dapp.)

7 phương pháp hay nhất để sử dụng vùng chứa theo Google
Một ví dụ về cập nhật cấu hình Triển khai trong Kubernetes bằng cách sử dụng ConfigMap được gắn trong các nhóm dưới dạng cấu hình

3. Tránh các container đặc quyền

Bạn không chạy ứng dụng với quyền root trên máy chủ của mình, phải không? Nếu kẻ tấn công vào được ứng dụng, hắn sẽ có quyền truy cập root. Những cân nhắc tương tự cũng áp dụng cho việc không chạy các vùng chứa đặc quyền. Nếu bạn cần thay đổi cài đặt trên máy chủ, bạn có thể cung cấp cho vùng chứa cụ thể khả năng sử dụng tùy chọn securityContext trong Kubernetes. Nếu bạn cần thay đổi hệ thống, Kubernetes có trừu tượng riêng biệt vì điều này. Nói chung là cố gắng tận dụng tối đa trong đó- và thùng chứa sidecar để thực hiện các hoạt động đặc quyền tương tự. Chúng không cần phải có khả năng truy cập được đối với lưu lượng truy cập nội bộ hoặc bên ngoài.

Nếu bạn quản lý một cụm, bạn có thể sử dụng Chính sách bảo mật nhóm để hạn chế việc sử dụng các thùng chứa đặc quyền.

4. Tránh chạy bằng root

Các vùng chứa đặc quyền đã được thảo luận, nhưng sẽ còn tốt hơn nếu, ngoài điều này, bạn không chạy các ứng dụng bên trong vùng chứa với quyền root. Nếu kẻ tấn công tìm thấy lỗ hổng từ xa trong một ứng dụng có quyền root cho phép thực thi mã, sau đó kẻ tấn công có thể rời khỏi vùng chứa thông qua một lỗ hổng chưa xác định, thì kẻ tấn công sẽ chiếm được quyền root trên máy chủ.

Cách tốt nhất để tránh điều này là không chạy bất cứ thứ gì với quyền root ngay từ đầu. Để làm điều này, bạn có thể sử dụng lệnh USER в Dockerfile hoặc runAsUser trong Kubernetes. Quản trị viên cụm cũng có thể định cấu hình hành vi thực thi bằng cách sử dụng Chính sách bảo mật nhóm.

5. Làm cho ứng dụng dễ theo dõi

Giống như ghi nhật ký, giám sát là một phần không thể thiếu trong quản lý ứng dụng. Một giải pháp giám sát phổ biến trong cộng đồng Kubernetes là Prometheus - một hệ thống tự động phát hiện các nhóm và dịch vụ cần giám sát. (Ghi chú. bản dịch.: Xem thêm của chúng tôi báo cáo chi tiết về chủ đề giám sát bằng Prometheus và Kubernetes.) ngăn xếp có khả năng giám sát các cụm Kubernetes và bao gồm phiên bản Prometheus riêng để giám sát ứng dụng.

7 phương pháp hay nhất để sử dụng vùng chứa theo Google
Bảng điều khiển Kubernetes trên Stackdriver

Prometheus mong muốn ứng dụng chuyển tiếp số liệu đến điểm cuối HTTP. Có sẵn cho việc này Thư viện khách hàng Prometheus. Định dạng tương tự được sử dụng bởi các công cụ khác như Điều tra dân số mở и Istio.

6. Cung cấp trạng thái sức khỏe của ứng dụng

Quản lý ứng dụng trong sản xuất được hỗ trợ bởi khả năng truyền đạt trạng thái của nó tới toàn bộ hệ thống. Ứng dụng có đang chạy không? Như thế có ổn không? Bạn đã sẵn sàng để nhận được lưu lượng truy cập? Anh ấy cư xử thế nào? Cách phổ biến nhất để giải quyết vấn đề này là thực hiện kiểm tra sức khỏe (kiểm tra sức khoẻ). Kubernetes có hai loại: thăm dò sự sống động và sẵn sàng.

Đối với thăm dò sự sống (kiểm tra sức sống) ứng dụng phải có điểm cuối HTTP trả về phản hồi "200 OK" nếu nó hoạt động và các phụ thuộc cơ bản của nó được đáp ứng. Để thăm dò sự sẵn sàng (kiểm tra mức độ sẵn sàng của dịch vụ) ứng dụng phải có một điểm cuối HTTP khác trả về phản hồi "200 OK" nếu ứng dụng ở trạng thái hoạt động tốt, các bước khởi tạo đã được hoàn thành và mọi yêu cầu hợp lệ đều không dẫn đến lỗi. Kubernetes sẽ chỉ định tuyến lưu lượng truy cập đến vùng chứa nếu ứng dụng đã sẵn sàng theo các bước kiểm tra này. Hai điểm cuối có thể được hợp nhất nếu không có sự khác biệt giữa trạng thái sẵn sàng và trạng thái hoạt động.

Bạn có thể đọc thêm về điều này trong bài viết liên quan của Sandeep Dinesh, Người ủng hộ nhà phát triển từ Google: “Các phương pháp hay nhất của Kubernetes: Thiết lập kiểm tra tình trạng bằng các thăm dò mức độ sẵn sàng và hoạt động'.

7. Chọn phiên bản hình ảnh của bạn một cách cẩn thận

Hầu hết các hình ảnh công khai và riêng tư đều sử dụng hệ thống gắn thẻ tương tự như hệ thống được mô tả trong Các phương pháp hay nhất để xây dựng vùng chứa. Nếu hình ảnh sử dụng một hệ thống gần phiên bản ngữ nghĩa, cần phải tính đến các chi tiết cụ thể của việc gắn thẻ. Ví dụ: gắn thẻ latest có thể di chuyển thường xuyên từ hình ảnh này sang hình ảnh khác - không thể dựa vào nếu bạn cần các bản dựng và cài đặt có thể dự đoán và lặp lại.

Bạn có thể sử dụng thẻ X.Y.Z (chúng hầu như không thay đổi), nhưng trong trường hợp này, hãy theo dõi tất cả các bản vá và cập nhật cho hình ảnh. Nếu hình ảnh bạn đang sử dụng có thẻ X.Y, đây là một lựa chọn tốt cho ý nghĩa vàng. Bằng cách chọn nó, bạn sẽ tự động nhận được các bản vá, đồng thời dựa vào phiên bản ổn định của ứng dụng.

Tái bút từ người dịch

Đọc thêm trên blog của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét