SSH 접속 없이, 컨테이너 이미지 업데이트로 배포 자동화!
$100/월 VPS를 폐기하고, Tinkerbell을 통해 컨테이너 기반의 저비용 서버 구축
Fedora CoreOS, Ignition, Podman Quadlets을 활용하여 서버 설정 자동화
Terraform을 사용하여 인프라 프로비저닝(Provisioning) 자동화
Podman auto-updates를 통해 컨테이너 이미지 업데이트 자동화 및 SSH 접속 필요성 제거
불변 인프라(Immutable Infrastructure) 구축
저자는 기존의 수동적인 서버 관리 방식에서 벗어나, CoreOS와 Ignition을 활용하여 불변 인프라를 구축했다. Ignition은 최초 부팅 시 VM을 프로비저닝(Provisioning)하며, 이후 변경 사항은 VM을 교체하는 방식으로 관리한다. 이러한 접근 방식은 Ansible과 같은 구성 관리 도구의 복잡성을 줄이고, 시스템의 일관성을 유지하는 데 기여한다. 결과적으로, 서버의 상태를 코드화하여 관리하는 IaC(Infrastructure as Code) 원칙을 따르는 것이다.
Podman Quadlets을 활용한 컨테이너 오케스트레이션(Orchestration)
저자는 Podman Quadlets을 사용하여 Docker Compose와 유사한 방식으로 컨테이너를 관리한다. Quadlet은 시스템d(systemd) 설정 파일을 기반으로 컨테이너를 정의하고, 시스템d가 컨테이너를 관리하도록 한다. 이를 통해, 개발자는 컨테이너의 실행 및 관리를 위한 복잡한 스크립트 작성 대신, 선언적인 방식으로 컨테이너를 정의할 수 있다. 특히, Podman auto-updates 기능을 통해 컨테이너 이미지 자동 업데이트를 구현하여, SSH 접속 없이도 배포를 자동화했다.
Terraform을 이용한 인프라 프로비저닝(Provisioning)
저자는 Terraform을 사용하여 Vultr VM을 프로비저닝(Provisioning)하고, Ignition 설정을 VM에 주입했다. Terraform은 인프라를 코드화하여 관리하고, 변경 사항을 쉽게 적용할 수 있도록 돕는다. 이를 통해, 서버 인프라의 구축 및 관리를 자동화하고, 일관성을 유지할 수 있다. Vultr API와의 연동을 통해, VM 생성, 설정, 삭제를 자동화하여, 인프라 관리의 효율성을 높였다.
배포 자동화 및 SSH 접속 제거
저자는 Podman auto-updates 기능을 활용하여 컨테이너 이미지 업데이트를 자동화하고, SSH 접속의 필요성을 제거했다. 컨테이너 이미지를 레지스트리에 푸시(Push)하면, Tinkerbell 서버가 자동으로 이미지를 가져와 배포한다. 이러한 방식은 배포 과정을 단순화하고, 서버 관리의 효율성을 높인다. 또한, 서버의 상태를 불변하게 유지하여, 시스템의 안정성을 향상시킨다. 하지만, 시스템의 가시성 확보를 위한 관찰 가능성(Observability) 구축의 필요성을 강조한다.