Skip to content
All writing Part 06 of 06 · 一張遷移單背後的 PKI 與 TLS
Engineering · 1 min read

把憑證送進 Pod:兩段式部署渲染

憑證怎麼從機密儲存服務跑到運行中服務的磁碟上:在部署階段做兩段式渲染,而不是運行時去打機密服務。等應用啟動,憑證早就是一個檔案了。

憑證放在一個機密儲存服務(Vault)裡(這種服務專門集中保管金鑰、憑證這類機密)。問題是它們怎麼從那裡跑到正在運行的服務磁碟上。答案是在部署階段做兩段式渲染,而不是服務運行時去打那個機密服務:

  1. 拉出來、內嵌階段。 部署當下,一段模板用部署身分把憑證從機密服務裡讀出來,直接把憑證內容貼進部署設定裡。
  2. 打包階段。 一個部署工具把那份設定變成叢集內的一個機密物件,再把它掛成目錄裡的普通檔案(例如 /…/config/certs)。應用程式就從那裡讀純檔案。
部署階段(兩段式渲染) 運行階段 機密儲存 Vault 拉出來、內嵌 部署身分 掛成檔案 /config/certs Pod 讀磁碟 運行中的服務從不去打 Vault
等應用程式啟動時,憑證早就是磁碟上的一個檔案了:機密服務已經不在畫面裡,而且負責讀取的是部署身分,不是應用程式。

有幾點值得釘清楚:

  • 運行中的服務從頭到尾沒跟機密服務講過話。 等應用程式啟動時,憑證早就是磁碟上的一個檔案了,機密服務已經不在畫面裡。
  • 負責讀取的是部署身分,不是應用程式。 是部署階段的角色去讀,不是服務運行時自己的角色。
  • 不同憑證按用途來自不同簽發者。 對外入口用的是公開、自動續期的憑證;內部服務對服務用的,則是一個內部私有簽發者(定期輪替、有硬性到期日)。
  • 機器登入機密服務有兩種樣子。 一種是「一個穩定的帳號 ID,加一個用時才發的密鑰」;另一種是把登入綁在服務的叢集身分上。

這次遷移裡: 這次部署沿用了一個更早的服務的做法,用一段設定從機密服務讀出三個憑證檔(root_cacertificateprivate_key)再掛上去。負責讀的是部署身分,不是應用程式自己的角色。

服務不會自己去拿機密,是部署早就把它放到磁碟上了。


參考來源

延伸閱讀: 它掛上去的三個檔案就是憑證三件套,而對外入口那張憑證也是用同樣的方式自動化的(Ingress 憑證終結)。回到總覽:一張遷移單背後的兩個 SSL

Tags #tls #kubernetes
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration