Microservices và Cloud là một điều. Mọi người đều nói và viết về. Cá nhân tôi đang suy nghĩ rất nhiều về chủ đề này: Làm thế nào điều này có thể được sử dụng để được hưởng lợi từ? Thách thức có thể là gì? Làm cách nào để tăng tốc độ phát triển hàng ngày này? Và làm thế nào để quản lý tất cả mọi thứ? Một câu hỏi làm tôi bực mình sau vài ngày là "Cách quản lý bí mật trong môi trường Microservice/Cloud?".Làm thế nào để quản lý các bí mật trong môi trường Microservice/Container/Cloud?
Hãy tưởng tượng một công ty có 150 kỹ sư phần mềm và nhiều nhóm khác nhau với nhiều sản phẩm khác nhau. Mỗi đội đều tạo ra một phần mềm và mọi dịch vụ đều cần một lượng bí mật khác nhau (API-Keys, Passwords, SSH-Keys, bất cứ điều gì). Cách "thời trang cũ" là tạo một vài tệp cấu hình theo định dạng ini/yaml/txt và đọc nó. 12 ứng dụng máy tính nói: Làm điều đó cho mỗi vv env.
Env vars có thể được đặt cho mỗi máy và các tệp cấu hình cũng có thể được đặt ở đó. Điều này có tác dụng nếu bạn có một bàn tay đầy đủ các máy và việc triển khai được thực hiện bởi một vài quản trị viên hệ thống. Một trong những quy tắc chung nói: "Đừng lưu trữ bí mật trong một repo Git."
Giờ đây, thế giới mới xuất hiện. Đội ngũ bao giờ chịu trách nhiệm về ứng dụng mà họ tự sản xuất. Chúng phải được triển khai và điều hành bởi nhóm. Vì vậy, công ty chúng tôi đang chuyển sang vùng chứa và cách tự phục vụ (ví dụ: Mesos và Marathon hoặc Kubernetes).
Tất nhiên, Dockerfiles cũng có thể đặt v.v. Và có, bạn có thể ADD tập tin cấu hình của bạn vào container Docker trong xây dựng. Nhưng với điều này, mọi người đều có thể truy cập các bí mật (ví dụ: từ các nhóm khác). Và không ai biết ai sử dụng bí mật này và làm điều gì đó nguy hiểm.
Bạn cũng muốn phiên bản hóa Dockerfiles của mình. Và các ứng dụng bạn muốn chạy trên Marathon cũng phải được phiên bản hóa (Git hoặc bất kỳ thứ gì) cũng như (và được áp dụng bởi REST API). Vậy, nơi lưu trữ và quản lý tất cả bí mật cho vùng chứa/ứng dụng này? Vì với các khung công tác lên lịch như Swarm và Machine (cho Docker), Mesos và Marathon (có thể sử dụng cho Docker) hoặc Kubernetes bạn không biết ứng dụng của bạn sẽ chạy ở đâu. Điều này sẽ được lên lịch trên một số máy. Và hầu hết các công cụ này không có xác thực (theo mặc định, tất nhiên điều này có thể được thêm bởi một proxy Nginx hoặc một cái gì đó).
Một ý tưởng để quản lý bí mật là sử dụng công cụ như Vault. Nhưng tôi chưa bao giờ thấy hỗ trợ "gốc" trong ứng dụng. Điều tương tự cũng áp dụng cho Blackbox. Và tôi không biết cách quản lý cấu hình có thể giải quyết vấn đề này như thế nào. Tôi biết rằng Chef hỗ trợ các thẻ dữ liệu được mã hóa, nhưng không thể sử dụng Chef để thiết lập/xây dựng các thùng chứa Docker.
Làm thế nào để bạn quản lý bí mật trong một nhóm đa env với một số kỹ sư trong môi trường Microservice/Container/Cloud?
Có thể có một "cách cộng đồng" để làm việc này hoặc một tiêu chuẩn ngành làm thế nào để làm điều này? Xin lỗi cho "câu hỏi mở" như vậy. Có vị trí chính xác trong mạng StackOverflow để thảo luận về điều gì đó như thế này không? Hay tôi chỉ sai ở đây? – Andy
Ah, tôi nghĩ rằng tôi đã bỏ lỡ khu rừng cho những cái cây trên cái này. Có rất nhiều tiếng ồn về những gì bạn đang làm như trái ngược với câu hỏi thực tế ở đây. Bạn đang có ý định quản lý bí mật trong microcontainer; bạn có thể dọn dẹp câu hỏi của bạn để nó * rõ ràng *? Một skim ban đầu làm cho nó đọc như nó đã được dựa trên ý kiến. – Makoto
Tôi đồng ý với Makoto ở đây và tôi đôn đốc @Andy để làm rõ câu hỏi của anh ấy. Vì nó đứng bây giờ câu hỏi này _is_ khó làm theo, nhưng tôi nghi ngờ có một câu hỏi hay giấu trong đó. – Chris