Cloud Run

가이드1에 따라 진행. Dockerfile을 만드는데 까지는 동일하다.

Cloud Build

그러나, 가이드에서는 로컬에서 docker를 build 하지 않고 다음과 같이 Cloud Build에 등록한다.

$ gcloud builds submit --tag asia.gcr.io/PROJECT_ID/helloworld

전송된 Dockerfile을 Kaniko로 빌드한다. --tag 지정으로 docker build가 수행된다. Cloud Build will run a remote docker build -t $TAG .2

  • gcr.io는 이미지를 미국의 데이터 센터에서 호스팅한다.
  • us.gcr.io는 이미지를 미국의 데이터 센터에서, gcr.io에서 호스팅하는 이미지와 별도의 스토리지 버킷에 호스팅한다.
  • eu.gcr.io는 유럽 연합 내 이미지를 호스팅한다.
  • asia.gcr.io는 이미지를 아시아의 데이터 센터에서 호스팅한다.

Container Registry

이후 자동으로 Container Registry에 업로드된다. 빌드 & 배포를 한 번에 처리한다. Cloud Build가 진행되기 전 소스코드는 tgz로 압축되어 GCS에 등록된다. Container Registry에 있는 이미지는 GCE, GKE, Cloud Run에 각각 편리하게 선택하여 배포 가능하다. GCE는 모든 포트가 맵핑되어 있으며(맥에서는 some reasons로 docker에서 불가3), GKE는 직접 K8s 기본 클러스터까지 생성해준다.

Cloud Run

기본 실행 region 설정은 다음과 같이 미리 지정할 수 있다.

$ gcloud config set run/region asia-northeast3
$ gcloud config set run/platform managed

--platform managed 설정이 Cloud Run(fully managed)으로 실행하는 설정이다.

$ gcloud run deploy --image asia.gcr.io/PROJECT_ID/helloworld

80으로 접속할 수 있고 별도 dns까지 제공한다.
https://helloflask-qdg4vdmju1-du.a.run.app/ 이런 형태

인증

인증을 걸어두면,

$ curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

이 형태로 호출이 가능하다. 매 번 토큰을 받는건 시간이 걸리므로 한 번만 받아와서 얼마간 사용도 가능하다.

/bin/sh 에러

flask를 실행하면 /bin/sh을 찾을 수 없다는 에러가 발생한다. 내부에서 쉘 스크립트를 구동하는 모든 작업이 실행되지 않는듯 하다. 그래서 다음과 같이 python으로 직접 실행하도록 구성했다.

FROM python:3.9-buster
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

ENTRYPOINT ["python"]
CMD ["app.py"]

Custom Domain

Route53에서 발급한 도메인을 활용해 verify domain 인증을 거친 후 CNAME으로 연동 가능하다. 다만 아직 Seoul은 지원하지 않고, Tokyo로 배포하여 연동했는데 속도가 2배 늦다. flask hello world가 Seoul은 0.3s, Tokyo는 0.6s가 소요된다.

Last Modified: 2020/12/04 20:19:43


Windows 10  ·  Quotes  ·  2021 Book Reports  ·  2020 Book Reports  ·  비지니스 책  ·  통계학 응용  ·  Links  ·  Recommender System  ·  통계학 책  ·  통계학  ·  미래학 책  ·  자기계발 책  ·  Serverless AI  ·  머신러닝  ·  수학 책  ·  GCP  ·  건강 책  ·  Terraform  ·  클라우드 책  ·  BigQuery  ·  수학  ·  컴퓨터시스템구조  ·  JetBrains  ·  인공지능 책  ·  Kubernetes  ·  AWS  ·  Cloud Run  ·  2017 Book Reports  ·  2018 Book Reports  ·  2019 Book Reports  ·  Template  ·  Project Management  ·  인공지능  ·  Cryptography  ·  이산수학  ·  PyData  ·  Flask  ·  Docker  ·  비지니스  ·  강화학습  ·  머신러닝 책  ·  Markov Decision Process  ·  Santander Product Recommendation  ·  Java  ·  Android Development  ·  Zsh  ·  Software Deployment  ·  GCS  ·  XGBoost  ·  Deno  ·  GPU Data Science  ·  Python  ·  Front-End  ·  Activation, Cost Functions  ·  알고리즘  ·  자료구조  ·  사회심리학  ·  Information Retrieval  ·  OOP  ·  데이터 사이언스  ·  진화생물학  ·  LifeHacks  ·  C++  ·  Decision Tree  ·  NLP  ·  Hadoop, Spark  ·  데이터 마이닝  ·  CNN, RNN  ·  운영체제  ·  머신러닝 분류기  ·  거리  ·  Support Vector Machine  ·  OAuth 2.0  ·  Naive Bayes  ·  컴파일러  ·  딥러닝  ·  Word Embedding  ·  영어  ·  Go  ·  Scikit Learn  ·  NLP 실험  ·  MySQL  ·  Keras
is a collection of Papers I have written.
© 2000 - Sang-Kil Park Except where otherwise noted, content on this site is licensed under a CC BY 4.0.
This site design was brought from Distill.