arrow_back

Google Cloud에 앱 배포

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

Google Cloud에 앱 배포

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

개요

이 실습에서는 애플리케이션을 Google Cloud 서비스인 App Engine, Kubernetes Engine, Cloud Run에 배포합니다.

Google Cloud 서비스인 App Engine, Kubernetes Engine, Cloud Run 아키텍처

목표

이 실습에서는 다음 작업을 실행하는 방법을 알아봅니다.

  • GitHub에서 샘플 앱 다운로드
  • App Engine에 배포
  • Kubernetes Engine에 배포
  • Cloud Run에 배포

실습 환경 설정

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

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

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

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

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

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

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

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

작업 1. 간단한 Python 애플리케이션 만들기

이제 관리할 소스 코드가 필요합니다. 따라서 간단한 Python Flask 웹 애플리케이션을 만들어 보겠습니다. 애플리케이션은 'hello world'보다 약간 더 나은 수준이지만 빌드할 파이프라인을 테스트하기에는 충분합니다.

  1. Cloud 콘솔에서 Cloud Shell 활성화(Cloud Shell 활성화 아이콘)를 클릭합니다.
  2. 메시지가 표시되면 계속을 클릭합니다.

3.9. Cloud Shell에 다음 명령어를 입력하여 gcp-course라는 폴더를 만듭니다.

mkdir gcp-course
  1. 방금 만든 폴더로 변경합니다.
cd gcp-course
  1. deploying-apps-to-gcp라는 폴더를 만듭니다.
mkdir deploying-apps-to-gcp
  1. 방금 만든 폴더로 변경합니다.
cd deploying-apps-to-gcp
  1. Cloud Shell에서 편집기 열기(편집기 아이콘)를 클릭하여 코드 편집기를 엽니다. 메시지가 표시되면 새 창에서 열기를 클릭합니다.
  2. 왼쪽의 탐색기 트리에서 gcp-course > deploying-apps-to-gcp 폴더를 선택합니다.
  3. deploying-apps-to-gcp를 클릭합니다.
  4. 새 파일을 클릭합니다.
  5. 파일 이름을 main.py로 지정하고 Enter 키를 누릅니다.
  6. 다음 코드를 방금 만든 파일에 붙여넣습니다.
from flask import Flask, render_template, request app = Flask(__name__) @app.route("/") def main(): model = {"title": "Hello GCP."} return render_template('index.html', model=model) if __name__ == "__main__": app.run(host='0.0.0.0', port=8080, debug=True, threaded=True)
  1. 변경사항을 저장하려면 Ctrl + S를 누릅니다.
  2. deploying-apps-to-gcp 폴더를 클릭합니다.
  3. 새 폴더를 클릭합니다.
  4. 폴더 이름을 templates로 지정하고 Enter 키를 누릅니다.
  5. templates 폴더를 마우스 오른쪽 버튼으로 클릭하고 layout.html이라는 이름으로 새 파일을 만듭니다.
  6. 다음 코드를 추가하고 이전과 마찬가지로 파일을 저장합니다.
<!doctype html> <html lang="en"> <head> <title>{{model.title}}</title> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> </head> <body> <div class="container"> {% block content %}{% endblock %} <footer></footer> </div> </body> </html>
  1. 또한 templates 폴더에 index.html이라는 새 파일을 추가합니다.

  2. 다음 코드를 추가하고 이전과 마찬가지로 파일을 저장합니다.

{% extends "layout.html" %} {% block content %} <div class="jumbotron"> <div class="container"> <h1>{{model.title}}</h1> </div> </div> {% endblock %}
  1. Python에서 애플리케이션 기본 요건은 pip를 사용하여 관리됩니다. 이제 이 애플리케이션에 대한 요구사항을 나열하는 파일을 추가해 보겠습니다.

  2. deploying-apps-to-gcp 폴더(templates 폴더 아님)에서 새 파일을 만들고 다음을 해당 파일에 추가한 다음 requirements.txt라는 이름으로 저장합니다.

