防火牆與安全
不需要為 Zenavo 開放任何連接埠
初始化完成後,Zenavo 不會再主動連入你的伺服器。初始化安裝的 Zenavo agent 執行在伺服器上,透過 HTTPS(443 連接埠)向外連線控制面,Zenavo 透過這條連線下發部署、讀取日誌和開啟終端機。因此:
- Kubernetes API(6443):對公開網路關閉。只有伺服器內部的 agent 會用到它。
- SSH(22):只在初始化期間由 Zenavo 控制面使用。之後只允許你管理伺服器的位址存取,或者直接關閉。
80、443 以及(如果你發布了連接埠)30000–32767 需要對所有人開放。伺服器的 防火牆 分頁會從控制面檢查這些連接埠。伺服器必須能透過 HTTPS 存取控制台的位址。
Agent 能做什麼
Agent 使用自己的 Kubernetes 服務帳號,權限僅限 Zenavo 所需:
- 它只管理專案名稱空間(
zv-…)。每個名稱空間都強制執行 Kubernetes Pod 安全標準的 baseline 級別,所以任何工作負載都不能以特權模式執行、使用主機網路或掛載主機目錄。 - 它不能讀取專案名稱空間以外的 Secret 或在其中執行指令,不能修改自己的權限,也不能改動 K3s 的系統元件(可以讀取它們的狀態)。
- 這些限制由 Kubernetes 准入策略強制執行,agent 無法移除它。
Agent 的容器以非 root 使用者執行,檔案系統唯讀。它以唯讀方式掛載一個主機目錄,用於報告 /var/lib/rancher/k3s 的磁碟用量。
Zenavo 儲存什麼
- Agent 權杖的雜湊值。權杖本身只存在於你的伺服器上。
- 一個映像檔儲存庫拉取憑據,只能讀取你團隊的映像檔。
對於正常運作的伺服器,Zenavo 不保存任何 SSH 金鑰、密碼或叢集憑據。你輸入的 SSH 密碼或金鑰由初始化任務使用,初始化成功後立即清除。如果初始化失敗,會加密保留一天,方便你不用重新輸入就能重試,之後再清除。初始化不會向 ~/.ssh/authorized_keys 新增任何內容。
移除伺服器時,Zenavo 會刪除它的 agent 權杖,agent 將無法再連線。K3s、agent 和你的資料仍留在機器上:如果不再需要,在伺服器上執行 /usr/local/bin/k3s-uninstall.sh。
在 agent 之前新增的伺服器
在 agent 出現之前新增的伺服器,是透過 Zenavo 安裝的金鑰用 SSH 存取,並用 K3s 的管理員憑據透過 Kubernetes API 存取的。Zenavo 會自動把它們遷移到 agent:安裝 agent,從 ~/.ssh/authorized_keys 中移除 Zenavo 的金鑰,並刪除儲存的金鑰和憑據。設定 → 連線方式 顯示遷移狀態,也可以立即開始遷移。如果你當初貼上的是自己的私鑰,不再使用的話請自行從伺服器上移除。之後還可以用 k3s certificate rotate 輪換 K3s 的憑證(會重啟 K3s),讓 Zenavo 曾經持有的管理員憑據失效。
建置從不在你的伺服器上執行
Git 建置在 Zenavo 的建置機上執行,建置機無法存取控制面、其他客戶或雲端憑據。你的伺服器只拉取建置好的映像檔,並固定到 digest。