Link al lab

Recursos identificados

  • APIs: run.googleapis.com, cloudbuild.googleapis.com, firestore.googleapis.com.
  • Cloud Run service: rest-api (público, dos versiones: 0.1 y 0.2).
  • Cloud Storage bucket: $PROJECT_ID-customer (importación de datos a Firestore).
  • Firestore: base de datos en modo nativo, ubicación nam5.
  • Código fuente: repositorio rosera/pet-theory, subdirectorio lab08.
  • Imagen construida con Cloud Build y almacenada en Container Registry.

Comandos ejecutados

Configurar el proyecto activo

gcloud config set project $GOOGLE_CLOUD_PROJECT

Habilitar APIs necesarias

gcloud services enable run.googleapis.com
gcloud services enable cloudbuild.googleapis.com

Clonar repositorio pet-theory e ir a lab08

git clone https://github.com/rosera/pet-theory.git
cd pet-theory/lab08

Construir el binario Go (v0.1)

El main.go inicial expone solo un endpoint /v1/ que devuelve {status: 'running'}.

go build -o server

Enviar imagen v0.1 a Container Registry con Cloud Build

gcloud builds submit \
  --tag gcr.io/$GOOGLE_CLOUD_PROJECT/rest-api:0.1

Desplegar v0.1 en Cloud Run (público)

gcloud run deploy rest-api \
  --image gcr.io/$GOOGLE_CLOUD_PROJECT/rest-api:0.1 \
  --platform managed \
  --region $REGION \
  --allow-unauthenticated \
  --max-instances=2

Crear bucket de Cloud Storage para importar datos de clientes

gsutil mb -c standard -l $REGION gs://$GOOGLE_CLOUD_PROJECT-customer

Copiar dataset de clientes al bucket

El dataset viene de un bucket público de Qwiklabs.

gsutil cp -r gs://spls/gsp645/2019-10-06T20:10:37_43617 gs://$GOOGLE_CLOUD_PROJECT-customer

Crear base de datos Firestore en modo nativo

gcloud firestore databases create --location nam5

Importar datos de clientes desde Cloud Storage a Firestore

gcloud beta firestore import gs://$GOOGLE_CLOUD_PROJECT-customer/2019-10-06T20:10:37_43617/

Construir el binario Go (v0.2)

El main.go actualizado conecta con Firestore y expone /v1/customer/{id} para consultar tratamientos.

go build -o server

Enviar imagen v0.2 a Container Registry con Cloud Build

gcloud builds submit \
  --tag gcr.io/$GOOGLE_CLOUD_PROJECT/rest-api:0.2

Desplegar v0.2 en Cloud Run

gcloud run deploy rest-api \
  --image gcr.io/$GOOGLE_CLOUD_PROJECT/rest-api:0.2 \
  --platform managed \
  --region $REGION \
  --allow-unauthenticated \
  --max-instances=2