arrow_back

빌드팩으로 컨테이너화된 애플리케이션 만들기

로그인 가입
700개 이상의 실습 및 과정 이용하기

빌드팩으로 컨테이너화된 애플리케이션 만들기

실습 1시간 universal_currency_alt 크레딧 5개 show_chart 입문
info 이 실습에는 학습을 지원하는 AI 도구가 통합되어 있을 수 있습니다.
700개 이상의 실습 및 과정 이용하기

개요

빌드팩은 컨테이너 이미지를 빌드하는 또 다른 접근방식이며 소스 코드를 컨테이너 이미지로 변환하는 대체 접근방식을 제공합니다. 빌드팩은 빌더라고 부르는 이미지로 배포 및 실행됩니다. 각 빌더에는 하나 이상의 빌드팩이 있을 수 있습니다. 빌더는 소스 코드를 컨테이너 이미지로 변환합니다. 빌드팩은 Cloud Run에 배포하거나 로컬에서 Docker로 실행할 수 있는 컨테이너 이미지를 빌드하고 패키징하는 실제 작업을 수행합니다.

자체 빌드팩을 만들거나 여러 공급업체에서 제공하는 빌드팩을 사용할 수 있습니다. Google Cloud 빌드팩을 사용하면 개발자가 로컬에 Docker를 설치하거나 Dockerfile을 만들지 않고도 컨테이너화된 애플리케이션을 만들고 배포할 수 있습니다. 또한 소스 기반 배포 워크플로를 지원하기 위해 빌드팩이 Cloud Run에 기본 제공됩니다.

목표

이 실습에서 학습할 내용은 다음과 같습니다.

  • 빌더와 함께 사용하여 소스 코드에서 컨테이너 이미지를 만드는 명령줄 도구인 pack으로 애플리케이션을 빌드합니다.
  • Google Cloud의 빌드팩 빌더를 사용하여 컨테이너 이미지를 빌드합니다.
  • Docker를 사용하여 로컬로 컨테이너를 실행하고 테스트합니다.
  • 컨테이너를 빌드하고 Cloud Run에 다시 배포합니다.

설정

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Qwiklabs에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다.
    일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
    다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

Google Cloud Shell 활성화하기

Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.

Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.

  1. Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.

    강조 표시된 Cloud Shell 아이콘

  2. 계속을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:

Cloud Shell 터미널에 강조 표시된 프로젝트 ID

gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.

  • 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
gcloud auth list

출력:

Credentialed accounts: - @.com (active)

출력 예시:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
gcloud config list project

출력:

[core] project =

출력 예시:

[core] project = qwiklabs-gcp-44776a13dea667a6 참고: gcloud 전체 문서는 gcloud CLI 개요 가이드를 참조하세요.

작업 1. 환경 및 프로젝트 구성

이 작업에서는 환경 변수를 설정하고 Cloud Shell 환경을 구성합니다.

Cloud Shell 환경 구성

  1. Cloud Shell에서 프로젝트 ID 및 리전 환경 변수를 설정하려면 다음 명령어를 실행합니다.

    PROJECT_ID=$(gcloud config get-value project) REGION={{{project_0.default_region|us-central1}}}
  2. Cloud Shell에서 컴퓨팅 리전을 설정합니다.

    gcloud config set compute/region $REGION

Google API 사용 설정

  • Cloud Run과 이 실습의 뒷부분에서 사용할 Google Translate API를 사용하려면 프로젝트에 관련 API를 사용 설정합니다.

    gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 사용 설정된 Google API

작업 2. Docker로 애플리케이션 빌드 및 실행

이 작업에서는 pack 명령줄 도구와 Google Cloud 빌드팩 빌더를 사용하여 샘플 애플리케이션을 빌드합니다.

애플리케이션 개발

  1. app 디렉터리를 만들고 해당 디렉터리로 변경합니다.

    mkdir app && cd app
  2. Cloud Storage에서 이 실습의 샘플 python 애플리케이션을 복사하고 보관 파일에서 콘텐츠를 추출합니다.

    gcloud storage cp gs://cloud-training/CBL513/sample-apps/sample-py-app.zip . && unzip sample-py-app
  3. 샘플 애플리케이션 파일 및 소스 코드를 확인합니다.

    ls sample-py-app cat sample-py-app/main.py Python 빌드팩은 애플리케이션의 기본 컨테이너 진입점을 생성하지 않으므로 Procfile을 사용하여 애플리케이션의 시작 명령어를 구성합니다.

    애플리케이션은 Python으로 작성되었으며 애플리케이션에 대한 요청에 응답하여 샘플 환영 메시지를 반환합니다.

컨테이너 빌드

  1. 샘플 애플리케이션 디렉터리로 변경합니다.

    cd sample-py-app
  2. 컨테이너를 빌드하려면 pack을 실행합니다.

    pack build --builder=gcr.io/buildpacks/builder sample-py-app

    부분 출력은 다음과 비슷합니다.

    ... ... [exporter] Setting default process type 'web' [exporter] Saving sample-py-app... [exporter] *** Images (9f9f9a48fd46): [exporter] sample-py-app [exporter] Adding cache layer 'google.python.pip:pip' [exporter] Adding cache layer 'google.python.pip:pipcache' Successfully built image sample-py-app 참고: pack를 사용하면 컨테이너 이미지를 빌드하기 위해 Dockerfile을 작성하고 제공할 필요가 없습니다.
  3. Cloud Shell 호스트에서 다운로드하고 빌드한 이미지를 보려면 다음을 실행합니다.

    docker images REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/buildpacks/builder latest 514fb6f1bbfe 29 hours ago 804MB gcr.io/buildpacks/gcp/run v1 22db1b5e48e3 29 hours ago 177MB buildpacksio/lifecycle 0.16.0 67e021546a3f 43 years ago 30.5MB sample-py-app latest 9f9f9a48fd46 43 years ago 571MB
  4. PORT 환경 변수를 애플리케이션에 전달하고 호스트의 포트 8080을 컨테이너 포트에 바인딩하여 Docker에서 컨테이너를 로컬로 실행합니다.

    docker run -it -e PORT=8080 -p 8080:8080 -d sample-py-app 애플리케이션 코드는 환경 변수에 제공된 포트(이 경우 포트 8080)에서 수신 대기합니다.
  5. curl 명령어를 사용하여 컨테이너화된 애플리케이션을 테스트합니다.

    curl http://localhost:8080/

    다음과 같은 메시지가 응답으로 표시됩니다.

    Welcome to this sample app, built with Buildpacks.

작업 3. Cloud Run에서 애플리케이션 빌드 및 실행

일반적으로 개발 및 배포 수명 주기의 다음 단계로 이전 작업에서 빌드한 컨테이너 이미지를 Artifact Registry에 푸시한 다음 Google Kubernetes Engine 또는 Cloud Run과 같은 컨테이너 기반 환경에 이미지를 배포해야 합니다.

이 작업에서는 샘플 애플리케이션 코드를 수정한 다음 Cloud Run을 사용하여 소스에서 직접 컨테이너화된 애플리케이션을 빌드하고 배포합니다.

애플리케이션 코드 수정

샘플 애플리케이션 코드를 수정하여 영어 텍스트를 스페인어로 번역하는 Google Translation API를 사용합니다.

  1. 원하는 편집기(예: vi 또는 nano)로 main.py 파일을 편집합니다. Cloud Shell 메뉴에서 편집기 열기를 클릭하여 파일을 편집할 수도 있습니다.

  2. main.py 파일의 전체 콘텐츠를 아래 코드로 바꿉니다.

    from flask import Flask, request import google.auth from google.cloud import translate app = Flask(__name__) _, PROJECT_ID = google.auth.default() TRANSLATE = translate.TranslationServiceClient() PARENT = 'projects/{}'.format(PROJECT_ID) SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish') @app.route('/', methods=['GET', 'POST']) def index(): # reset all variables text = translated = None if request.method == 'POST': text = request.get_json().get('text').strip() if text: data = { 'contents': [text], 'parent': PARENT, 'target_language_code': TARGET[0], } # handle older call for backwards-compatibility try: rsp = TRANSLATE.translate_text(request=data) except TypeError: rsp = TRANSLATE.translate_text(**data) translated = rsp.translations[0].translated_text # create context context = { 'trtext': translated } return context if __name__ == "__main__": # Dev only: run "python main.py" and open http://localhost:8080 import os app.run(host="localhost", port=int(os.environ.get('PORT', 8080)), debug=True) 애플리케이션 코드는 Google Translate API를 사용하여 JSON 요청으로 전달된 텍스트를 영어에서 스페인어로 번역합니다.

