|
|
||
|---|---|---|
| .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 GCR, 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