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.