This doc explains how to build and run the Online Boutique source code locally using the skaffold command-line tool.
- Docker for Desktop
- kubectl (can be installed via
gcloud components install kubectlfor Option 1 - GKE) - skaffold 2.0.2+ (latest version recommended), a tool that builds and deploys Docker images in bulk.
- Clone the repository.
git clone https://github.com/GoogleCloudPlatform/microservices-demo cd microservices-demo/ - A Google Cloud project with Google Container Registry enabled. (for Option 1 - GKE)
- Minikube (optional for Option 2 - Local Cluster)
- Kind (optional for Option 2 - Local Cluster)
💡 Recommended if you're using Google Cloud and want to try it on a realistic cluster. Note: If your cluster has Workload Identity enabled, see these instructions
-
Create a Google Kubernetes Engine cluster and make sure
kubectlis pointing to the cluster.gcloud services enable container.googleapis.comgcloud container clusters create-auto demo --region=us-central1
kubectl get nodes -
Enable Artifact Registry (AR) on your GCP project and configure the
dockerCLI to authenticate to AR:gcloud services enable artifactregistry.googleapis.comgcloud artifacts repositories create microservices-demo \ --repository-format=docker \ --location=us \
gcloud auth configure-docker -q
-
In the root of this repository, run:
skaffold run --default-repo=us-docker.pkg.dev/PROJECT_ID/microservices-demoWhere
PROJECT_IDis replaced by your Google Cloud project ID.This command:
- Builds the container images.
- Pushes them to AR.
- Applies the
./kubernetes-manifestsdeploying the application to Kubernetes.
Troubleshooting: If you get "No space left on device" error on Google Cloud Shell, you can build the images on Google Cloud Build: Enable the Cloud Build API, then run
skaffold run -p gcb --default-repo=us-docker.pkg.dev/[PROJECT_ID]/microservices-demoinstead. -
Find the IP address of your application, then visit the application on your browser to confirm installation.
kubectl get service frontend-external -
Navigate to
http://EXTERNAL-IPto access the web frontend.
-
Launch a local Kubernetes cluster with one of the following tools:
-
To launch Minikube (tested with Ubuntu Linux). Please, ensure that the local Kubernetes cluster has at least:
- 4 CPUs
- 4.0 GiB memory
- 32 GB disk space
minikube start --cpus=4 --memory 4096 --disk-size 32g
-
To launch Docker for Desktop (tested with Mac/Windows). Go to Preferences:
- choose “Enable Kubernetes”,
- set CPUs to at least 3, and Memory to at least 6.0 GiB
- on the "Disk" tab, set at least 32 GB disk space
-
To launch a Kind cluster:
kind create cluster
-
-
Run
kubectl get nodesto verify you're connected to the respective control plane. -
Run
skaffold run(first time will be slow, it can take ~20 minutes). This will build and deploy the application. If you need to rebuild the images automatically as you refactor the code, runskaffold devcommand. -
Run
kubectl get podsto verify the Pods are ready and running. -
Run
kubectl port-forward deployment/frontend 8080:8080to forward a port to the frontend service. -
Navigate to
localhost:8080to access the web frontend.
In general, the set of core microservices for Online Boutique is fairly complete and unlikely to change in the future, but it can be useful to add an additional optional microservice that can be deployed to complement the core services.
See the Adding a new microservice guide for instructions on how to add a new microservice.
If you've deployed the application with skaffold run command, you can run
skaffold delete to clean up the deployed resources.