vietnam-devs / coolstore-microservices
- среда, 5 сентября 2018 г. в 00:15:57
C#
🎡 ⛵️ 🚢 A containerized polyglot microservices consisting of services based on .NET Core, NodeJS and more running on service mesh (istio).
This project is inspired from CoolStore project by JBoss Demo Central & Red Hat Demo Central
The structure of README is inspired from GoogleCloudPlatform Demo. Thank you @ahmetb
CoolStore is a containerised polyglot microservices application consisting of services based on .NET Core, NodeJS and more running on Service Mesh.
It demonstrates how to wire up small microservices into a larger application using microservice architectural principals.
Our team uses this application to demonstrate Kubernetes, AKS, Istio and similar cloud-native technologies in events as following
There are several individual µservices and infrastructure components that make up this app:
No. | Service | Description | Language | Database | Endpoints |
---|---|---|---|---|---|
1 | Catalog | Serves products and prices for retail products | Node.js | Mongo | http://localhost:5002 or http://api.coolstore.local/catalog |
2 | Cart | Manages shopping cart for each customer | .NET Core | MySQL | http://localhost:5003 or http://api.coolstore.local/cart |
3 | Inventory | Serves inventory and availability data for retail products | .NET Core | MySQL | http://localhost:5004 or http://api.coolstore.local/inventory |
4 | Pricing | Handles a business rules application for product pricing | .NET Core | MySQL | http://localhost:5005 or http://api.coolstore.local/pricing |
5 | Review | Runs for writing and displaying reviews for products | .NET Core | MySQL | http://localhost:5006 or http://api.coolstore.local/review |
6 | Rating | Runs for rating products | Node.js | Mongo | http://localhost:5007 or http://api.coolstore.local/rating |
7 | IdP | Uses IdentityServer4 to authentication with OAuth 2.0 and OpenID Connect for the whole stack | .NET Core | In Memory | http://localhost:5001 or http://id.coolstore.local |
8 | Web UI (PWA) | Frontend based on vuejs and Node.js | Vuejs + Node.js | N/A | http://localhost:8080 or http://coolstore.local |
Make sure we have Docker for Desktop
running with Kubernetes
option enabled. We need to install kubectl
, helm
and istioctl
on the build machine as well.
From current console, type bash
to enter Linux Subsystem (Ubuntu)
Then cd
into your root of project
> ./deploys/cs-build.sh
It should run and package all docker images.
> cd <istio-1.0.0 path>
> kubectl create -f install/kubernetes/helm/helm-service-account.yaml
> helm init --service-account tiller --upgrade
istio-ingressgateway
IP address> kubectl get services istio-ingressgateway -n istio-system -o=jsonpath={.spec.clusterIP}
> 10.96.34.68 <== example IP
values.dev.local.yaml
file in deploys/charts/coolstore
, and put content likegateway:
ip: 10.96.34.68
istioctl
command to coolstore
chart> helm template deploys/charts/coolstore -f deploys/charts/coolstore/values.dev.yaml -f deploys/charts/coolstore/values.dev.local.yaml > deploys/k8s/dev-all-in-one.yaml
> istioctl kube-inject -f deploys/k8s/dev-all-in-one.yaml | kubectl apply -f -
127.0.0.1 api.coolstore.local
127.0.0.1 id.coolstore.local
127.0.0.1 coolstore.local
Waiting for the container provision completed
> curl -I http://coolstore.local # website
> curl -I http://api.coolstore.local # api gateway
> curl -I http://id.coolstore.local # identity provider
coolstore
chart as> kubectl delete -f deployment/istio/dev-all-in-one.yaml
> helm delete istio --purge
Notes:
Set
PATH
fordocker
,kubectl
,helm
, andistioctl
.
If you want to run just only
Kubernetes
+nginx-ingress
go todeploys/charts/coolstore/values.yaml
, and modify as followingnginx: enabled: true
Then run the
helm
command ashelm install --name cs-nginx stable/nginx-ingress
5 steps to bring CoolStore’s Service Mesh to Azure Kubernetes Service
Istio provide a wealth of benefits for the organizations that use them. There’s no denying, however, that adopting the cloud can put strains on DevOps teams. Developers must use microservices to architect for portability, meanwhile operators are managing extremely large hybrid and multi-cloud deployments. Istio lets you connect, secure, control, and observe services.
At a high level, Istio helps reduce the complexity of these deployments, and eases the strain on your development teams. It is a completely open source service mesh that layers transparently onto existing distributed applications. It is also a platform, including APIs that let it integrate into any logging platform, or telemetry or policy system. Istio’s diverse feature set lets you successfully, and efficiently, run a distributed microservice architecture, and provides a uniform way to secure, connect, and monitor microservices.
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
Thang Chung | Thinh Nguyen |
---|---|
Code released under the MIT license.