將每個實例的憑證取得到 docker 實例中

將每個實例的憑證取得到 docker 實例中

我正在努力運行一個基於 docker 的分散式任務系統,我遇到的主要癥結是如何取得每個 docker 虛擬機器的憑證。

基本上,每個實例都需要有一個唯一的名稱和密碼/SSL 憑證。然後它在啟動時連接回主目錄,並開始處理任務。

建立實例相當簡單,但是將憑證注入每個實例的好方法是什麼?普遍的共識似乎是“使用環境變數”,但使用 500 多個字元的環境變數(例如整個 SSL 憑證)似乎很粗糙。

現在,我嘗試打包的應用程式使用一個簡單的 JSON 檔案進行配置。有沒有什麼方法可以在運行時將文件添加到 docker 實例,或類似的東西?也許最後一個建置步驟需要參數化定義的檔案?

答案1

您可以新增 Docker 卷,並在每個容器的基礎上將其指向主機上包含所需 SSL 憑證的資料夾。您甚至可以製作“單一文件”磁碟區。

docker run -d \
    --name=worker0 \
    -v "/etc/ssl/worker0.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker0.key":/etc/ssl/private/container.key \
    myworkerimage

docker run -d \
    --name=worker1 \
    -v "/etc/ssl/worker1.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker1.key":/etc/ssl/private/container.key \
    myworkerimage

然後,無論您使用什麼來啟動工作程序、bash 腳本、ansible 等,都可以在主機上選擇正確的證書,但在每個啟動的容器內,情況是相同的(證書始終位於同一路徑中)。

您可能希望將這些「文件卷」設定為唯讀卷,以:ro反映它們是靜態配置,而不是容器預期或應該能夠更改的內容。

相關內容