|  | ||
|---|---|---|
| .vscode | ||
| istio-manifests | ||
| kubernetes-manifests | ||
| pb | ||
| src | ||
| tests/cartservice | ||
| .gitignore | ||
| README.md | ||
| skaffold.yaml | ||
Microservices demo
This project contains a 10-tier microservices application. The application is a web-based e-commerce app called “Hipster Shop” where users can browse items, add them to the cart, and purchase them.
Running locally
- 
Install: - kubectl (can be installed via gcloud components install kubectl)
- Docker for Desktop (Mac/Windows): Download the Edge release; not the stable. Edge release provides Kubernetes support as noted here.
- skaffold
 
- kubectl (can be installed via 
- 
Launch Docker for Desktop. Go to Preferences and choose “Enable Kubernetes”. 
- 
Run kubectl get nodesto verify you're connected to Kubernetes on Docker.
- 
Run skaffold run(first time will be slow). 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. The application frontend should be available at http://localhost:80 on your machine.
Setup on GKE
- 
Install tools specified in the previous section (Docker, kubectl, skaffold) 
- 
Create a Google Kubernetes Engine cluster and make sure kubectlis pointing to the cluster.
- 
Enable Google Container Registry (GCR) on your GCP project: gcloud services enable containerregistry.googleapis.com
- 
Configure docker to authenticate to GCR: gcloud auth configure-docker -q
- 
Edit skaffold.yaml, prepend your GCR registry host (gcr.io/YOUR_PROJECT/) to allimageName:fields (or update the existing project name).
- 
Edit the Deployment manifests at kubernetes-manifestsdirectory and update theimagefields to match the changes you made in the previous step.
- 
Run skaffold run. This builds the container images, pushes them to GFR, and deploys the application to Kubernetes.
- 
Find the IP address of your application: kubectl get service frontend-externalthen visit the application on your browser to confirm installation. 
Istio Deployment
- 
Create a GKE cluster. 
- 
Install Istio without mutual TLS enablement. 
- 
Install the automatic sidecar injection (annotate the defaultnamespace with the label):kubectl label namespace default istio-injection=enabled
- 
Deploy the application. 
- 
Apply the manifests in ./istio-manifestsdirectory.kubectl apply -f ./istio-manifests