컨테이너 빌드 및 배포

  1. Cloud Run에 컨테이너를 빌드하고 배포하려면 다음 명령어를 실행합니다.

    gcloud run deploy sample-py-app --source . --region=${REGION} --allow-unauthenticated allow-unauthenticated 옵션을 사용하면 인증 없이 서비스에 액세스할 수 있습니다.
  2. 메시지가 표시되면 Y를 입력하여 컨테이너 이미지를 저장하기 위해 Artifact Registry에 생성된 기본 저장소를 수락합니다.

  3. 명령어가 완료되면 sample-py-app이라는 이름의 Cloud Run 서비스가 생성됩니다.

    명령어 출력은 다음과 비슷합니다.

    Building using Buildpacks and deploying container to Cloud Run service [sample-py-app] in project [qwiklabs-gcp-00-0d56d42aca1a] region [asia-east1] OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/8bea2ded-4745-41f9-a82d-128e409daa20?project=34240880885]. OK Creating Revision... OK Routing traffic... OK Setting IAM Policy... Done. Service [sample-py-app] revision [sample-py-app-00001-nec] has been deployed and is serving 100 percent of traffic. Service URL: https://sample-py-app-ulvp7xw3bq-de.a.run.app

Cloud Run 서비스 테스트

  1. 이전 단계에서 만든 Cloud Run 서비스의 환경 변수를 설정합니다.

    SERVICE_URL=$(gcloud run services describe sample-py-app --region=${REGION} --format="value(status.url)"); echo $SERVICE_URL
  2. 서비스를 테스트하려면 curl 명령어를 실행합니다.

    curl $SERVICE_URL -H 'Content-Type: application/json' -d '{"text" : "Welcome to this sample app, built with Google Cloud buildpacks."}'

    서비스가 번역된 텍스트로 응답합니다.

    {"trtext":"Bienvenido a esta aplicaci\u00f3n de muestra, creada con paquetes de compilaci\u00f3n de Google Cloud."}

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Cloud Run에 애플리케이션 배포

수고하셨습니다

이 실습에서는 pack 명령어와 Google Cloud의 빌드팩 빌더를 사용하여 샘플 Python 애플리케이션의 컨테이너 이미지를 빌드하는 애플리케이션을 빌드했습니다. 먼저 Docker를 사용하여 컨테이너를 로컬에서 실행하고 테스트한 다음 컨테이너를 다시 빌드하고 Cloud Run에 배포했습니다.

다음 단계/자세히 알아보기

자세한 내용은 다음 문서를 참조하세요.

GKE, Anthos, Container-Optimized OS와 같은 다양한 컨테이너 플랫폼을 위한 Google Cloud 빌드팩에 대해 알아봅니다.

Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.

시작하기 전에

  1. 실습에서는 정해진 기간 동안 Google Cloud 프로젝트와 리소스를 만듭니다.
  2. 실습에는 시간 제한이 있으며 일시중지 기능이 없습니다. 실습을 종료하면 처음부터 다시 시작해야 합니다.
  3. 화면 왼쪽 상단에서 실습 시작을 클릭하여 시작합니다.

시크릿 브라우징 사용

  1. 실습에 입력한 사용자 이름비밀번호를 복사합니다.
  2. 비공개 모드에서 콘솔 열기를 클릭합니다.

콘솔에 로그인

    실습 사용자 인증 정보를 사용하여
  1. 로그인합니다. 다른 사용자 인증 정보를 사용하면 오류가 발생하거나 요금이 부과될 수 있습니다.
  2. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
  3. 실습을 완료했거나 다시 시작하려고 하는 경우가 아니면 실습 종료를 클릭하지 마세요. 이 버튼을 클릭하면 작업 내용이 지워지고 프로젝트가 삭제됩니다.

현재 이 콘텐츠를 이용할 수 없습니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

감사합니다

이용할 수 있게 되면 이메일로 알려드리겠습니다.

한 번에 실습 1개만 가능

모든 기존 실습을 종료하고 이 실습을 시작할지 확인하세요.

시크릿 브라우징을 사용하여 실습 실행하기

이 실습을 실행하려면 시크릿 모드 또는 시크릿 브라우저 창을 사용하세요. 개인 계정과 학생 계정 간의 충돌로 개인 계정에 추가 요금이 발생하는 일을 방지해 줍니다.