Flask==2.0.3 itsdangerous==2.0.1 Jinja2==3.0.3 werkzeug==2.2.2

작업 2. Docker 빌드 정의하기

Docker를 사용하는 첫 번째 단계는 Dockerfile이라는 파일을 만드는 것입니다. 이 파일은 Docker 컨테이너가 구성되는 방식을 정의합니다. 지금 만들어 보겠습니다.

  1. deploying-apps-to-gcp 폴더에서 새 파일을 클릭하고 새 파일 이름을 Dockerfile로 지정합니다.

Dockerfile 파일은 컨테이너 빌드 방법을 정의하는 데 사용됩니다.

  1. 다음을 추가합니다.
FROM python:3.9 WORKDIR /app COPY . . RUN pip install gunicorn RUN pip install -r requirements.txt ENV PORT=8080 CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 main:app
  1. 프로그램을 테스트하기 위해 다음 명령어를 입력하여 이미지의 Docker 컨테이너를 빌드합니다.
docker build -t test-python .
  1. Docker 이미지를 실행하기 위해 다음 명령어를 입력합니다.
docker run --rm -p 8080:8080 test-python
  1. 프로그램이 실행 중인지 확인하려면 Google Cloud Shell 툴바에서 웹 미리보기(웹 미리보기 아이콘)를 클릭합니다. 그런 다음 포트 8080에서 미리보기를 선택합니다.

새 브라우저 탭에 프로그램이 표시됩니다.

  1. Cloud Shell에서 Ctrl+C를 입력하여 프로그램을 중지합니다.

작업 3. App Engine에 배포하기

App Engine은 완전 자동화된 배포 플랫폼입니다. Python, Java, JavaScript, Go를 비롯하여 많은 언어를 지원합니다. App Engine을 사용하려면 구성 파일을 만들고 몇 가지 간단한 명령어를 사용하여 애플리케이션을 배포합니다. 이 작업에서는 app.yaml이라는 파일을 만들고 이 파일을 App Engine에 배포합니다.

  1. Cloud Shell에서 편집기 열기(Cloud Shell 편집기 아이콘)를 클릭한 다음 필요한 경우 새 창에서 열기를 클릭합니다.
  2. 왼쪽의 탐색기 트리에서 gcp-course/deploying-apps-to-gcp 폴더를 선택합니다.
  3. 새 파일을 클릭하고 파일 이름을 app.yaml로 지정한 다음 Enter 키를 누릅니다.
  4. 다음 내용을 방금 만든 파일에 붙여넣습니다.
runtime: python39
  1. 변경사항을 저장합니다.
참고: app.yaml 파일에 추가할 수 있는 다른 설정이 있지만, 이 경우에는 언어 런타임만 필요합니다.
  1. 프로젝트에 App Engine 애플리케이션을 만들어야 합니다. gcloud app create 명령어를 사용해 앱을 만들고자 하는 리전을 지정하기만 하면 됩니다. 터미널 열기를 클릭하고 다음 명령어를 입력합니다. 메시지가 표시되면 승인을 클릭합니다.
gcloud app create --region={{{project_0.startup_script.app_region| Region}}}
  1. 이제 다음 명령어를 사용하여 앱을 배포합니다.
gcloud app deploy --version=one --quiet 참고: 이 명령어는 완료하는 데 몇 분 정도 걸립니다.
  1. Google Cloud 콘솔 제목 표시줄의 검색창에 App Engine을 입력한 다음, 검색 결과 섹션에서 App Engine을 클릭합니다.

  2. 대시보드 오른쪽 상단에 다음과 비슷한 애플리케이션 링크가 있습니다.

애플리케이션 링크의 예

참고: 기본적으로 App Engine 애플리케이션의 URL은 https://project-id.appspot.com 형식입니다.
  1. 링크를 클릭하여 프로그램을 테스트합니다.

  2. 프로그램에 변경사항을 적용하여 App Engine으로 얼마나 쉽게 버전을 관리할 수 있는지 확인합니다.

  3. 코드 편집기의 왼쪽 탐색창에서 /deploying-apps-to-gcp 폴더를 펼칩니다. 그런 다음, main.py를 클릭하여 파일을 엽니다.

  4. main() 함수에서 아래와 같이 제목을 Hello App Engine으로 변경합니다.

