Điểm:0

postfix container kubernetes - thiết lập bí mật được mã hóa, sơ đồ cấu hình để kết nối db thành công

lá cờ in

Tôi đang cố chạy postfix dưới dạng vùng chứa trong k8s. Vùng chứa bắt đầu (bao gồm cả svc) nhưng bản đồ cấu hình và bí mật của tôi không muốn hoạt động tốt. Tôi đã thử như sau:

  1. thiết lập bản đồ cấu hình với người dùng và mật khẩu ở dạng văn bản rõ ràng KẾT QUẢ: CÔNG TRÌNH postmap -q someuser@localhost mysql:./virtual_mailbox.cf
  2. Mã hóa mật khẩu và tên người dùng bằng base64 (theo hướng dẫn của k8s), đọc các giá trị được mã hóa này vào các biến môi trường của vùng chứa (envFrom:- secretRef: tên: postfix-db-access), hãy thử kết nối với cơ sở dữ liệu bằng bưu điện Đối với kịch bản này, bản đồ cấu hình trông giống như sau:
  1 phiên bản api: v1
  2 loại: ConfigMap
  3 siêu dữ liệu:
  4 tên: postfix-db-configs
  5 không gian tên: máy chủ thư
  6 dữ liệu:
  7 virtual_mailbox.cf: |
  8 người dùng=$(echo ${POSTFIX_USER} | base64 -d)
  9 mật khẩu=$(echo ${POSTFIX_PASS} | base64 -d)
 10 máy chủ = cơ sở dữ liệu.default.svc.cluster.local
 11 dbname=postfix
 12 truy vấn=CHỌN thư TỪ generic_map WHERE local_mail='%s' AND active=1;

KẾT QUẢ: THẤT BẠI. Người dùng '$(echo ${POSTFIX_USER} | base64 -d)' không có quyền truy cập vào cơ sở dữ liệu.

  1. Lưu trữ tên người dùng và mật khẩu cho người dùng postfix ở dạng văn bản rõ ràng trong bí mật như sau:
  1 phiên bản api: v1
  2 loại: Bí mật
  3 siêu dữ liệu:
  4 tên: postfix-db-access
  5 không gian tên: máy chủ thư
  6 loại: Đục
  7 chuỗiDữ liệu:
  8 POSTFIX_USER: Người dùng Postfix
  9 POSTFIX_PASS: một số Mật khẩu

và dòng tương ứng trong bản đồ cấu hình

    người dùng=$(echo ${POSTFIX_USER})

KẾT QUẢ: THẤT BẠI với người dùng 'echo ${POSTFIX_USER}) không có quyền truy cập vào cơ sở dữ liệu'. Yêu cầu không xử lý biến môi trường được đặt chính xác.

Kết nối với cơ sở dữ liệu và truy vấn hoạt động tốt với lệnh mysql -h database.default.svc.cluster.local -u postfix -p -e 'use postfix;CHỌN mail TỪ generic_map WHERE local_mail='someuser@localhost' AND active=1;. Tôi nhận được tất cả các kết quả tôi cần và mong đợi.

Câu hỏi đặt ra là: làm cách nào để thiết lập bí mật và bản đồ cấu hình để quá trình này hoạt động và thiết lập kết nối với cơ sở dữ liệu như dự kiến?

bóng tối

lá cờ in
Có vẻ như bạn đang coi `$(echo ${POSTFIX_USER} | base64 -d)` như thể có một số tập lệnh shell chạy Bản đồ cấu hình, nhưng điều đó hoàn toàn không đúng. Nếu bạn cần xử lý trước tệp đó trước khi sử dụng, bạn sẽ muốn có `initContainer:` và `emptyDir:{}` hoặc ổ đĩa "được chia sẻ" khác giữa initContainer và vùng chứa chính của bạn
realShadow avatar
lá cờ in
@mdaniel cảm ơn. Tôi sẽ tạo một bộ chứa init để thiết lập các tệp này. Điều đó có ý nghĩa bây giờ.
Điểm:1
lá cờ tr

Đây là một câu trả lời wiki cộng đồng được đăng để hiển thị tốt hơn. Hãy mở rộng nó.

Giải pháp khả thi từ @mdaniel:

Để sử dụng các giá trị được xử lý trước cho POSTFIX_USER, POSTFIX_PASS và v.v., bạn có thể sử dụng một thùng chứa ban đầu với Khối lượng, bộ chứa init và bộ chứa ứng dụng chia sẻ.

Thông tin thêm có sẵn trên trang web Kubernetes

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.