Summary
This post will demonstrate the usage of Google Cloud's serverless deployment pipeline - Cloud Build. The use case for this will be a fairly simple Python app that exposes a REST interface via Flask + NLTK for tokenization of text.
Overall Architecture
The diagram below depicts the Cloud Build pipeline.
Python Application Organization
Cloud Build Steps
Cloud Build is orchestrated from a cloudbuild.yaml file. Example code below with associated diagram.
- steps:
- #Unit Test
- - name: python
- entrypoint: /bin/sh
- args: ["-c",
- "pip install -r requirements.txt &&\
- python -c \"import nltk; nltk.download('popular', download_dir='/home/nltk_data')\" &&\
- export NLTK_DATA=/home/nltk_data &&\
- python -m unittest"]
- #Docker Build
- - name: 'gcr.io/cloud-builders/docker'
- args: ['build', '-t',
- 'us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner', '.']
- #Docker push to Google Artifact Registry
- - name: 'gcr.io/cloud-builders/docker'
- args: ['push', 'us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner']
- #Deploy to Cloud Run
- - name: google/cloud-sdk
- args: ['gcloud', 'run', 'deploy', 'cleaner',
- '--image=us-central1-docker.pkg.dev/$PROJECT_ID/$_REPO_NAME/cleaner',
- '--region', 'us-central1', '--platform', 'managed',
- '--allow-unauthenticated']
Screenshots of Results
Cloud Build
Artifact Registry
Cloud Run
Source
Copyright ©1993-2024 Joey E Whelan, All rights reserved.