콘텐츠로 이동하기
컨테이너 및 Kubernetes

빌드팩 도입으로 간편해진 컨테이너 이미지 만들기

2020년 11월 12일
https://storage.googleapis.com/gweb-cloudblog-publish/images/GCP_Containers_Kubernetes.max-2600x2600.jpg
Matthew Soldo

Product Manager, Google Workspace Identity

Steren Giannini

Group Product Manager

GCP 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

* 본 아티클의 원문은 2020년 10월 10일 Google Cloud 블로그(영문)에 게재되었습니다. 

새 애플리케이션을 빌드하는 개발자는 코드 컨테이너화가 아닌 코드 작성에 집중하기를 원합니다. 이미 컨테이너를 사용하는 경우에도 양질의 안전한 컨테이너 이미지를 만들기가 복잡하고 시간이 많이 들 수 있습니다. 오늘 Google은 Google Cloud 전반에서 빌드팩에 대한 광범위한 지원을 발표합니다. 빌드팩은 Dockerfile 없이 소스 코드로 프로덕션에 즉시 사용 가능한 안전한 컨테이너 이미지를 쉽고 빠르게 만들 수 있는 오픈소스 기술입니다.

이번 출시의 중심에는 오픈소스 빌드팩 및 빌더 모음이 있습니다. CNCF 빌드팩 v3 사양을 기반으로 한 이 빌드팩은 권장사항을 따르며 Cloud Run(완전 관리형), Anthos, Google Kubernetes Engine(GKE) 등 Google의 모든 컨테이너 플랫폼에서 실행하기에 적합한 컨테이너 이미지를 생성합니다. 이 빌드팩은 프로덕션 강화 및 테스트를 거쳤으며 3월부터 App Engine 및 Cloud Functions의 대다수 빌드에서 규모에 맞춰 사용되었습니다. 

Buildpack 사용

빌드팩은 다양한 방법으로 활용할 수 있습니다. 우선 컨테이너화를 아직 완전히 도입하지 않았다면 빌드팩을 통해 최신 컨테이너 런타임 및 전송 플랫폼을 사용할 수 있습니다. 원시 상태로 찾은 Dockerfile을 적절하게 검사하고 맞춤설정할 시간이 없는 경우 프로젝트를 빠르게 수행하는 데에도 유용합니다.

클릭 몇 번이면 Google Cloud 빌드팩을 사용해 볼 수 있습니다. 빌드팩 샘플 프로젝트를 방문하여 'Google Cloud에서 실행' 버튼 중 하나를 클릭하면 됩니다.

로컬에서 빌드팩을 애플리케이션에 사용해 보려면 Docker’pack’ CLI 도구를 설치한 후 다음 명령어를 실행합니다.

로드 중...

(Go, 자바, Node, Python, .Net이 지원됩니다. 정상적인 빌드를 위해서는 추가 구성이 필요할 수 있습니다.)

설치를 원하지 않는 경우 Cloud Build에서 빌드팩 기반 빌드를 실행하면 Cloud Run에 간편하게 배포할 수 있습니다.

로드 중...

빌드팩은 어떻게 작동하나요?

빌드팩은 빌더라고 부르는 OCI 이미지로 배포 및 실행됩니다. 각 빌더에는 하나 이상의 빌드팩이 있을 수 있습니다. 오늘 출시되는 Google Cloud 빌드팩의 빌더는 gcr.io/buildpacks/builder에서 제공됩니다. 

빌더에는 소스 코드의 언어를 자동으로 감지하는 기능이 있습니다. 빌드팩에서 실행할 수 있는 `bin/detect`를 사용하면 됩니다. 감지 스크립트는 특정한 순서로 호출되며 빌드에 적절한 개수의 빌드팩이 선택되면 중지됩니다. 예를 들어 대부분의 Node.js 빌드팩은 packages.json 파일이 있는지 찾습니다. 사용할 빌드팩을 수동으로 지정하여 자동 감지 단계를 건너뛸 수도 있습니다.

