Code Monkey home page Code Monkey logo

netcore-microservices's Introduction

Netcore-Microservices

Development

docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

Nuget packages

  • all nuget packages must deployed before run
  • in case of private feed (PAT) must be configured properly (even for dev environment)
  • recommended private storage: Azure Artifact

Specifiy PAT for Azure Artifact nuget feed

Specify PAT (Personal Access Token) into .env for access private nuget feed.

NUGET_PAT="secretaccesstoken"

AKS

Deployment

Secrets

Needs to be created imperatively (for security reasons).

For example:

kubectl create secret generic game-catalog-db-secret --from-literal=HOST=bcpatrikduch --from-literal=USER_PASS=SolutionsArchitect

Deployment scripts

Helm extensions
RabbitMQ

Installation

helm repo add azure-marketplace https://marketplace.azurecr.io/helm/v1/repo
helm install rabbitmq-service  azure-marketplace/rabbitmq

To Access the RabbitMQ AMQP port:

 kubectl port-forward --namespace default svc/rabbitmq-service 5672:5672

To Access the RabbitMQ Management interface:

 kubectl port-forward --namespace default svc/rabbitmq-service 15672:15672
Ingress controllers

.\deployment\aks\helm\extensions\ingress\install.bat

Microservices deployment
Web API Gateway

kubectl apply -f .\deployment\aks\services\api-gateways\web-gw\

Basket microservice (WebAPI + Redis)

kubectl apply -f .\deployment\aks\services\basket\basket-api
kubectl apply -f .\deployment\aks\services\basket\basket-db\

Required secrets
kubectl create secret generic basket-db-secret --from-literal=ConnectionString=basket-db-service:6379 --from-literal=DiscountUrl=http://discount-grpc-service:80
Catalog microservice (WebAPI + MongoDb)

kubectl apply -f .\deployment\aks\services\catalog\catalog-api
kubectl apply -f .\deployment\aks\services\catalog\catalog-db\

Required secrets
kubectl create secret generic catalog-db-secret --from-literal=Host=catalog-db-service --from-literal=CollectionName=products --from-literal=DatabaseName=ProductsDb --from-literal=Port=27017 --from-literal=ServiceName=Catalog --from-literal=Username=patrikduch --from-literal=Password=bcduchpatrik07041993
Discount microservice (WebAPI + gRPC + Postgres db)

kubectl apply -f .\deployment\aks\services\discount\discount-db
kubectl apply -f .\deployment\aks\services\discount\discount-api
kubectl apply -f .\deployment\aks\services\discount\discount-grpc\

Gamecatalog microservice (WebAPI + MongoDb)

kubectl apply -f .\deployment\aks\services\game-catalog\game-catalog-api
kubectl apply -f .\deployment\aks\services\game-catalog\game-catalog-db\

Required secrets
kubectl create secret generic game-catalog-api-secret  --from-literal=HOST=game-catalog-db-service --from-literal=COLLECTION=items --from-literal=DB_NAME=ItemsDb --from-literal=USER_NAME=patrikduch --from-literal=USER_PASS=bcpatrikduch07041993 --from-literal=DB_PORT=27017 --from-literal=SERVICE_NAME=GameCatalog --from-literal=RABBITMQ_HOST=amqp://user:UVpizt6Tzj@rabbitmq-service:5672
Inventory microservice (WebAPI + MongoDb)

kubectl apply -f .\deployment\aks\services\inventory\inventory-api
kubectl apply -f .\deployment\aks\services\inventory\inventory-db\

Required secrets
kubectl create secret generic inventory-db-secret --from-literal=Host=inventory-db-service --from-literal=CollectionName=inventories --from-literal=DatabaseName=InventoryDb --from-literal=Port=27017 --from-literal=ServiceName=Inventory --from-literal=Username=patrikduch --from-literal=Password=bcduchpatrik07041993 --from-literal=RABBITMQ_HOST=amqp://user:UVpizt6Tzj@rabbitmq-service:5672
RealTimeTransmission microservice (SignalR + Redis backplane)

kubectl apply -f .\deployment\aks\services\realtime-transmission\realtime-transmission-api
kubectl apply -f .\deployment\aks\services\realtime-transmission\realtime-transmission-db\

Ordering microservice (WebAPI)

kubectl apply -f .\deployment\aks\services\ordering\ordering-api
kubectl apply -f .\deployment\aks\services\ordering\ordering-db\

kubectl create secret generic ordering-api-secret --from-literal="ConnectionString=Server=ordering-db-service;Database=OrderDb;User Id=sa; Password=bcduchpatrik07041993"
kubectl create secret generic ordering-db-secret --from-literal=SA_PASSWORD=bcduchpatrik07041993
Customer microservice (WebAPI + MSSQL database)

kubectl apply -f .\deployment\aks\services\customer\customer-api
kubectl apply -f .\deployment\aks\services\customer\customer-db\

kubectl create secret generic customer-api-secret --from-literal="ConnectionString=Server=customer-db-service;Database=CustomerDb;User Id=sa; Password=bcduchpatrik07041993"
kubectl create secret generic customer-db-secret --from-literal=SA_PASSWORD=bcduchpatrik07041993
ProjectDetail microservice (WebAPI + MSSQL database)

kubectl apply -f .\deployment\aks\services\project-detail\project-detail-api
kubectl apply -f .\deployment\aks\services\project-detail\project-detail-db\

kubectl create secret generic project-detail-api-secret --from-literal="ConnectionString=Server=project-detail-db-service;Database=ProjectDetailDb;User Id=sa; Password=bcduchpatrik07041993"
kubectl create secret generic project-detail-db-secret --from-literal=SA_PASSWORD=bcduchpatrik07041993
K8s extensions (Ingress, etc.)

kubectl apply -f .\deployment\aks\extensions\

Webapps

kubectl apply -f .\deployment\aks\webapps\

Examples

kubectl apply -f .\deployment\aks\examples\ingress-controller\without-cors\

Db examples

kubectl apply -f .\deployment\aks\examples\dbs\postgres
kubectl apply -f .\deployment\aks\examples\dbs\redis
kubectl apply -f .\deployment\aks\examples\dbs\mssql\

Required secrets

MSSQL

kubectl create secret generic mssql-db-secret --from-literal=SA_PASSWORD=bcduchpatrik07041993

AKS netcoreMicroservices cluster

netcore-microservices's People

Contributors

patrikduch avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.