@app.route("/") def main(): model = {"title" "Hello App Engine"} return render_template('index.html', model=model)
  1. 코드 편집기 툴바에서 파일 > 저장을 클릭하여 변경사항을 저장합니다.

  2. 이제 다음 명령어를 사용하여 버전 2를 배포합니다.

gcloud app deploy --version=two --no-promote --quiet 참고: --no-promote 파라미터는 계속 이전 버전에 요청을 제공하도록 App Engine에 알려 줍니다. 이 파라미터를 사용하면 프로덕션에 새 버전을 배포하기 전에 테스트할 수 있습니다.
  1. 명령어가 완료되면 App Engine 대시보드로 돌아갑니다. 링크를 다시 클릭하면 버전 1이 계속 반환됩니다. 버전 1은 Hello GCP를 반환합니다. 이전 명령어에서 --no-promote 파라미터를 사용했기 때문입니다.

  2. 왼쪽에서 버전 탭을 클릭합니다. 두 개의 버전이 목록에 표시됩니다.

참고: 버전 2를 확인하기 위해 새로고침을 클릭해야 할 수도 있습니다.
  1. 버전 2의 링크를 클릭하여 테스트합니다. Hello App Engine이 반환되어야 합니다.

  2. 프로덕션 트래픽을 버전 2로 마이그레이션하려면 상단에서 트래픽 분할을 클릭합니다. 버전을 2로 변경하고 저장을 클릭합니다.

  3. 완료하는 데 1분 정도 걸립니다. 이전에 Hello GCP를 반환했던 브라우저 탭을 새로고침합니다. 이제 새 버전이 반환됩니다.

진행 상황 확인을 클릭하여 목표를 확인합니다. App Engine에 배포하기

작업 4. Cloud Build와 Artifact Registry를 사용하여 Kubernetes Engine에 배포하기

Kubernetes Engine을 사용하면 머신 클러스터를 만들고 여러 애플리케이션을 클러스터에 배포할 수 있습니다. Kubernetes는 머신 관리의 세부정보를 추상화하며 간단한 CLI 명령어를 사용하여 애플리케이션 배포를 자동화할 수 있습니다.

Kubernetes에 애플리케이션을 배포하려면 먼저 클러스터를 만들어야 합니다. 그런 다음 클러스터에 배포할 애플리케이션마다 구성 파일을 추가해야 합니다.

  1. 탐색 메뉴(탐색 메뉴 아이콘)에서 Kubernetes Engine을 클릭합니다. Kubernetes API가 초기화되고 있다는 메시지가 표시되면 완료될 때까지 기다립니다.

  2. 클러스터 만들기를 클릭한 다음 Standard 클러스터로 전환을 클릭하고 Standard 클러스터로 전환을 확인합니다.

  3. 위치 유형에서 영역을 클릭한 다음 영역 을(를) 선택합니다. 다른 모든 변수를 기본값으로 수락한 후 만들기를 클릭합니다. Kubernetes Engine 클러스터가 만들어지는 데 몇 분 정도 걸립니다. 클러스터를 사용할 준비가 되면 녹색 체크표시가 나타납니다.

  4. 클러스터 옆에 표시된 점 3개를 클릭한 다음 연결을 클릭합니다.

  5. 클러스터에 연결 화면에서 Cloud Shell에서 실행을 클릭합니다. 그러면 입력된 연결 명령어를 사용하여 Cloud Shell이 자동으로 열립니다.

  6. Enter를 눌러 클러스터에 연결합니다.

  7. 다음 명령어를 입력하여 연결을 테스트합니다.

kubectl get nodes

