我們正在嘗試找到一種方法來定期為我們的 K8s 叢集提供系統安全補丁,以確保我們的系統安全並滿足安全要求。
我們的 K8s 叢集運行在不同的雲端中,AWS、Azure、裸機等。
對於雲,我們可以更改 IAM 映像以更新到最新版本、取代舊映像、啟動新節點並排出舊節點。對於裸機,我們需要排空舊節點,然後修補,然後將它們加回。
不確定是否有其他方法可以自動執行此操作。我們不想每個月在每個雲端都做這項工作。也許有更好的解決方案?
答案1
HashiCorp 的 Packer 是一款用於自動建立機器映像的免費工具。
Packer 可以為不同的雲端建立機器映像,包括 AWS、Azure 和 VMware 等自架虛擬化平台。
使用 Packer,您可以使用已發佈的參考機(例如 Amazon 發佈的 AMI),自動安裝修補程式、更新和任何自訂配置,然後將修補後的映像發佈回您的雲端平台以供使用。
Packer 也可用於將標準設定管理工具植入雲端映像中。例如,執行 ansible 或 puppet 運行,和/或烘焙必要的配置,以便在執行個體啟動時執行這些配置。
Terraform(免費提供)也由 HashiCorp 提供,可讓您自動配置運算平台(例如 AWS/Azure/VMware),進而自動更新配置。
如果您希望部署或更新正在執行的 Kubernetes 叢集中的節點所使用的 AMI,您可以透過使用 Terraform 建立指向新 Packer 建置的映像的新啟動配置來實現此目的。
一種可能減少工作量的方法是修改實例群組的啟動腳本(雲端初始化/用戶資料),在啟動時執行類似「yum update」的操作。這樣,您就可以使用預製映像,並且只需在每次發布這些映像時將 AMI ID 更新到最新版本。這可能可以使用 Terraform 來完成。