私たちは、システムを安全に保ち、セキュリティ要件を満たすために、K8s クラスターにシステム セキュリティ パッチを定期的に適用する方法を模索しています。
当社の K8s クラスターは、AWS、Azure、ベアメタルなどのさまざまなクラウドで実行されています。
クラウドの場合、IAM イメージを変更して最新のものに更新し、古いイメージを置き換え、新しいノードを起動して、古いノードをドレインすることができます。ベアメタルの場合は、古いノードをドレインしてからパッチを適用し、それらを追加し直す必要があります。
これを自動的に行う他の方法があるかどうかはわかりません。各クラウドで毎月この作業を実行するつもりはありません。もっと良い解決策があるかもしれません。
答え1
HashiCorp の Packer は、マシン イメージの作成を自動化する無料ツールです。
Packer は、AWS、Azure、VMware などの自己ホスト型仮想化プラットフォームを含むさまざまなクラウド用のマシン イメージを構築できます。
Packer を使用すると、公開された参照マシン (Amazon が公開した AMI など) を使用し、パッチ、更新、およびカスタム構成のインストールを自動化してから、パッチを適用したイメージをクラウド プラットフォームに公開して、使用準備を整えることができます。
Packer は、クラウド イメージに標準の構成管理ツールを組み込むためにも使用できます。たとえば、Ansible または Puppet を実行したり、インスタンスの起動時にこれらを実行するために必要な構成を組み込んだりできます。
同じく HashiCorp が提供する Terraform (無料で利用可能) を使用すると、AWS/Azure/VMware などのコンピューティング プラットフォームの構成を自動化し、構成を自動的に更新することができます。
実行中の Kubernetes クラスターのノードによって使用される AMI をデプロイまたは更新したい場合は、Terraform を使用して、新しい Packer ビルド イメージを指す新しい起動構成を作成することでこれを実行できる可能性があります。
作業量を削減できる可能性のある方法の 1 つは、インスタンス グループのブート スクリプト (クラウド init/ユーザー データ) を変更して、ブート時に 'yum update' のようなものを実行することです。この方法では、事前に作成されたイメージを使用でき、リリースされるたびに AMI ID を最新バージョンに更新するだけで済みます。これは、Terraform を使用して実行できる可能性があります。