우리는 시스템을 안전하게 유지하고 보안 요구 사항을 충족하기 위해 K8s 클러스터에 대한 시스템 보안 패치를 주기적으로 적용할 수 있는 방법을 찾으려고 노력하고 있습니다.
우리 K8s 클러스터는 AWS, Azure, Bare Metal 등 다양한 클라우드에서 실행되고 있습니다.
클라우드의 경우 IAM 이미지를 변경하여 최신으로 업데이트하고, 이전 이미지를 교체하고, 새 노드를 시작하고, 이전 노드를 비울 수 있습니다. 베어메탈 노드의 경우 이전 노드를 드레이닝한 다음 패치하고 다시 추가해야 합니다.
자동으로 수행하는 다른 방법이 있는지 확실하지 않습니다. 우리는 매달 각 클라우드에서 이 작업을 수행하고 싶지 않습니다. 어쩌면 더 나은 해결책이 있을까요?
답변1
HashiCorp의 Packer는 머신 이미지 생성을 자동화하는 무료 도구입니다.
Packer는 AWS, Azure 및 VMware와 같은 자체 호스팅 가상화 플랫폼을 포함한 다양한 클라우드용 머신 이미지를 구축할 수 있습니다.
Packer를 사용하면 게시된 참조 시스템(예: Amazon 게시 AMI)을 사용하고 패치, 업데이트 및 사용자 지정 구성 설치를 자동화한 후 패치된 이미지를 클라우드 플랫폼에 다시 게시하여 사용할 수 있습니다.
Packer를 사용하여 표준 구성 관리 도구를 클라우드 이미지에 적용할 수도 있습니다. 예를 들어 Ansible 또는 Puppet 실행을 수행하거나 인스턴스가 시작될 때 실행되는 데 필요한 구성을 굽습니다.
역시 HashiCorp에서 제공하는 Terraform(무료로 제공)을 사용하면 AWS/Azure/VMware와 같은 컴퓨팅 플랫폼의 구성을 자동화하여 구성을 자동으로 업데이트할 수 있습니다.
실행 중인 Kubernetes 클러스터의 노드에서 사용하는 AMI를 배포하거나 업데이트하려는 경우 Terraform을 사용하여 새 Packer 빌드 이미지를 가리키는 새 시작 구성을 생성하면 됩니다.
잠재적으로 작업량을 줄일 수 있는 한 가지 방법은 인스턴스 그룹의 부팅 스크립트(클라우드 초기화/사용자 데이터)를 수정하여 부팅 시 'yum update'와 같은 작업을 실행하는 것입니다. 이렇게 하면 미리 만들어진 이미지를 사용할 수 있으며, 이미지가 출시될 때마다 AMI ID를 최신 버전으로 업데이트하기만 하면 됩니다. 이는 Terraform을 사용하여 수행할 수 있습니다.