Golden image란?
골든 이미지는 OS 영역을 포함해 필수 패키지가 설치된 일종의 표준 이미지 개념입니다.
- 장점
- 공통 부분을 미리(패키징) 해둠으로써 인스턴스 프로비저닝 시간을 최소화함
- 새 이미지로부터 새로운 객체들을 생성하기 때문에 보안 관점에서도 좋음.
- 단점
- 주기적인 이미지를 다시 만들어야하는 번거로움 예시로, 설치된 패키지 중 특정 버전에 취약점이 발견 시 해당 패키지가 업데이트된 이미지를 다시 만들어 줘야한다.
- 더 큰 문제는 이미지를 생성한 이후의 작업(테스트,공유)들도 덩달아 공수를 유발한다는 것 또한 부담이다.
Golden image 즉 AMI를 최신 상태로 유지하기 위해 인스턴스 업데이트 및 스냅샷 생성 작업을 수동으로 수행하거나 이미지를 유지 관리하는 자동화 스크립트를 빌드해야하는데, 이 과정은 시간 소모적이고 리소스 집약적이며 오류가 발생하기 쉽습니다.
그래서 이 과정을 자동화된 빌드 파이프라인을 사용하여 OS 이미지를 더 쉽고 빠르게 빌드하고 유지 관리할 수 있는 서비스를 알아보려합니다.
비교 대상
- packer
- AWS Image Builder
packer란?
“하나의 설정 소스로 여러 플랫폼 머신/컨테이너 이미지를 만드는 도구”, 가상 머신 이미지를 만들어주는 오픈 소스라고 생각하면된다.
크게 말해서 IaC(Infrastructure As a Code) 중 Provisioning 도구, 세분화해서 보면 이미지 빌드 도구라고 보면 된다.
가상 머신의 특정 상태를 저장하는 방법을 사용하지 않고, 이미지 생성 과정에 대한 모든 정보를 코드로 관리한다.
사용하는 이유
- 빠른 인프라 배포 수초 안에 Packer로 만든 이미지를 사용하여 Terraform으로 배포하게되면 몇초 안에 빠르게 배포 할 수 있다.
- 다중 환경에 대한 이식성 함수와 다양한 변수, 실행 옵션 등을 활용해서 다양한 환경에 맞는 수준 높은 자동화를 구성할 수 있다. AWS뿐만 아니라 여러 Provider에서 사용 가능하다.
- 안정성 향상 Packer에서 설치 및 구성한 안정적인 이미지에서 인스턴스를 프로비저닝하면 버그가 있는 소프트웨어가 배포되지않으므로 안정성이 향상된다.
- 개발/프로덕션 환경의 동등성 여러 플랫폼에 대해 이미지를 동시에 생성하여 개발, 스테이징 및 프로덕션 환경을 최대한 비슷하게 유지 할 수 있다.
- 안정적인 Continuous Delivery 여러 플랫폼에 대한 새 시스템 이미지를 생성 한 후, 시작 및 테스트하여 인프라 변경에 대한 작동을 잘 하는지 확인을 한 후 Terraform을 사용하여 프로덕션 환경에서 이미지로 사용할 수 있다.
- 데모 생성 지속적으로 변화하는 소프트웨어 및 소프트웨어 어플라이언스 또는 일회용 프로덕션 데모를 빠르게 만들 수 있다.
AWS EC2 Image Builder란?
19년도에 출시된 서비스로 AMI를 관리하고 구축하는 도구로 “이미지를 안전하고 최신 상태로 유지하기 위해 자동화된 파이프라인"이라고 표현한다.
AWS 또는 온프레미스에서 사용하기 위해 가상 머신 및 컨테이너 이미지의 구축, 테스트 및 배포를 간소화한다.
Image Builder를 사용하면 간단한 그래픽 인터페이스, 기본 자동화 및 AWS 제공 보안 설정을 통해 이미지를 최신 상태로 유지하는 작업들을 수동으로 진행하거나 자체 자동화 파이프 라인을 구축하지 않아도된다.
이미지를 생성, 저장 및 공유하는 데 사용되는 기본 AWS 리소스 비용 외에는 무료로 제공된다.
사용하는 이유
- IT 생산성 향상
- 보다 간편한 보안 유지 필수 구성 요소만으로 이미지를 만들 수 있어 보안 취약점 노출을 줄일 수 있다. 보안 패치가 제공되면 자동으로 패치한다. AWS 제공 보안 정책 또는 사용자 지정 보안 정책을 이미지에 적용할 수 있다.
- 가상 머신 및 컨테이너 이미지 모두를 구축하고 테스트하기 위한 일관된 워크플로우 공통 워크 플로우를 사용하여 한 곳에서 최신 가상 머신 및 컨테이너 이미지를 구축하고 보안하며 테스트하는 위치를 제공
- 기본 제공 검증 지원 이미지를 사용하기 전에 AWS 제공 테스트 및 자체 테스트를 통해 이미지의 기능, 호환성 및 보안 규정 준수 여부를 쉽게 검증할 수 있다.
- AWS 계정에서 이미지 공유 간소화 AWS Resource Access Manager, AWS Organizations 및 Amazon ECR과 통합하여 AWS 계정에서 자동화 스크립트, 레시피 및 이미지를 공유할 수 있다.
비교
재사용성
Packer는 AWS의 AMI 뿐만아니라 다양한 클라우드 서비스를 위한 이미지를 생성 할 수 있지만, AWS EC2 Image Builder는 당연하겠지만 AWS만 지원한다.
테스트/검증
AWS EC2 Image Builder는 빌드 프로세스에서 테스트를 통합 할 수 있다. 테스트 프레임워크를 사용하면 AWS 리전에 배포하기 전에 OS 업데이트로 인해 발생하는 비호환성을 파악할 수 있다. AWS 제공 테스트 및 자체 테스트를 모두 실행하여 테스트 진행 시 테스트 실행, 결과 및 게이트 다운스트림 작업을 관리할 수 있다.
Packer는 Codepipeline에서 추가 단계를 설정해야된다.
OS 지원
EC2 Image Builder는 SSM을 사용하여 모든 명령을 실행하므로 이 기본 AMI에 SSM 에이전트가 설치되어 있어야 하지만, Packer는 모든 주요 Linux 기본 AMI를 사용할 수 있으며 SSH/WinRM을 사용하여 실행 중인 인스턴스와 통신한다.
디버깅
Packer는 콘솔에 모든 로그를 출력한다. –debug 플래그를 사용하여 더 많은 로깅을 활성화 시킬 수 있다.
EC2 Image Builder는 Cloudwatch Logs에서 파이프라인 프로세스의 모든 로깅을 출력한다. 이를 통해 여러 실행에 대한 로그도 확인이 가능하고, 필터링을 사용하여 트리거를 추가할 수 있다.
자료의 양
두 가지를 조사하고 간단하게 AMI를 만들어보면서 참고할 자료의 양이 Packer가 훨씬 많았다. AWS EC2 Image Builder 경우 공식 문서 외엔 거의 참고 할 자료가 없고, 공식 문서 또한 없는 정보들이 많다.
reference
https://www.europeclouds.com/blog/building-amis-packer-and-image-builder
https://docs.aws.amazon.com/ko_kr/imagebuilder/latest/userguide/what-is-image-builder.html