이 명령어는 클러스터에 있는 머신을 간단히 표시합니다. 이 명령어가 작동하면 연결이 된 것입니다.

  1. Cloud Shell에서 편집기 열기(Cloud Shell 편집기 아이콘)를 클릭합니다.
  2. 왼쪽의 탐색창에서 gcp-course/deploying-apps-to-gcp 폴더를 펼칩니다. 그런 다음, main.py를 클릭하여 파일을 엽니다.
  3. main() 함수에서 아래와 같이 제목을 Hello Kubernetes Engine으로 변경합니다.
@app.route("/") def main(): model = {"title" "Hello Kubernetes Engine"} return render_template('index.html', model=model)
  1. 변경사항을 저장합니다.
  2. kubernetes-config.yaml 파일을 gcp-course/deploying-apps-to-gcp 폴더에 추가합니다.
  3. 다음 코드를 파일에 붙여넣어 애플리케이션을 구성합니다.
--- apiVersion: apps/v1 kind: Deployment metadata: name: devops-deployment labels: app: devops tier: frontend spec: replicas: 3 selector: matchLabels: app: devops tier: frontend template: metadata: labels: app: devops tier: frontend spec: containers: - name: devops-demo image: <YOUR IMAGE PATH HERE> ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: devops-deployment-lb labels: app: devops tier: frontend-lb spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: devops tier: frontend

참고: 위의 YAML 파일에서 첫 번째 섹션은 배포를 구성하는 부분입니다. 이 경우 Python 웹 앱의 인스턴스 3개를 배포합니다. 이미지 속성에 주목하세요. 이미지를 빌드한 후 곧 이 값을 업데이트하게 됩니다. 두 번째 섹션에서는 '부하 분산기' 유형의 서비스를 구성합니다. 부하 분산기에는 공개 IP 주소가 있어야 합니다. 사용자는 부하 분산기를 통해 애플리케이션에 액세스합니다.

Kubernetes 배포와 서비스에 관한 자세한 내용은 아래 링크를 참고하세요.

  1. Cloud Shell에서 다음 명령어를 입력하여 devops-demo라는 Artifact Registry 저장소를 만듭니다.
gcloud artifacts repositories create devops-demo \ --repository-format=docker \ --location={{{ project_0.default_region | "REGION" }}}
  1. 다음 명령어를 입력하여 Artifact Registry Docker 저장소에 인증하도록 Docker를 구성합니다.