빌드팩이 선택되면 `bin/build`가 실행됩니다. 이 스크립트는 소스 코드를 일반적으로 종속 항목 설치 또는 코드 컴파일 등의 작업을 수행하는 실행 가능한 아티팩트로 변환해 줍니다. 

빌드 단계의 출력이 'run' OCI 기본 이미지 위에 추가되어 선택한 플랫폼에서 실행할 수 있는 최종 컨테이너 이미지를 만듭니다.

Google Cloud 빌드팩

Google Cloud 빌드팩은 보안, 속도, 재사용성에 최적화되어 있습니다. 함수 모두를 컨테이너 이미지로 빌드할 수 있습니다. 함수를 빌드할 때는 Google Cloud의 오픈소스 함수 프레임워크를 사용해 패키지화합니다.

Google Cloud 빌드팩에서 사용하는 관리형 Ubuntu 18.04 기본 이미지는 정기적으로 보안 취약점을 스캔하며 감지된 취약점에 자동으로 패치를 적용합니다. 이를 통해 빌드팩으로 소스 코드를 빌드할 때 최대한의 보안을 보장합니다.

Google Cloud 빌드팩은 추가 시스템 패키지를 사용하거나 개발팀의 특정 니즈에 맞게 맞춤설정할 수도 있습니다. 

빌드팩 자체가 Go로 작성되어 언어마다 빌드팩을 하나씩 만드는 대신 소형 모듈식 빌드팩을 결합할 수 있습니다. 노드 패키지를 설치하는 NPM 빌드팩을 예로 들어 보겠습니다. 이 빌드팩은 Node.js 빌드에 사용되는 것은 물론이고 NPM 패키지(예: Rails의 Ruby)를 사용하는 다른 언어 및 프레임워크에도 사용될 수 있습니다.

Google Cloud의 광범위한 지원

오픈소스 빌드팩 외에도 Google Cloud의 다양한 제품에서 빌드팩을 지원합니다.

  • Cloud Build에서는 현재 gcloud CLI 도구(gcloud alpha builds submit --pack image=gcr.io/[project-id]/my-app)를 통해 빌드팩을 기본적으로 지원합니다(문서 참조).

  • Cloud Run - Cloud Run에 대한 지속적 배포(Cloud Build 트리거 이용)에 빌드팩이 사용되도록 구성할 수 있습니다(문서 참조). 

  • App Engine - 현재 빌드팩은 대부분의 최신 App Engine 런타임에서 소스 배포에 활용되는 기본 메커니즘입니다. 무엇보다도 빌드팩에서 소스 기반 자바 배포를 지원합니다(이전에는 JAR 기반 배포만 지원됨). 앞으로 새로 출시될 모든 런타임에서 빌드팩을 사용할 예정입니다. 

  • Cloud Functions - App Engine과 마찬가지로 빌드팩이 배포된 함수를 빌드하는 기본 메커니즘입니다.

  • Cloud Code - Cloud Code IDE에서 빌드팩으로 소스 코드를 빌드하고 생성된 컨테이너를 직접 GKE에 배포할 수 있습니다. 

  • Skaffold는 빌드팩을 사용한 실시간 개발을 지원합니다. 소스 코드를 수정하면 빌드팩에서 지속적으로 앱을 다시 빌드하여 앱의 로컬 인스턴스에 적용되는 변경사항을 미리 확인할 수 있습니다.

  • Cloud Shell - 이제 pack CLI 도구가 Cloud Shell에 기본적으로 설치됩니다. 덕분에 추가 패키지를 설치하지 않고도 Cloud Shell에서 빌드팩을 실행할 수 있습니다.

Video Thumbnail

지금 시작하기

GitHub 저장소에서 Google Cloud 빌드팩에 대해 자세히 알아보세요. 버튼 하나만 클릭하면 빌드팩을 사용하는 앱 샘플을 배포해 볼 수 있습니다.
게시 위치