gcloud auth configure-docker {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev
  1. Kubernetes Engine을 사용하려면 Docker 이미지를 빌드해야 합니다. 이미지를 만들고 Artifact Registry에 저장하려면 다음 명령어를 입력하여 Cloud Build를 사용합니다.
cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/devops-image:v0.2 .
  1. 이전 명령어가 완료되면 이미지 이름이 출력에 나열됩니다. 이미지 이름은 -docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2와 같은 형식입니다.

  2. 이미지 이름을 강조 표시하고 클립보드에 복사합니다. kubernetes-config.yaml 파일에 값을 붙여넣어 <YOUR IMAGE PATH HERE> 문자열을 덮어씁니다.

아래와 비슷한 모습이어야 합니다.

spec: containers: - name: devops-demo image: {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/PROJECT_ID/devops-demo/devops-image:v0.2 ports:
  1. 다음 Kubernetes 명령어를 입력하여 애플리케이션을 배포합니다.
kubectl apply -f kubernetes-config.yaml
  1. 구성 파일에 세 개의 애플리케이션 복제본이 지정됩니다. 다음 명령어를 입력하여 세 개의 인스턴스가 만들어졌는지 확인합니다.
kubectl get pods

모든 포드가 사용할 준비가 되었는지 확인합니다. 준비가 되지 않았다면 몇 초간 기다렸다가 다시 시도합니다.

  1. 부하 분산기도 구성 파일에 추가되었습니다. 다음 명령어를 입력하여 부하 분산기가 만들어졌는지 확인합니다.
kubectl get services

아래와 비슷한 모습이어야 합니다.

출력

부하 분산기의 외부 IP 주소가 '대기 중'이면 몇 초간 기다렸다가 다시 시도합니다.

  1. 외부 IP가 있다면 브라우저 탭을 열고 요청합니다. Hello Kubernetes Engine이 반환됩니다. 준비될 때까지 몇 초가 걸릴 수 있습니다.

진행 상황 확인을 클릭하여 목표를 확인합니다. Kubernetes Engine에 배포하기

작업 5. Cloud Run에 배포하기

Cloud Run은 Kubernetes에 배포하는 작업을 간소화하고 자동화합니다. Cloud Run을 사용할 때는 구성 파일이 필요하지 않습니다. 애플리케이션에 사용할 클러스터를 선택하기만 하면 됩니다. Cloud Run을 통해 Google에서 관리하는 클러스터를 사용하거나 자체 Kubernetes 클러스터를 사용할 수 있습니다.

Cloud Run을 사용하려면 애플리케이션이 Docker 이미지를 사용하여 배포되고 스테이트리스(Stateless)여야 합니다.

  1. Cloud Shell 코드 편집기를 열고 왼쪽의 탐색창에서 gcp-course/deploying-apps-to-gcp 폴더를 펼칩니다. 그런 다음, main.py를 클릭하여 파일을 엽니다.
  2. main() 함수에서 아래와 같이 제목을 Hello Cloud Run으로 변경합니다.
@app.route("/") def main(): model = {"title" "Hello Cloud Run"} return render_template('index.html', model=model)
  1. 변경사항을 저장합니다.

  2. Cloud Run을 사용하려면 Docker 이미지를 빌드해야 합니다. 이미지를 만들고 Artifact Registry에 저장하려면 Cloud Shell에서 다음 명령어를 입력하여 Cloud Build를 사용합니다.

cd ~/gcp-course/deploying-apps-to-gcp gcloud builds submit --tag {{{ project_0.default_region | "REGION" }}}-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo/cloud-run-image:v0.1 .
  1. 빌드가 완료되면 Google Cloud 콘솔 제목 표시줄의 검색창에 Cloud Run을 입력한 다음, 제품 및 페이지 섹션에서 Cloud Run을 클릭합니다.

  2. 서비스 만들기를 클릭합니다. 그러면 Cloud Run API가 사용 설정됩니다.

  3. Container image URL 텍스트 상자의 선택 링크를 클릭한 다음, Artifact Registry를 클릭합니다. 표시되는 대화상자에서 Region-docker.pkg.dev/$DEVSHELL_PROJECT_ID/devops-demo > cloud-run-image를 펼치고 나열된 이미지를 선택합니다. 그런 다음 선택을 클릭합니다.

  4. 서비스 이름hello-cloud-run을 입력하고 리전()을 선택합니다.

  5. 인증에서 인증되지 않은 호출 허용을 선택합니다.

  6. 컨테이너, 볼륨, 네트워킹, 보안에 있는 실행 환경 섹션에서 기본값을 선택합니다.

  7. 버전 확장에서 인스턴스의 최대 개수6으로 설정합니다. 나머지 부분은 기본값으로 둡니다.

  8. 마지막으로 만들기를 클릭합니다.

  9. 서비스 배포는 오래 걸리지 않습니다. 녹색 체크표시가 나타나면 애플리케이션을 위해 자동 생성된 URL을 클릭합니다. Hello Cloud Run이 반환됩니다.

진행 상황 확인을 클릭하여 목표를 확인합니다. Cloud Run에 배포

수고하셨습니다.

이 실습에서는 애플리케이션을 Google Cloud 서비스인 App Engine, Kubernetes Engine, Cloud Run에 배포했습니다.

실습 종료하기

실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.

실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.

별점의 의미는 다음과 같습니다.

  • 별표 1개 = 매우 불만족
  • 별표 2개 = 불만족
  • 별표 3개 = 중간
  • 별표 4개 = 만족
  • 별표 5개 = 매우 만족

의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.

의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.

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

시작하기 전에

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

시크릿 브라우징 사용

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

콘솔에 로그인

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

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

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

감사합니다

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

한 번에 실습 1개만 가능

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

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

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