diff --git a/README.md b/README.md
index d34764f2b..d922aa516 100644
--- a/README.md
+++ b/README.md
@@ -1,48 +1,46 @@
-# eShopOnContainers - Microservices Architecture and Containers based Reference Application (**BETA state** - Visual Studio and CLI environments compatible)
+
+
+
-Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers.
-
-## Linux Build Status for 'dev' branch
+# .NET Microservices Sample Reference Application
-Dev branch contains the latest "stable" code, and their images are tagged with `:dev` in our [Docker Hub](https://cloud.docker.com/u/eshop/repository/list):
+Sample .NET Core reference application, powered by Microsoft, based on a simplified microservices architecture and Docker containers.
-| Basket API | Catalog API | Identity API | Location API |
-| ------------- | ------------- | ------------- | ------------- |
-| [![Basket API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/basket?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | [![Catalog API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/catalog?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | [![Identity API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/identity?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | [![Location API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/location?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) |
+![](img/eshop-webmvc-app-screenshot.png)
-| Marketing API | Ordering API | Payment API | Api Gateways base image |
-| ------------- | ------------- | ------------- | ------------- |
-| [![Marketing API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/marketing?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | [![Ordering API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/ordering?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | [![Payment API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/payment?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | [![Api Gateways base image](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/apigws?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev)
+## Azure DevOps - Build Status
-| Web Shopping Aggregator | Mobile Shopping Aggregator | WebMVC Client | WebSPA Client |
+| Image | Status | Image | Status |
| ------------- | ------------- | ------------- | ------------- |
-| [![Web Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/web-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) | [![Mobile Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/mobile-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) | [![WebMVC Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webmvc?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) | [![WebSPA Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webspa?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) |
+| Api Gateway (base) | [![Api Gateways base image](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/apigws?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=201&branchName=dev) | Shopping Aggregator (Web) | [![Web Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/web-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=206&branchName=dev) |
+| Basket API | [![Basket API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/basket?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=199&branchName=dev) | Shopping Aggregator (Mobile) | [![Mobile Shopping Aggregator](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/mobile-shopping-agg?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=204&branchName=dev) |
+| Catalog API | [![Catalog API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/catalog?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=197&branchName=dev) | Web Client (MVC) | [![WebMVC Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webmvc?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=209&branchName=dev) |
+|Identity API | [![Identity API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/identity?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=200&branchName=dev) | Web Client (SPA) | [![WebSPA Client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webspa?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=210&branchName=dev) |
+| Location API | [![Location API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/location?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=202&branchName=dev) | Web Status (Health) | [![Web Status](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webstatus?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) |
+| Marketing API | [![Marketing API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/marketing?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=203&branchName=dev) | Webhooks API | [![Webhooks API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) |
+| Ordering API | [![Ordering API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/ordering?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=198&branchName=dev) | Webhooks Client | [![Webhooks demo client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks-client?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) |
+| Payment API | [![Payment API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/payment?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=205&branchName=dev) | | |
-| Web Status | Webhooks API | Webhooks demo client |
-| ------------- | ------------- | ------------- |
- [![Web Status](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webstatus?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=211&branchName=dev) | [![Webhooks API](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=207&branchName=dev) | [![Webhooks demo client](https://msftdevtools.visualstudio.com/eShopOnContainers/_apis/build/status/microservices/webhooks-client?branchName=dev)](https://msftdevtools.visualstudio.com/eShopOnContainers/_build/latest?definitionId=208&branchName=dev) |
+_**Dev** branch contains the latest **beta** code and their images are tagged with `:dev` in our [Docker Hub](https://hub.docker.com/u/eshop)_
## Getting Started
-eShopOnContainers is provided in "two flavors":
-
-- Basic scenario: Can be run locally using docker compose, and also deployed to a local Kubernetes cluster
-- Production scenario: Can only be deployed on a Kubernetes cluster (local or in the cloud like AKS), and enable production features like the use of a Service Mesh.
+eShopOnContainers is provided in two flavors: Basic and Advanced.
### Basic scenario
-You can run eShop locally:
+The basic scenario can be run locally using docker compose, and also deployed to a local Kubernetes cluster. Refer these Wiki pages to Get Started:
-- [Using Visual Studio](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Windows-setup)
-- Using CLI or Visual Studio Code
-- Using docker compose
-- Using local Kubernetes
+- [CLI or Visual Studio Code](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Windows-setup)
+- [Visual Studio (F5 experience)](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Windows-setup#optional---use-visual-studio)
+- [Docker compose](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Docker-compose-deployment-files)
+- [Local Kubernetes](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Local-Kubernetes)
### Advanced scenario
The Advanced scenario can be run only in a Kubernetes cluster. Currently this scenario is the same as basic scenario with the following differences:
-- Use of a Service Mesh for Resiliency
+- [Deploy to AKS with a Service Mesh for resiliency](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS))
In the future more features will be implemented in the advanced scenario.
@@ -57,72 +55,15 @@ Do you want to be up-to-date on .NET Architecture guidance and reference apps li
## Updated for .NET Core 3.0
-eShopOnContainers is updated to .NET Core 3.0 "wave" of technologies. Not just compilation but also new recommended code in EF Core, ASP.NET Core, and other new related versions.
-
-### Details on the latest mayor release
-
-- Migrate solution from ASP.NET Core 2.2 to 3.0 and update all projects to use the latest .NET Core 3.0 templates.
-
-- Implement the new .NET Core 3.0 WorkerService in Ordering.API and other background processes.
-
-- Improve Ordering.API
- - Group order items
- - apply discounts from Marketing.API
-
-- Handle two deployment scenarios
- - Basic deployment, better for learning:
- - Docker compose
- - Local Kubernetes
- - Visual Studio F5 experience
-
- - Advanced deployment, complex but more real-life:
- - Sidecar implementation with Envoy/Linkerd
- - Improved API Gateway and resilience
- - gRPC for inter-service communications
- - Test and Support Azure Dev Spaces
+eShopOnContainers is updated to .NET Core 3.0 "wave" of technologies. Not just compilation but also new recommended code in EF Core, ASP.NET Core, and other new related versions and a several significant changes.
-### New folder structure
-
-The repo also has a new, simpler, folder structure, as shown in the following image:
-
-![](img/new-folder-structure.png)
-
-In the above image you can see that the first folder level contains, basically:
-
-- **build**: Scripts for building Docker images.
-- **deploy**: Scripts for deployment.
-- **src**: All source projects, including tests.
- - **ApiGateways**: Envoy configuration and Aggregators source code.
- - **BuildBlocks**: Common components used by several projects.
- - **Mobile**: Mobile apps projects.
- - **Services**: Backend for all services. Including unit and functional tests for some projects.
- - Basket
- - Catalog
- - Identity
- - Location
- - Marketing
- - Ordering
- - Payment
- - Webhooks
- - **Tests**: General functional application tests.
- - **test-results**: Test results
- - **Web**: Web applications
+**See more details in the [Release notes](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Release-notes) wiki page**.
>**PLEASE** Read our [branch guide](./branch-guide.md) to know about our branching policy
>
> ### DISCLAIMER
>
> **IMPORTANT:** The current state of this sample application is **BETA**, because we are constantly evolving towards newly released technologies. Therefore, many areas could be improved and change significantly while refactoring the current code and implementing new features. Feedback with improvements and pull requests from the community will be highly appreciated and accepted.
->
-> This reference application proposes a simplified microservice oriented architecture implementation to introduce technologies like .NET Core with Docker containers through a comprehensive application. The chosen domain is eShop/eCommerce but simply because it is a well-known domain by most people/developers.
-However, this sample application should not be considered as an "eCommerce reference model" at all. The implemented business domain might not be ideal from an eCommerce business point of view. It is neither trying to solve all the problems in a large, scalable and mission-critical distributed system. It is just a bootstrap for developers to easily get started in the world of Docker containers and microservices with .NET Core.
->
-> For example, the next step after running the solution in the local dev PC and understanding Docker containers and microservices development with .NET Core, is to select a microservice cluster/orchestrator like Kubernetes in Azure (AKS) or Azure Service Fabric, both environments tested and supported by this solution.
-> Additional steps would be to move your databases to HA cloud services (like Azure SQL Database) or switch your EventBus to use Azure Service Bus (instead of bare-bone RabbitMQ) or any other production-ready Service Bus in the market.
-
-![image](https://user-images.githubusercontent.com/1712635/40397331-059a7ec6-5de7-11e8-8542-a597eca16fef.png)
-
-> Read the planned [Roadmap](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Roadmap) within the Wiki for further info about possible new implementations and provide feedback at the [ISSUES section](https://github.com/dotnet/eShopOnContainers/issues) if you'd like to see any specific scenario implemented or improved. Also, feel free to discuss on any current issue.
### Architecture overview
@@ -130,38 +71,7 @@ This reference application is cross-platform at the server and client side, than
The architecture proposes a microservice oriented architecture implementation with multiple autonomous microservices (each one owning its own data/db) and implementing different approaches within each microservice (simple CRUD vs. DDD/CQRS patterns) using Http as the communication protocol between the client apps and the microservices and supports asynchronous communication for data updates propagation across multiple services based on Integration Events and an Event Bus (a light message broker, to choose between RabbitMQ or Azure Service Bus, underneath) plus other features defined at the [roadmap](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Roadmap).
![](img/eshop_logo.png)
-![](https://user-images.githubusercontent.com/1712635/38758862-d4b42498-3f27-11e8-8dad-db60b0fa05d3.png)
-
-> ### Important Note on API Gateways and published APIs
->
-> Since April 2018, we have introduced the implementation of the [API Gateway pattern](http://microservices.io/patterns/apigateway.html) and [Backend-For-Front-End (BFF) pattern](https://samnewman.io/patterns/architectural/bff/) in eShopOnContainers architecture, so you can filter and publish simplified APIs and URIs and apply additional security in that tier while hiding/securing the internal microservices to the client apps or outside consumers. These sample API Gateways in eShopOnContainers are based on [Envoy](https://www.envoyproxy.io/), an OSS, production-grade API Gateway and proxy [described in the official documentation page](https://www.envoyproxy.io/docs/envoy/latest/). The deployed API Gateways are autonomous and can be deployed as your own custom microservices/containers, as it is currently done in eShopOnContainers, so you can test it even in a simple development environment with just Docker engine or deploy it into orchestrators like Kubernetes in AKS or Service Fabric.
->
-> For your production-ready architecture you can either keep using Envoy or, if you need further functionality and a much richer set of features suitable for commercial APIs, you can also substitute those API Gateways and use [Azure API Management](https://azure.microsoft.com/services/api-management/) or any other commercial API Gateway.
-
-![](img/eShopOnContainers-Architecture-With-Azure-API-Management.png)
-
-> The sample code in this repo is NOT making use of Azure API Management in order to be able to provide an "F5 experience" in Visual Studio (or CLI) of the sample with no up-front dependencies in Azure. But you could evaluate API Gateways alternatives when building for production.
->
-> ### Internal architecture and design of the microservices
->
-> The microservices are different in type, meaning different internal architecture pattern approaches depending on its purpose, as shown in the image below.
-
-![](img/eShopOnContainers_Types_Of_Microservices.png)
-
-> ### Important Note on Database Servers/Containers
->
-> In this solution's current configuration for a development environment, the SQL databases are automatically deployed with sample data into a single SQL Server container (a single shared Docker container for SQL databases) so the whole solution can be up and running without any dependency to any cloud or a specific server. Each database could also be deployed as a single Docker container, but then you'd need more than 8GB of RAM assigned to Docker in your development machine in order to be able to run 3 SQL Server Docker containers in your Docker Linux host in "Docker for Windows" or "Docker for Mac" development environments.
->
-> A similar case is defined in regard to Redis cache running as a container for the development environment. Or a No-SQL database (MongoDB) running as a container.
->
-> However, in a real production environment it is recommended to have your databases (SQL Server, Redis, and the NO-SQL database, in this case) in HA (High Available) services like Azure SQL Database, Redis as a service and Azure CosmosDB instead the MongoDB container (as both systems share the same access protocol). If you want to change to a production configuration, you'll just need to change the connection strings once you have set up the servers in an HA cloud or on-premises.
->
-> ### Important Note on EventBus
->
-> In this solution's current EventBus is a simplified implementation, mainly used for learning purposes (development and testing), so it doesn't handle all production scenarios, most notably on error handling.
-> The following fork provides production environment level implementation examples with eShopOnContainers:
->
-> - Implementation with [NServiceBus](https://github.com/Particular/NServiceBus) :
+![](img/eShopOnContainers-architecture.png)
## Related documentation and guidance
@@ -172,55 +82,20 @@ You can download them and start reviewing these Guides/eBooks here:
| Architecting & Developing | Containers Lifecycle & CI/CD | App patterns with Xamarin.Forms |
| ------------ | ------------| ------------|
-|
|
|
|
+| [![](img/Microservices-cover-small.png)](https://aka.ms/microservicesebook) | [![](img/DevOps-Cover-small.png)](https://aka.ms/dockerlifecycleebook) | [![](img/xamarin-enterprise-patterns-ebook-cover-small.png)](https://aka.ms/xamarinpatternsebook) |
| **Download .PDF** | **Download** | **Download** |
Download in other formats (**eReaders** like **MOBI**, **EPUB**) and other eBooks at the [.NET Architecture center](http://dot.net/architecture).
-Send feedback to [dotnet-architecture-ebooks-feedback@service.microsoft.com](dotnet-architecture-ebooks-feedback@service.microsoft.com)
-
-However, we encourage you to download and review the [Architecting and Developing Microservices eBook](https://aka.ms/microservicesebook) because the architectural styles and architectural patterns and technologies explained in the guide are using this reference application when explaining many pattern implementations, so you'll understand the context, design and decisions taken in the current architecture and internal designs much better.
-
-## Overview of the application code
-
-In this repo you can find a sample reference application that will help you to understand how to implement a microservice architecture based application using **.NET Core** and **Docker**.
-
-The example business domain or scenario is based on an eShop or eCommerce which is implemented as a multi-container application. Each container is a microservice deployment (like the basket-microservice, catalog-microservice, ordering-microservice and the identity-microservice) which is developed using ASP.NET Core running on .NET Core so they can run either on Linux Containers and Windows Containers.
-The screenshot below shows the VS Solution structure for those microservices/containers and client apps.
-
-- (*Recommended when getting started*) Open **eShopOnContainers-ServicesAndWebApps.sln** for a solution containing just the server-side projects related to the microservices and web applications.
-- Open eShopOnContainers-MobileApps.sln for a solution containing just the client mobile app projects (Xamarin mobile apps only). It works independently based on mocks, too.
-- Open eShopOnContainers.sln for a solution containing all the projects (All client apps and services).
-
-
-
-Finally, those microservices are consumed by multiple client web and mobile apps, as described below.
-
-*MVC Application (ASP.NET Core)*: It's an MVC application where you can find interesting scenarios on how to consume HTTP-based microservices from C# running in the server side, as it is a typical ASP.NET Core MVC application. Since it is a server-side application, access to other containers/microservices is done within the internal Docker Host network with its internal name resolution.
-
-
-*SPA (Single Page Application)*: Providing similar "eShop business functionality" but developed with Angular, Typescript and slightly using ASP.NET Core MVC. This is another approach for client web applications to be used when you want to have a more modern client behavior which is not behaving with the typical browser round-trip on every action but behaving like a Single-Page-Application which is more similar to a desktop app usage experience. The consumption of the HTTP-based microservices is done from TypeScript/JavaScript in the client browser, so the client calls to the microservices come from out of the Docker Host internal network (Like from your network or even from the Internet).
-
-
-*Xamarin Mobile App (For iOS, Android and Windows/UWP)*: It is a client mobile app supporting the most common mobile OS platforms (iOS, Android and Windows/UWP). In this case, the consumption of the microservices is done from C# but running on the client devices, so out of the Docker Host internal network (Like from your network or even the Internet).
-
-
-
-## Setting up your development environment for eShopOnContainers
-
-### Windows based (CLI and Visual Studio)
-
-
-
-### Mac based (CLI and Visual Studio for Mac)
+If you have an e-book feedback, create a new issue here:
-
+However, we encourage you to download and review the [.NET Microservices: Architecture for Containerized .NET Applications e-book](https://aka.ms/microservicesebook) because the architectural styles, patterns, and technologies explained in the guide use this reference application when explaining most implementations, so you'll understand the context, design and decisions taken in the current architecture and internal designs much better.
-## Orchestrators: Kubernetes and Service Fabric
+## Read further
-See at the [Wiki](https://github.com/dotnet-architecture/eShopOnContainers/wiki) the posts on setup/instructions about how to deploy to Kubernetes or Service Fabric in Azure (although you could also deploy to any other cloud or on-premises).
+- [Explore the application](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Explore-the-application)
+- [Explore the code](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Explore-the-code)
## Sending feedback and pull requests
-As mentioned, we'd appreciate your feedback, improvements and ideas.
-You can create new issues at the issues section, do pull requests and/or send emails to **eshop_feedback@service.microsoft.com**
+Read the planned [Roadmap](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Roadmap) within the Wiki for further info about possible new implementations and provide feedback at the [ISSUES section](https://github.com/dotnet/eShopOnContainers/issues) if you'd like to see any specific scenario implemented or improved. Also, feel free to discuss on any current issue.
diff --git a/build/azure-devops/apigws/azure-pipelines.yml b/build/azure-devops/apigws/azure-pipelines.yml
index 857355673..e0dacc800 100644
--- a/build/azure-devops/apigws/azure-pipelines.yml
+++ b/build/azure-devops/apigws/azure-pipelines.yml
@@ -1,5 +1,3 @@
-variables:
- registryEndpoint: eshop-registry
trigger:
branches:
include:
@@ -8,22 +6,24 @@ trigger:
paths:
include:
- src/ApiGateways/*
- - k8s/helm/apigwmm/*
- - k8s/helm/apigwms/*
- - k8s/helm/apigwwm/*
- - k8s/helm/apigwws/*
+ - deploy/k8s/helm/apigwmm/*
+ - deploy/k8s/helm/apigwms/*
+ - deploy/k8s/helm/apigwwm/*
+ - deploy/k8s/helm/apigwws/*
exclude:
- src/ApiGateways/Mobile.Bff.Shopping/aggregator/*
- src/ApiGateways/Web.Bff.Shopping/aggregator/*
jobs:
-- template: ../buildimages.yaml
- parameters:
- services: mobileshoppingapigw mobilemarketingapigw webshoppingapigw webmarketingapigw
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
-- template: ../multiarch.yaml
- parameters:
- image: ocelotapigw
- branch: $(Build.SourceBranchName)
- registryEndpoint: $(registryEndpoint)
+- job: PublishCharts
+ condition: ne('$(Build.Reason)', 'PullRequest')
+ pool:
+ vmImage: 'ubuntu-16.04'
+ steps:
+ - task: CopyFiles@2
+ inputs:
+ sourceFolder: $(Build.SourcesDirectory)/deploy/k8s/helm
+ targetFolder: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
+ - task: PublishBuildArtifacts@1
+ inputs:
+ pathtoPublish: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
+ artifactName: helm
diff --git a/build/azure-devops/basket-api/azure-pipelines.yml b/build/azure-devops/basket-api/azure-pipelines.yml
index 730680ad9..a72e3b0b2 100644
--- a/build/azure-devops/basket-api/azure-pipelines.yml
+++ b/build/azure-devops/basket-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Basket/*
- - k8s/helm/basket-api/*
+ - deploy/k8s/helm/basket-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: basket.api
+ services: basket-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: basket.api
diff --git a/build/azure-devops/buildimages.yaml b/build/azure-devops/buildimages.yaml
index cf6457513..bdd326de1 100644
--- a/build/azure-devops/buildimages.yaml
+++ b/build/azure-devops/buildimages.yaml
@@ -13,16 +13,17 @@ jobs:
- bash: docker-compose build ${{ parameters.services }}
displayName: Create multiarch manifest
env:
- TAG: ${{ variables['Build.SourceBranchName'] }}
+ TAG: ${{ variables['Build.SourceBranchName'] }}
- job: BuildContainersForPR_Windows
- condition: eq('${{ variables['Build.Reason'] }}', 'PullRequest')
+ condition: False
+ # condition: eq('${{ variables['Build.Reason'] }}', 'PullRequest')
pool:
vmImage: 'windows-2019'
steps:
- bash: docker-compose build ${{ parameters.services }}
displayName: Create multiarch manifest
env:
- TAG: ${{ variables['Build.SourceBranchName'] }}
+ TAG: ${{ variables['Build.SourceBranchName'] }}
PLATFORM: win
NODE_IMAGE: stefanscherer/node-windows:10
- job: BuildLinux
@@ -51,7 +52,7 @@ jobs:
qualifyImageNames: true
projectName: ""
dockerComposeFileArgs: |
- TAG=${{ variables['Build.SourceBranchName'] }}
+ TAG=${{ variables['Build.SourceBranchName'] }}
- task: CopyFiles@2
inputs:
sourceFolder: ${{ parameters.helmfrom }}
@@ -61,7 +62,8 @@ jobs:
pathtoPublish: ${{ parameters.helmto }}
artifactName: helm
- job: BuildWindows
- condition: ne('${{ variables['Build.Reason'] }}', 'PullRequest')
+ condition: False
+ # condition: ne('${{ variables['Build.Reason'] }}', 'PullRequest')
pool:
vmImage: 'windows-2019'
steps:
@@ -89,4 +91,4 @@ jobs:
projectName: ""
dockerComposeFileArgs: |
TAG=${{ variables['Build.SourceBranchName'] }}
- PLATFORM=win
+ PLATFORM=win
diff --git a/build/azure-devops/catalog-api/azure-pipelines.yml b/build/azure-devops/catalog-api/azure-pipelines.yml
index 032d1dd2f..64b7875e1 100644
--- a/build/azure-devops/catalog-api/azure-pipelines.yml
+++ b/build/azure-devops/catalog-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Catalog/*
- - k8s/helm/catalog-api/*
+ - deploy/k8s/helm/catalog-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: catalog.api
+ services: catalog-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: catalog.api
diff --git a/build/azure-devops/identity-api/azure-pipelines.yml b/build/azure-devops/identity-api/azure-pipelines.yml
index 07891f32b..50bd3cedf 100644
--- a/build/azure-devops/identity-api/azure-pipelines.yml
+++ b/build/azure-devops/identity-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Identity/*
- - k8s/helm/identity-api/*
+ - deploy/k8s/helm/identity-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: identity.api
+ services: identity-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: identity.api
diff --git a/build/azure-devops/infrastructure/azure-pipelines.yml b/build/azure-devops/infrastructure/azure-pipelines.yml
index 50296d457..444c84c1f 100644
--- a/build/azure-devops/infrastructure/azure-pipelines.yml
+++ b/build/azure-devops/infrastructure/azure-pipelines.yml
@@ -9,17 +9,17 @@ trigger:
- dev
paths:
include:
- - k8s/helm/basket-data/*
- - k8s/helm/keystore-data/*
- - k8s/helm/nosql-data/*
- - k8s/helm/rabbitmq/*
- - k8s/helm/sql-data/*
+ - deploy/k8s/helm/basket-data/*
+ - deploy/k8s/helm/keystore-data/*
+ - deploy/k8s/helm/nosql-data/*
+ - deploy/k8s/helm/rabbitmq/*
+ - deploy/k8s/helm/sql-data/*
steps:
- task: CopyFiles@2
inputs:
- sourceFolder: $(Build.SourcesDirectory)/k8s/helm
- targetFolder: $(Build.ArtifactStagingDirectory)/k8s/helm
+ sourceFolder: $(Build.SourcesDirectory)/deploy/k8s/helm
+ targetFolder: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- task: PublishBuildArtifacts@1
inputs:
- pathtoPublish: $(Build.ArtifactStagingDirectory)/k8s/helm
+ pathtoPublish: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
artifactName: helm
diff --git a/build/azure-devops/location-api/azure-pipelines.yml b/build/azure-devops/location-api/azure-pipelines.yml
index c926d71ac..aa45442eb 100644
--- a/build/azure-devops/location-api/azure-pipelines.yml
+++ b/build/azure-devops/location-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Location/*
- - k8s/helm/locations-api/*
+ - deploy/k8s/helm/locations-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: locations.api
+ services: locations-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: locations.api
diff --git a/build/azure-devops/marketing-api/azure-pipelines.yml b/build/azure-devops/marketing-api/azure-pipelines.yml
index c215ecb90..c07234b85 100644
--- a/build/azure-devops/marketing-api/azure-pipelines.yml
+++ b/build/azure-devops/marketing-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Marketing/*
- - k8s/helm/marketing-api/*
+ - deploy/k8s/helm/marketing-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: marketing.api
+ services: marketing-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: marketing.api
diff --git a/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml b/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml
index 749a589b2..a66c602c2 100644
--- a/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml
+++ b/build/azure-devops/mobile-shopping-agg/azure-pipelines.yml
@@ -8,14 +8,14 @@ trigger:
paths:
include:
- src/ApiGateways/Mobile.Bff.Shopping/aggregator/*
- - k8s/helm/mobileshoppingagg/*
+ - deploy/k8s/helm/mobileshoppingagg/*
jobs:
- template: ../buildimages.yaml
parameters:
services: mobileshoppingagg
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: mobileshoppingagg
diff --git a/build/azure-devops/ordering-api/azure-pipelines.yml b/build/azure-devops/ordering-api/azure-pipelines.yml
index 4d688c7dc..a8f40570e 100644
--- a/build/azure-devops/ordering-api/azure-pipelines.yml
+++ b/build/azure-devops/ordering-api/azure-pipelines.yml
@@ -9,16 +9,16 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Ordering/*
- - k8s/helm/ordering-api/*
- - k8s/helm/ordering-backgroundtasks/*
- - k8s/helm/ordering-signalrhub/*
+ - deploy/k8s/helm/ordering-api/*
+ - deploy/k8s/helm/ordering-backgroundtasks/*
+ - deploy/k8s/helm/ordering-signalrhub/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: ordering.api
+ services: ordering-api
registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: ordering.api
diff --git a/build/azure-devops/payment-api/azure-pipelines.yml b/build/azure-devops/payment-api/azure-pipelines.yml
index 0fed2db92..f009e0b04 100644
--- a/build/azure-devops/payment-api/azure-pipelines.yml
+++ b/build/azure-devops/payment-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Payment/*
- - k8s/helm/payment-api/*
+ - deploy/k8s/helm/payment-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: payment.api
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ services: payment-api
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: payment.api
diff --git a/build/azure-devops/readme.md b/build/azure-devops/readme.md
index b7216d4de..03680be34 100644
--- a/build/azure-devops/readme.md
+++ b/build/azure-devops/readme.md
@@ -1,5 +1,5 @@
-# Azure Devops build definitions
+# Azure DevOps build definitions
-This folder contains the Azure Devops build definitions in YAML format. Each folder contains one `azure-pipelines.yml` that contains the build definition for one microservice (usually a Docker image, but some microservices generates more than one Docker image).
+This folder contains the Azure DevOps build definitions in YAML format. Each folder contains one `azure-pipelines.yml` that contains the build definition for one microservice (usually a Docker image, but some microservices generates more than one Docker image).
-For more information about YAML builds read the [Azure DevOps documentation](https://docs.microsoft.com/en-us/azure/devops/pipelines/get-started-yaml?view=azure-devops).
\ No newline at end of file
+For more information about YAML builds read the [Azure DevOps documentation](https://docs.microsoft.com/azure/devops/pipelines/get-started-yaml?view=azure-devops).
\ No newline at end of file
diff --git a/build/azure-devops/web-shopping-agg/azure-pipelines.yml b/build/azure-devops/web-shopping-agg/azure-pipelines.yml
index 9e907d2ce..e112390c0 100644
--- a/build/azure-devops/web-shopping-agg/azure-pipelines.yml
+++ b/build/azure-devops/web-shopping-agg/azure-pipelines.yml
@@ -8,14 +8,14 @@ trigger:
paths:
include:
- src/ApiGateways/Web.Bff.Shopping/aggregator/*
- - k8s/helm/webshoppingagg/*
+ - deploy/k8s/helm/webshoppingagg/*
jobs:
- template: ../buildimages.yaml
parameters:
services: webshoppingagg
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webshoppingagg
diff --git a/build/azure-devops/webhooks-api/azure-pipelines.yml b/build/azure-devops/webhooks-api/azure-pipelines.yml
index d7fc14ef6..cf0b23e0b 100644
--- a/build/azure-devops/webhooks-api/azure-pipelines.yml
+++ b/build/azure-devops/webhooks-api/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Services/Webhooks/*
- - k8s/helm/webhooks-api/*
+ - deploy/k8s/helm/webhooks-api/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: webhooks.api
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ services: webhooks-api
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webhooks.api
diff --git a/build/azure-devops/webhooks-client/azure-pipelines.yml b/build/azure-devops/webhooks-client/azure-pipelines.yml
index 76b3b63c9..ff237c60e 100644
--- a/build/azure-devops/webhooks-client/azure-pipelines.yml
+++ b/build/azure-devops/webhooks-client/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Web/WebhookClient/*
- - k8s/helm/webhooks-web/*
+ - deploy/k8s/helm/webhooks-web/*
jobs:
- template: ../buildimages.yaml
parameters:
- services: webhooks.client
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ services: webhooks-client
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webhooks.client
diff --git a/build/azure-devops/webmvc/azure-pipelines.yml b/build/azure-devops/webmvc/azure-pipelines.yml
index fd637b260..8067daa7f 100644
--- a/build/azure-devops/webmvc/azure-pipelines.yml
+++ b/build/azure-devops/webmvc/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Web/WebMVC/*
- - k8s/helm/webmvc/*
+ - deploy/k8s/helm/webmvc/*
jobs:
- template: ../buildimages.yaml
parameters:
services: webmvc
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webmvc
diff --git a/build/azure-devops/webspa/azure-pipelines.yml b/build/azure-devops/webspa/azure-pipelines.yml
index 99d8d2daf..0b635e296 100644
--- a/build/azure-devops/webspa/azure-pipelines.yml
+++ b/build/azure-devops/webspa/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Web/WebSPA/*
- - k8s/helm/webspa/*
+ - deploy/k8s/helm/webspa/*
jobs:
- template: ../buildimages.yaml
parameters:
services: webspa
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webspa
diff --git a/build/azure-devops/webstatus/azure-pipelines.yml b/build/azure-devops/webstatus/azure-pipelines.yml
index f361370e6..b1871f4ae 100644
--- a/build/azure-devops/webstatus/azure-pipelines.yml
+++ b/build/azure-devops/webstatus/azure-pipelines.yml
@@ -9,14 +9,14 @@ trigger:
include:
- src/BuildingBlocks/*
- src/Web/WebStatus/*
- - k8s/helm/webstatus/*
+ - deploy/k8s/helm/webstatus/*
jobs:
- template: ../buildimages.yaml
parameters:
services: webstatus
- registryEndpoint: $(registryEndpoint)
- helmfrom: $(Build.SourcesDirectory)/k8s/helm
- helmto: $(Build.ArtifactStagingDirectory)/k8s/helm
+ registryEndpoint: $(registryEndpoint)
+ helmfrom: $(Build.SourcesDirectory)/deploy/k8s/helm
+ helmto: $(Build.ArtifactStagingDirectory)/deploy/k8s/helm
- template: ../multiarch.yaml
parameters:
image: webstatus
diff --git a/deploy/k8s/dashboard-adminuser.yaml b/deploy/k8s/dashboard-adminuser.yaml
new file mode 100644
index 000000000..9f24303cd
--- /dev/null
+++ b/deploy/k8s/dashboard-adminuser.yaml
@@ -0,0 +1,18 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: admin-user
+ namespace: kubernetes-dashboard
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: admin-user
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: cluster-admin
+subjects:
+- kind: ServiceAccount
+ name: admin-user
+ namespace: kubernetes-dashboard
diff --git a/deploy/k8s/deploy-ingress-dockerlocal.ps1 b/deploy/k8s/deploy-ingress-dockerlocal.ps1
deleted file mode 100644
index 43bf5704d..000000000
--- a/deploy/k8s/deploy-ingress-dockerlocal.ps1
+++ /dev/null
@@ -1,2 +0,0 @@
-kubectl apply -f nginx-ingress\cm.yaml
-kubectl apply -f nginx-ingress\cloud-generic.yaml
diff --git a/deploy/k8s/deploy-ingress.ps1 b/deploy/k8s/deploy-ingress.ps1
deleted file mode 100644
index 594986745..000000000
--- a/deploy/k8s/deploy-ingress.ps1
+++ /dev/null
@@ -1,2 +0,0 @@
-# Deploy nginx-ingress core files
-kubectl apply -f nginx-ingress\mandatory.yaml
diff --git a/deploy/k8s/enable-tls.ps1 b/deploy/k8s/enable-tls.ps1
new file mode 100644
index 000000000..cd4ef3ffe
--- /dev/null
+++ b/deploy/k8s/enable-tls.ps1
@@ -0,0 +1,20 @@
+Param (
+[parameter(Mandatory=$false)][string]$aksName="",
+[parameter(Mandatory=$false)][string]$aksRg=""
+)
+
+if ($aksName -and $aksRg) {
+
+ $aks=$(az aks show -n $aksName -g $aksRg -o json | ConvertFrom-Json)
+ if (-not $aks) {
+ Write-Host "AKS $aksName not found in RG $aksRg" -ForegroundColor Red
+ exit 1
+ }
+
+ Write-Host "Switching kubectl context to $aksRg/$aksName" -ForegroundColor Yellow
+ az aks get-credentials -g $aksRg -n $aksName
+}
+
+Write-Host "Installing cert-manager on current cluster"
+
+kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.11.0/cert-manager.yaml --validate=false
diff --git a/deploy/k8s/helm/apigwmm/templates/ingress.yaml b/deploy/k8s/helm/apigwmm/templates/ingress.yaml
index 932252400..44e9a90fc 100644
--- a/deploy/k8s/helm/apigwmm/templates/ingress.yaml
+++ b/deploy/k8s/helm/apigwmm/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,12 +27,14 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- {{- range .Values.ingress.hosts }}
+ {{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
diff --git a/deploy/k8s/helm/apigwms/envoy.yaml b/deploy/k8s/helm/apigwms/envoy.yaml
index 373806b06..1ae8c45a1 100644
--- a/deploy/k8s/helm/apigwms/envoy.yaml
+++ b/deploy/k8s/helm/apigwms/envoy.yaml
@@ -42,13 +42,20 @@ static_resources:
route:
auto_host_rewrite: true
prefix_rewrite: "/ordering-api/"
- cluster: ordering
+ cluster: ordering
- name: "o-long"
match:
prefix: "/ordering-api/"
route:
auto_host_rewrite: true
- cluster: ordering
+ cluster: ordering
+ - name: "h-long"
+ match:
+ prefix: "/hub/notificationhub"
+ route:
+ auto_host_rewrite: true
+ cluster: signalr-hub
+ timeout: 300s
- name: "b-short"
match:
prefix: "/b/"
@@ -61,7 +68,7 @@ static_resources:
prefix: "/basket-api/"
route:
auto_host_rewrite: true
- cluster: basket
+ cluster: basket
- name: "agg"
match:
prefix: "/"
@@ -70,25 +77,25 @@ static_resources:
prefix_rewrite: "/"
cluster: shoppingagg
http_filters:
- - name: envoy.router
+ - name: envoy.router
access_log:
- name: envoy.file_access_log
filter:
- not_health_check_filter: {}
+ not_health_check_filter: {}
config:
json_format:
time: "%START_TIME%"
protocol: "%PROTOCOL%"
duration: "%DURATION%"
- request_method: "%REQ(:METHOD)%"
- request_host: "%REQ(HOST)%"
- path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
+ request_method: "%REQ(:METHOD)%"
+ request_host: "%REQ(HOST)%"
+ path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
response_flags: "%RESPONSE_FLAGS%"
route_name: "%ROUTE_NAME%"
upstream_host: "%UPSTREAM_HOST%"
upstream_cluster: "%UPSTREAM_CLUSTER%"
- upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
- path: "/tmp/access.log"
+ upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
+ path: "/tmp/access.log"
clusters:
- name: shoppingagg
connect_timeout: 0.25s
@@ -113,7 +120,7 @@ static_resources:
hosts:
- socket_address:
address: basket-api
- port_value: 80
+ port_value: 80
- name: ordering
connect_timeout: 0.25s
type: strict_dns
@@ -121,4 +128,12 @@ static_resources:
hosts:
- socket_address:
address: ordering-api
- port_value: 80
\ No newline at end of file
+ port_value: 80
+ - name: signalr-hub
+ connect_timeout: 0.25s
+ type: strict_dns
+ lb_policy: round_robin
+ hosts:
+ - socket_address:
+ address: ordering-signalrhub
+ port_value: 80
diff --git a/deploy/k8s/helm/apigwms/templates/ingress.yaml b/deploy/k8s/helm/apigwms/templates/ingress.yaml
index 5efb36868..bc0c6d05b 100644
--- a/deploy/k8s/helm/apigwms/templates/ingress.yaml
+++ b/deploy/k8s/helm/apigwms/templates/ingress.yaml
@@ -15,6 +15,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -25,12 +28,14 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- {{- range .Values.ingress.hosts }}
+ {{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
diff --git a/deploy/k8s/helm/apigwwm/templates/ingress.yaml b/deploy/k8s/helm/apigwwm/templates/ingress.yaml
index 708488f3c..00d54c226 100644
--- a/deploy/k8s/helm/apigwwm/templates/ingress.yaml
+++ b/deploy/k8s/helm/apigwwm/templates/ingress.yaml
@@ -15,6 +15,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -25,7 +28,9 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/apigwws/envoy.yaml b/deploy/k8s/helm/apigwws/envoy.yaml
index 1491f37af..1ae8c45a1 100644
--- a/deploy/k8s/helm/apigwws/envoy.yaml
+++ b/deploy/k8s/helm/apigwws/envoy.yaml
@@ -42,13 +42,20 @@ static_resources:
route:
auto_host_rewrite: true
prefix_rewrite: "/ordering-api/"
- cluster: ordering
+ cluster: ordering
- name: "o-long"
match:
prefix: "/ordering-api/"
route:
auto_host_rewrite: true
- cluster: ordering
+ cluster: ordering
+ - name: "h-long"
+ match:
+ prefix: "/hub/notificationhub"
+ route:
+ auto_host_rewrite: true
+ cluster: signalr-hub
+ timeout: 300s
- name: "b-short"
match:
prefix: "/b/"
@@ -61,7 +68,7 @@ static_resources:
prefix: "/basket-api/"
route:
auto_host_rewrite: true
- cluster: basket
+ cluster: basket
- name: "agg"
match:
prefix: "/"
@@ -70,7 +77,7 @@ static_resources:
prefix_rewrite: "/"
cluster: shoppingagg
http_filters:
- - name: envoy.router
+ - name: envoy.router
access_log:
- name: envoy.file_access_log
filter:
@@ -80,15 +87,15 @@ static_resources:
time: "%START_TIME%"
protocol: "%PROTOCOL%"
duration: "%DURATION%"
- request_method: "%REQ(:METHOD)%"
- request_host: "%REQ(HOST)%"
- path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
+ request_method: "%REQ(:METHOD)%"
+ request_host: "%REQ(HOST)%"
+ path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
response_flags: "%RESPONSE_FLAGS%"
route_name: "%ROUTE_NAME%"
upstream_host: "%UPSTREAM_HOST%"
upstream_cluster: "%UPSTREAM_CLUSTER%"
upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
- path: "/tmp/access.log"
+ path: "/tmp/access.log"
clusters:
- name: shoppingagg
connect_timeout: 0.25s
@@ -113,7 +120,7 @@ static_resources:
hosts:
- socket_address:
address: basket-api
- port_value: 80
+ port_value: 80
- name: ordering
connect_timeout: 0.25s
type: strict_dns
@@ -121,4 +128,12 @@ static_resources:
hosts:
- socket_address:
address: ordering-api
- port_value: 80
\ No newline at end of file
+ port_value: 80
+ - name: signalr-hub
+ connect_timeout: 0.25s
+ type: strict_dns
+ lb_policy: round_robin
+ hosts:
+ - socket_address:
+ address: ordering-signalrhub
+ port_value: 80
diff --git a/deploy/k8s/helm/apigwws/templates/ingress.yaml b/deploy/k8s/helm/apigwws/templates/ingress.yaml
index b536f2dc9..945038081 100644
--- a/deploy/k8s/helm/apigwws/templates/ingress.yaml
+++ b/deploy/k8s/helm/apigwws/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,7 +27,9 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/basket-api/templates/ingress.yaml b/deploy/k8s/helm/basket-api/templates/ingress.yaml
deleted file mode 100644
index 83745a1fe..000000000
--- a/deploy/k8s/helm/basket-api/templates/ingress.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.basket -}}
-
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "basket-api.fullname" . }}
- labels:
- app: {{ template "basket-api.name" . }}
- chart: {{ template "basket-api.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/deploy/k8s/helm/catalog-api/templates/_names.tpl b/deploy/k8s/helm/catalog-api/templates/_names.tpl
index d44859fea..605e92e7e 100644
--- a/deploy/k8s/helm/catalog-api/templates/_names.tpl
+++ b/deploy/k8s/helm/catalog-api/templates/_names.tpl
@@ -49,4 +49,12 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/catalog-api/templates/configmap.yaml b/deploy/k8s/helm/catalog-api/templates/configmap.yaml
index d85929080..292b9e9b9 100644
--- a/deploy/k8s/helm/catalog-api/templates/configmap.yaml
+++ b/deploy/k8s/helm/catalog-api/templates/configmap.yaml
@@ -1,6 +1,7 @@
{{- $name := include "catalog-api.fullname" . -}}
{{- $sqlsrv := include "sql-name" . -}}
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -13,7 +14,7 @@ metadata:
heritage: {{ .Release.Service }}
data:
catalog__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.catalog.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
- catalog__PicBaseUrl: http://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
+ catalog__PicBaseUrl: {{ $protocol }}://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
catalog__AzureStorageEnabled: "{{ .Values.inf.misc.useAzureStorage }}"
all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
diff --git a/deploy/k8s/helm/catalog-api/templates/ingress.yaml b/deploy/k8s/helm/catalog-api/templates/ingress.yaml
deleted file mode 100644
index 234be0826..000000000
--- a/deploy/k8s/helm/catalog-api/templates/ingress.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.catalog -}}
-
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "catalog-api.fullname" . }}
- labels:
- app: {{ template "catalog-api.name" . }}
- chart: {{ template "catalog-api.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
\ No newline at end of file
diff --git a/deploy/k8s/helm/deploy-all.ps1 b/deploy/k8s/helm/deploy-all.ps1
index ae49de625..1711c0c2c 100644
--- a/deploy/k8s/helm/deploy-all.ps1
+++ b/deploy/k8s/helm/deploy-all.ps1
@@ -13,11 +13,49 @@ Param(
[parameter(Mandatory=$false)][bool]$useLocalk8s=$false,
[parameter(Mandatory=$false)][bool]$useMesh=$false,
[parameter(Mandatory=$false)][string][ValidateSet('Always','IfNotPresent','Never', IgnoreCase=$false)]$imagePullPolicy="Always",
+ [parameter(Mandatory=$false)][string][ValidateSet('prod','staging','none','custom', IgnoreCase=$false)]$sslSupport = "none",
+ [parameter(Mandatory=$false)][string]$tlsSecretName = "eshop-tls-custom",
[parameter(Mandatory=$false)][string]$chartsToDeploy="*",
[parameter(Mandatory=$false)][string]$ingressMeshAnnotationsFile="ingress_values_linkerd.yaml"
)
+function Install-Chart {
+ Param([string]$chart,[string]$initialOptions, [bool]$customRegistry)
+ $options=$initialOptions
+ if ($sslEnabled) {
+ $options = "$options --set ingress.tls[0].secretName=$tlsSecretName --set ingress.tls[0].hosts={$dns}"
+ if ($sslSupport -ne "custom") {
+ $options = "$options --set inf.tls.issuer=$sslIssuer"
+ }
+ }
+ if ($customRegistry) {
+ $options = "$options --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret"
+ }
+
+ if ($chart -ne "eshop-common" -or $customRegistry) { # eshop-common is ignored when no secret must be deployed
+ $command = "install $options --name=$appName-$chart $chart"
+ Write-Host "Helm Command: helm $command" -ForegroundColor Gray
+ Invoke-Expression 'cmd /c "helm $command"'
+ }
+}
+
$dns = $externalDns
+$sslEnabled=$false
+$sslIssuer=""
+
+if ($sslSupport -eq "staging") {
+ $sslEnabled=$true
+ $tlsSecretName="eshop-letsencrypt-staging"
+ $sslIssuer="letsencrypt-staging"
+}
+elseif ($sslSupport -eq "prod") {
+ $sslEnabled=$true
+ $tlsSecretName="eshop-letsencrypt-prod"
+ $sslIssuer="letsencrypt-prod"
+}
+elseif ($sslSupport -eq "custom") {
+ $sslEnabled=$true
+}
$ingressValuesFile="ingress_values.yaml"
@@ -45,6 +83,15 @@ if ($externalDns -eq "aks") {
# Initialization & check commands
if ([string]::IsNullOrEmpty($dns)) {
Write-Host "No DNS specified. Ingress resources will be bound to public ip" -ForegroundColor Yellow
+ if ($sslEnabled) {
+ Write-Host "Can't bound SSL to public IP. DNS is mandatory when using TLS" -ForegroundColor Red
+ exit 1
+ }
+}
+
+if ($useLocalk8s -and $sslEnabled) {
+ Write-Host "SSL can'be enabled on local K8s." -ForegroundColor Red
+ exit 1
}
if ($clean) {
@@ -83,21 +130,15 @@ if ($deployCharts) {
foreach ($chart in $charts) {
if ($chartsToDeploy -eq "*" -or $chartsToDeploy.Contains($chart)) {
Write-Host "Installing: $chart" -ForegroundColor Green
- if ($useCustomRegistry) {
- helm install --set inf.registry.server=$registry --set inf.registry.login=$dockerUser --set inf.registry.pwd=$dockerPassword --set inf.registry.secretName=eshop-docker-scret --values app.yaml --values inf.yaml --values $ingressValuesFile --values $ingressMeshAnnotationsFile --set app.name=$appName --set inf.k8s.dns=$dns --set "ingress.hosts={$dns}" --set image.tag=$imageTag --set image.pullPolicy=$imagePullPolicy --set inf.mesh.enabled=$useMesh --set inf.k8s.local=$useLocalk8s --name="$appName-$chart" $chart
- }
- else {
- if ($chart -ne "eshop-common") { # eshop-common is ignored when no secret must be deployed
- helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --values $ingressMeshAnnotationsFile --set app.name=$appName --set inf.k8s.dns=$dns --set "ingress.hosts={$dns}" --set image.tag=$imageTag --set image.pullPolicy=$imagePullPolicy --set inf.mesh.enabled=$useMesh --set inf.k8s.local=$useLocalk8s --name="$appName-$chart" $chart
- }
- }
+ Install-Chart $chart "-f app.yaml --values inf.yaml -f $ingressValuesFile -f $ingressMeshAnnotationsFile --set app.name=$appName --set inf.k8s.dns=$dns --set ingress.hosts={$dns} --set image.tag=$imageTag --set image.pullPolicy=$imagePullPolicy --set inf.tls.enabled=$sslEnabled --set inf.mesh.enabled=$useMesh --set inf.k8s.local=$useLocalk8s" $useCustomRegistry
}
}
foreach ($chart in $gateways) {
if ($chartsToDeploy -eq "*" -or $chartsToDeploy.Contains($chart)) {
Write-Host "Installing Api Gateway Chart: $chart" -ForegroundColor Green
- helm install --values app.yaml --values inf.yaml --values $ingressValuesFile --values $ingressMeshAnnotationsFile --set app.name=$appName --set inf.k8s.dns=$dns --set "ingress.hosts={$dns}" --set image.pullPolicy=$imagePullPolicy --set inf.mesh.enabled=$useMesh --name="$appName-$chart" $chart
+ Install-Chart $chart "-f app.yaml -f inf.yaml -f $ingressValuesFile --set app.name=$appName --set inf.k8s.dns=$dns --set image.pullPolicy=$imagePullPolicy --set inf.mesh.enabled=$useMesh --set ingress.hosts={$dns} --set inf.tls.enabled=$sslEnabled" $false
+
}
}
}
diff --git a/deploy/k8s/helm/identity-api/templates/ingress.yaml b/deploy/k8s/helm/identity-api/templates/ingress.yaml
index 56ce5d8bf..751636926 100644
--- a/deploy/k8s/helm/identity-api/templates/ingress.yaml
+++ b/deploy/k8s/helm/identity-api/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,7 +27,9 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/inf.yaml b/deploy/k8s/helm/inf.yaml
index 073233ad7..938be3d45 100644
--- a/deploy/k8s/helm/inf.yaml
+++ b/deploy/k8s/helm/inf.yaml
@@ -3,7 +3,10 @@
inf:
mesh:
- enabled: true
+ enabled: false # True to enable Linkerd (set by deploy-all.ps1)
+ tls:
+ enabled: false # True to enable TLS (set by deploy-all.ps1)
+ issuer: "" # cert-manager issuer to use for retrieving certs (set by deploy-all.ps1)
sql: # inf.sql defines the sql server databases & logins
# host: my-sql-server # Uncomment to specify a custom sql-server to be used. By default "sql-data-" will be used
common:
diff --git a/deploy/k8s/helm/istio/doc.md b/deploy/k8s/helm/istio/doc.md
deleted file mode 100644
index 5694fe30b..000000000
--- a/deploy/k8s/helm/istio/doc.md
+++ /dev/null
@@ -1,325 +0,0 @@
-# Using Helm Charts to deploy eShopOnContainers to AKS with ISTIO
-
-It is possible to deploy eShopOnContainers on a AKS using [Helm](https://helm.sh/) instead of custom scripts (that will be deprecated soon).
-
-## Create Kubernetes cluster in AKS
-You can create the AKS cluster by using two ways:
-
-- A. Use Azure CLI: Follow a procedure suing [Azure CLI like here](https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough), but make sure you **enable RBAC** with `--enable-rbac` in `az aks create` command.
-
-- B. Use Azure's portal
-
-The following steps are using the Azure portal to create the AKS cluster:
-
-- Start the process by providing the general data, like in the following screenshot:
-
-![image](https://user-images.githubusercontent.com/1712635/45787360-c59ecd80-bc29-11e8-9565-c989ad6ad57b.png)
-
-- Then, very important, in the next step, enable RBAC:
-
-![image](https://user-images.githubusercontent.com/1712635/45780917-8bc2cc80-bc13-11e8-87ac-2942b3c7496d.png)
-
- You can use **basic network** settings since for a test you don't need integration into any existing VNET.
-
-![image](https://user-images.githubusercontent.com/1712635/45780991-b745b700-bc13-11e8-926b-afac57229d0a.png)
-
-- You can also enable monitoring:
-
-![image](https://user-images.githubusercontent.com/1712635/45781148-1277a980-bc14-11e8-8614-f7a239731bec.png)
-
-- Finally, create the cluster. It'll take a few minutes for it to be ready.
-
-### Configure RBAC security for K8s dashboard service-account
-
-In order NOT to get errors in the Kubernetes dashboard, you'll need to set the following service-account steps.
-
-Here you can see the errors you might see:
-![image](https://user-images.githubusercontent.com/1712635/45784384-5622e100-bc1d-11e8-8d33-e22fd955150a.png)
-
-Now, just run the Azure CLI command to browse the Kubernetes Dashboard:
-
-`az aks browse --resource-group pro-eshop-aks-helm-linux-resgrp --name pro-eshop-aks-helm-linux`
-
-![image](https://user-images.githubusercontent.com/1712635/45786406-2d9ee500-bc25-11e8-83e9-bdfc302e80f1.png)
-
-
-## Additional pre-requisites
-
-In addition to having an AKS cluster created in Azure and having kubectl and Azure CLI installed in your local machine and configured to use your Azure subscription, you also need the following pre-requisites:
-
-### Install Helm
-
-You need to have helm installed on your machine, and Tiller must be installed on the AKS. Follow these instructions on how to ['Install applications with Helm in Azure Kubernetes Service (AKS)'](https://docs.microsoft.com/en-us/azure/aks/kubernetes-helm) to setup Helm and Tiller for AKS.
-
-**Note**: If your ASK cluster is not RBAC-enabled (default option in portal) you may receive following error when running a helm command:
-
-```
-Error: Get http://localhost:8080/api/v1/namespaces/kube-system/configmaps?labelSelector=OWNER%!D(MISSING)TILLER: dial tcp [::1]:8080: connect: connection refused
-```
-
-If so, type:
-
-```
-kubectl --namespace=kube-system edit deployment/tiller-deploy
-```
-
-Your default text editor will popup with the YAML definition of the tiller deploy. Search for:
-
-```
-automountServiceAccountToken: false
-```
-
-And change it to:
-
-```
-automountServiceAccountToken: true
-```
-
-Save the file and close the editor. This should reapply the deployment in the cluster. Now Helm commands should work.
-
-## Install eShopOnContainers with Istio using Helm
-
-All steps need to be performed on `/k8s/helm` folder. The easiest way is to use the `deploy-all-istio.ps1` script from a Powershell window:
-
-```
-.\deploy-all-istio.ps1 -dnsname eshoptestistio -externalDns aks -aksName eshoptest -aksRg eshoptest -imageTag dev
-```
-
-This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the AKS named `eshoptest` in the resource group `eshoptest` and with the dns url: http://**eshoptestistio**.westus.cloudapp.azure.com/ . By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster.
-
-Once the script is run, you should see following output when using `kubectl get deployment`:
-
-```
-NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
-eshop-apigwmm 1 1 1 1 4d
-eshop-apigwms 1 1 1 1 4d
-eshop-apigwwm 1 1 1 1 4d
-eshop-apigwws 1 1 1 1 4d
-eshop-basket-api 1 1 1 1 4d
-eshop-basket-data 1 1 1 1 4d
-eshop-catalog-api 1 1 1 1 4d
-eshop-identity-api 1 1 1 1 4d
-eshop-keystore-data 1 1 1 1 4d
-eshop-locations-api 1 1 1 1 4d
-eshop-marketing-api 1 1 1 1 4d
-eshop-mobileshoppingagg 1 1 1 1 4d
-eshop-nosql-data 1 1 1 1 4d
-eshop-ordering-api 1 1 1 1 4d
-eshop-ordering-backgroundtasks 1 1 1 1 4d
-eshop-ordering-signalrhub 1 1 1 1 4d
-eshop-payment-api 1 1 1 1 4d
-eshop-rabbitmq 1 1 1 1 4d
-eshop-sql-data 1 1 1 1 4d
-eshop-webmvc 1 1 1 1 4d
-eshop-webshoppingagg 1 1 1 1 4d
-eshop-webspa 1 1 1 1 4d
-eshop-webstatus 1 1 1 1 4d
-```
-
-Every public service is exposed through the istio ingress gateway.
-Yo can see the ingress gateway public ip doing `kubectl get services -n istio-system`
-```
-grafana ClusterIP 10.0.204.87 3000/TCP 1h
-istio-citadel ClusterIP 10.0.23.86 8060/TCP,9093/TCP 1h
-istio-egressgateway ClusterIP 10.0.136.169 80/TCP,443/TCP 1h
-istio-galley ClusterIP 10.0.113.51 443/TCP,9093/TCP 1h
-istio-ingressgateway LoadBalancer 10.0.76.80 40.118.189.161 80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:31276/TCP,8060:30519/TCP,853:31698/TCP,15030:31453/TCP,15031:32362/TCP 1h
-istio-pilot ClusterIP 10.0.164.253 15010/TCP,15011/TCP,8080/TCP,9093/TCP 1h
-istio-policy ClusterIP 10.0.170.49 9091/TCP,15004/TCP,9093/TCP 1h
-istio-sidecar-injector ClusterIP 10.0.251.12 443/TCP 1h
-istio-telemetry ClusterIP 10.0.195.112 9091/TCP,15004/TCP,9093/TCP,42422/TCP 1h
-jaeger-agent ClusterIP None 5775/UDP,6831/UDP,6832/UDP 1h
-jaeger-collector ClusterIP 10.0.123.98 14267/TCP,14268/TCP 1h
-jaeger-query ClusterIP 10.0.244.146 16686/TCP 1h
-kiali ClusterIP 10.0.182.12 20001/TCP 1h
-prometheus ClusterIP 10.0.136.223 9090/TCP 1h
-tracing ClusterIP 10.0.57.236 80/TCP 1h
-zipkin ClusterIP 10.0.30.57 9411/TCP 1h
-```
-
-You can view the MVC client at http://[dns]/
-
-## Customizing the deployment
-
-### Using your own images
-
-To use your own images instead of the public ones, you have to pass following additional parameters to the `deploy-all-istio.ps1` script:
-
-* `registry`: Login server for the Docker registry
-* `dockerUser`: User login for the Docker registry
-* `dockerPassword`: User password for the Docker registry
-
-This will deploy a secret on the cluster to connect to the specified server, and all image names deployed will be prepended with `registry/` value.
-
-### Not deploying infrastructure containers
-
-If you want to use external resources, use `-deployInfrastructure $false` to not deploy infrastructure containers. However **you still have to manually update the scripts to provide your own configuration** (see next section).
-
-### Providing your own configuration
-
-The file `inf.yaml` contains the description of the infrastructure used. File is docummented so take a look on it to understand all of its entries. If using external resources you need to edit this file according to your needs. You'll need to edit:
-
-* `inf.sql.host` with the host name of the SQL Server
-* `inf.sql.common` entries to provide your SQL user, password. `Pid` is not used when using external resources (it is used to set specific product id for the SQL Server container).
-* `inf.sql.catalog`, `inf.sql.ordering`, `inf.sql.identity`: To provide the database names for catalog, ordering and identity services
-* `mongo.host`: With the host name of the Mongo DB
-* `mongo.locations`, `mongo.marketing` with the database names for locations and marketing services
-* `redis.basket.constr` with the connection string to Redis for Basket Service. Note that `redis.basket.svc` is not used when using external services
-* `redis.keystore.constr` with the connection string to Redis for Keystore Service. Note that `redis.keystore.svc` is not used when using external services
-* `eventbus.constr` with the connection string to Azure Service Bus and `eventbus.useAzure` to `true` to use Azure service bus. Note that `eventbus.svc` is not used when using external services
-
-### Using Azure storage for Catalog Photos
-
-Using Azure storage for catalog (and marketing) photos is not directly supported, but you can accomplish it by editing the file `k8s/helm/catalog-api/templates/configmap.yaml`. Search for lines:
-
-```
-catalog__PicBaseUrl: http://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
-```
-
-And replace it for:
-
-```
-catalog__PicBaseUrl: http:///
-```
-
-In the same way, to use Azure storage for the marketing service, have to edit the file `k8s/helm/marketing-api/templates/configmap.yaml` and replacing the line:
-
-```
-marketing__PicBaseUrl: http://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
-```
-
-by:
-
-```
-marketing__PicBaseUrl: http:///
-```
-
-# Using Helm Charts to deploy eShopOnContainers to a local Kubernetes in Windows with 'Docker for Windows'
-
-## Additional pre-requisites
-
-In addition to having Docker for Windows/Mac with Kubernetes enabled and having kubectl ayou also need the following pre-requisites:
-
-### Install Helm
-
-You need to have helm installed on your machine, and Tiller must be installed on the local Docker Kubernetes cluster. Once you have [Helm downloaded](https://helm.sh/) and installed on your machine you must:
-
-1. Create the tiller service account, by running `kubectl apply -f helm-rbac.yaml` from `/k8s` folder
-2. Install tiller and configure it to use the tiller service account by typing `helm init --service-account tiller`
-
-## Install eShopOnContainers with Istio using Helm
-
-All steps need to be performed on `/k8s/helm` folder. The easiest way is to use the `deploy-all-istio.ps1` script from a Powershell window:
-
-```
-.\deploy-all-istio.ps1 -imageTag dev -useLocalk8s $true
-```
-
-The parameter `useLocalk8s` to $true, forces the script to use `localhost` as the DNS for all Helm charts.
-
-This will install all the [eShopOnContainers public images](https://hub.docker.com/u/eshop/) with tag `dev` on the Docker local Kubernetes cluster. By default all infrastructure (sql, mongo, rabbit and redis) is installed also in the cluster.
-
-Once the script is run, you should see following output when using `kubectl get deployment`:
-
-```
-NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
-eshop-apigwmm 1 1 1 1 2h
-eshop-apigwms 1 1 1 1 2h
-eshop-apigwwm 1 1 1 1 2h
-eshop-apigwws 1 1 1 1 2h
-eshop-basket-api 1 1 1 1 2h
-eshop-basket-data 1 1 1 1 2h
-eshop-catalog-api 1 1 1 1 2h
-eshop-identity-api 1 1 1 1 2h
-eshop-keystore-data 1 1 1 1 2h
-eshop-locations-api 1 1 1 1 2h
-eshop-marketing-api 1 1 1 1 2h
-eshop-mobileshoppingagg 1 1 1 1 2h
-eshop-nosql-data 1 1 1 1 2h
-eshop-ordering-api 1 1 1 1 2h
-eshop-ordering-backgroundtasks 1 1 1 1 2h
-eshop-ordering-signalrhub 1 1 1 1 2h
-eshop-payment-api 1 1 1 1 2h
-eshop-rabbitmq 1 1 1 1 2h
-eshop-sql-data 1 1 1 1 2h
-eshop-webmvc 1 1 1 1 2h
-eshop-webshoppingagg 1 1 1 1 2h
-eshop-webspa 1 1 1 1 2h
-eshop-webstatus 1 1 1 1 2h
-```
-
-Note that istio ingress gateway is bound to DNS localhost and the host is also "localhost". So, you can access the webspa by typing `http://localhost` and the MVC by typing `http://localhost/`
-
-As this is the Docker local K8s cluster, you can see also the containers running on your machine. If you type `docker ps` you'll see all them:
-
-```
-CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
-fec1e3499416 a3f21ec4bd11 "/entrypoint.sh /ngi…" 9 minutes ago Up 9 minutes k8s_nginx-ingress-controller_nginx-ingress-controller-f88c75bc6-5xs2n_ingress-nginx_f1cc7094-e68f-11e8-b4b6-00155d016146_0
-76485867f032 eshop/payment.api "dotnet Payment.API.…" 2 hours ago Up 2 hours k8s_payment-api_eshop-payment-api-75d5f9bdf6-6zx2v_default_4a3cdab4-e67f-11e8-b4b6-00155d016146_1
-c2c4640ed610 eshop/marketing.api "dotnet Marketing.AP…" 2 hours ago Up 2 hours k8s_marketing-api_eshop-marketing-api-6b8c5989fd-jpxqv_default_45780626-e67f-11e8-b4b6-00155d016146_1
-85301d538574 eshop/ordering.signalrhub "dotnet Ordering.Sig…" 2 hours ago Up 2 hours k8s_ordering-signalrhub_eshop-ordering-signalrhub-58cf5ff6-cnlm8_default_4932c344-e67f-11e8-b4b6-00155d016146_1
-7a408a98000e eshop/ordering.backgroundtasks "dotnet Ordering.Bac…" 2 hours ago Up 2 hours k8s_ordering-backgroundtasks_eshop-ordering-backgroundtasks-cc8f6d4d8-ztfk7_default_47f9cf10-e67f-11e8-b4b6-00155d016146_1
-12c64b3a13e0 eshop/basket.api "dotnet Basket.API.d…" 2 hours ago Up 2 hours k8s_basket-api_eshop-basket-api-658546684d-6hlvd_default_4262d022-e67f-11e8-b4b6-00155d016146_1
-133fccfeeff3 eshop/webstatus "dotnet WebStatus.dll" 2 hours ago Up 2 hours k8s_webstatus_eshop-webstatus-7f46479dc4-bqnq7_default_4dc13eb2-e67f-11e8-b4b6-00155d016146_0
-00c6e4c52135 eshop/webspa "dotnet WebSPA.dll" 2 hours ago Up 2 hours k8s_webspa_eshop-webspa-64cb8df9cb-dcbwg_default_4cd47376-e67f-11e8-b4b6-00155d016146_0
-d4507f1f6b1a eshop/webshoppingagg "dotnet Web.Shopping…" 2 hours ago Up 2 hours k8s_webshoppingagg_eshop-webshoppingagg-cc94fc86-sxd2v_default_4be6cdb9-e67f-11e8-b4b6-00155d016146_0
-9178e26703da eshop/webmvc "dotnet WebMVC.dll" 2 hours ago Up 2 hours k8s_webmvc_eshop-webmvc-985779684-4br5z_default_4addd4d6-e67f-11e8-b4b6-00155d016146_0
-1088c281c710 eshop/ordering.api "dotnet Ordering.API…" 2 hours ago Up 2 hours k8s_ordering-api_eshop-ordering-api-fb8c548cb-k68x9_default_4740958a-e67f-11e8-b4b6-00155d016146_0
-12424156d5c9 eshop/mobileshoppingagg "dotnet Mobile.Shopp…" 2 hours ago Up 2 hours k8s_mobileshoppingagg_eshop-mobileshoppingagg-b54645d7b-rlrgh_default_46c00017-e67f-11e8-b4b6-00155d016146_0
-65463ffd437d eshop/locations.api "dotnet Locations.AP…" 2 hours ago Up 2 hours k8s_locations-api_eshop-locations-api-577fc94696-dfhq8_default_44929c4b-e67f-11e8-b4b6-00155d016146_0
-5b3431873763 eshop/identity.api "dotnet Identity.API…" 2 hours ago Up 2 hours k8s_identity-api_eshop-identity-api-85d9b79f4-s5ks7_default_43d6eb7c-e67f-11e8-b4b6-00155d016146_0
-7c8e77252459 eshop/catalog.api "dotnet Catalog.API.…" 2 hours ago Up 2 hours k8s_catalog-api_eshop-catalog-api-59fd444fb-ztvhz_default_4356705a-e67f-11e8-b4b6-00155d016146_0
-94d95d0d3653 eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwws_eshop-apigwws-65474b979d-n99jw_default_41395473-e67f-11e8-b4b6-00155d016146_0
-bc4bbce71d5f eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwwm_eshop-apigwwm-857c549dd8-8w5gv_default_4098d770-e67f-11e8-b4b6-00155d016146_0
-840aabcceaa9 eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwms_eshop-apigwms-5b94dfb54b-dnmr9_default_401fc611-e67f-11e8-b4b6-00155d016146_0
-aabed7646f5b eshop/ocelotapigw "dotnet OcelotApiGw.…" 2 hours ago Up 2 hours k8s_apigwmm_eshop-apigwmm-85f96cbdb4-dhfwr_default_3ed7967a-e67f-11e8-b4b6-00155d016146_0
-49c5700def5a f06a5773f01e "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_basket-data_eshop-basket-data-66fbc788cc-csnlw_default_3e0c45fe-e67f-11e8-b4b6-00155d016146_0
-a5db4c521807 f06a5773f01e "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_keystore-data_eshop-keystore-data-5c9c85cb99-8k56s_default_3ce1a273-e67f-11e8-b4b6-00155d016146_0
-aae88fd2d810 d69a5113ceae "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_rabbitmq_eshop-rabbitmq-6b68647bc4-gr565_default_3c37ee6a-e67f-11e8-b4b6-00155d016146_0
-65d49ca9589d bbed8d0e01c1 "docker-entrypoint.s…" 2 hours ago Up 2 hours k8s_nosql-data_eshop-nosql-data-579c9d89f8-mtt95_default_3b9c1f89-e67f-11e8-b4b6-00155d016146_0
-090e0dde2ec4 bbe2822dfe38 "/opt/mssql/bin/sqls…" 2 hours ago Up 2 hours k8s_sql-data_eshop-sql-data-5c4fdcccf4-bscdb_default_3afd29b8-e67f-11e8-b4b6-00155d016146_0
-```
-
-## Known issues
-
-Login from the webmvc results in following error: HttpRequestException: Response status code does not indicate success: 404 (Not Found).
-
-The reason is because MVC needs to access the Identity Server from both outside the container (browser) and inside the container (C# code). Thus, the configuration uses always the *external url* of the Identity Server, which in this case is just `http://localhost/identity-api`. But this external url is incorrect when used from C# code, and the web mvc can't access the identity api. This is the only case when this issue happens (and is the reason why we use 10.0.75.1 for local address in web mvc in local development mode)
-
-Solving this requires some manual steps:
-
-Update the configmap of Web MVC by typing (**line breaks are mandatory**) and your cluster dns name has to be the same of your environment:
-
-```
-kubectl patch cm cfg-eshop-webmvc --type strategic --patch @'
-data:
- urls__IdentityUrl: http://**eshoptest**.westus.cloudapp.azure.com/identity
- urls__mvc: http://**eshoptest**.westus.cloudapp.azure.com/webmvc
-'@
-```
-
-Update the configmap of Identity API by typing (**line breaks are mandatory**):
-
-```
-kubectl patch cm cfg-eshop-identity-api --type strategic --patch @'
-data:
- mvc_e: http://**eshoptest**.westus.cloudapp.azure.com/webmvc
-'@
-```
-
-Restart the SQL Server pod to ensure the database is recreated again:
-
-```
-kubectl delete pod --selector app=sql-data
-```
-
-Wait until SQL Server pod is ready to accept connections and then restart all other pods:
-
-```
-kubectl delete pod --selector="app!=sql-data"
-```
-
-**Note:** Pods are deleted to ensure the databases are recreated again, as identity api stores its client names and urls in the database.
-
-Now, you can access the MVC app using: `http://**eshoptest**.westus.cloudapp.azure.com/`.
-
diff --git a/deploy/k8s/helm/istio/gateway.yml b/deploy/k8s/helm/istio/gateway.yml
deleted file mode 100644
index fbc61dadd..000000000
--- a/deploy/k8s/helm/istio/gateway.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-apiVersion: networking.istio.io/v1alpha3
-kind: Gateway
-metadata:
- name: istio-ingressgateway
- #namespace: istio-system
-spec:
- selector:
- istio: ingressgateway # use Istio default gateway implementation
- servers:
- - port:
- number: 80
- name: http
- protocol: HTTP
- hosts:
- - "*"
\ No newline at end of file
diff --git a/deploy/k8s/helm/istio/virtualservices.yml b/deploy/k8s/helm/istio/virtualservices.yml
deleted file mode 100644
index e01f4678f..000000000
--- a/deploy/k8s/helm/istio/virtualservices.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-apiVersion: networking.istio.io/v1alpha3
-kind: VirtualService
-metadata:
- name: webmvcvs
- namespace: default
-spec:
- hosts:
- - "*"
- gateways:
- - istio-ingressgateway
- http:
- - match:
- - uri:
- prefix: /
- route:
- - destination:
- port:
- number: 80
- host: webmvc
----
-apiVersion: networking.istio.io/v1alpha3
-kind: VirtualService
-metadata:
- name: webshoppingapigwvs
- namespace: default
-spec:
- hosts:
- - "*"
- gateways:
- - istio-ingressgateway
- http:
- - match:
- - uri:
- prefix: /webshoppingapigw
- route:
- - destination:
- port:
- number: 80
- host: webshoppingapigw
----
-apiVersion: networking.istio.io/v1alpha3
-kind: VirtualService
-metadata:
- name: identityvs
- namespace: default
-spec:
- hosts:
- - "*"
- gateways:
- - istio-ingressgateway
- http:
- - match:
- - uri:
- prefix: /identity
- route:
- - destination:
- port:
- number: 80
- host: identity
\ No newline at end of file
diff --git a/deploy/k8s/helm/locations-api/templates/ingress.yaml b/deploy/k8s/helm/locations-api/templates/ingress.yaml
deleted file mode 100644
index 5254ba5c0..000000000
--- a/deploy/k8s/helm/locations-api/templates/ingress.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.locations }}
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "locations-api.fullname" . }}
- labels:
- app: {{ template "locations-api.name" . }}
- chart: {{ template "locations-api.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
diff --git a/deploy/k8s/helm/marketing-api/templates/_names.tpl b/deploy/k8s/helm/marketing-api/templates/_names.tpl
index d44859fea..605e92e7e 100644
--- a/deploy/k8s/helm/marketing-api/templates/_names.tpl
+++ b/deploy/k8s/helm/marketing-api/templates/_names.tpl
@@ -49,4 +49,12 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/marketing-api/templates/configmap.yaml b/deploy/k8s/helm/marketing-api/templates/configmap.yaml
index aa68f3003..e6b495a7a 100644
--- a/deploy/k8s/helm/marketing-api/templates/configmap.yaml
+++ b/deploy/k8s/helm/marketing-api/templates/configmap.yaml
@@ -3,6 +3,7 @@
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
{{- $mongo := include "mongo-name" . -}}
{{- $sqlsrv := include "sql-name" . -}}
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -19,8 +20,8 @@ data:
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
all_EnableLoadTest: "{{ .Values.inf.misc.useLoadTest }}"
internalurls__IdentityUrl: http://{{ .Values.app.svc.identity }}
- urls__IdentityUrl: {{ $identity }}
+ urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
marketing__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.marketing.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
marketing__MongoConnectionString: mongodb://{{ $mongo }}
marketing__MongoDatabase: {{ .Values.inf.mongo.marketing.database }}
- marketing__PicBaseUrl: http://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
\ No newline at end of file
+ marketing__PicBaseUrl: {{ $protocol }}://{{ $webshoppingapigw }}/c/api/v1/catalog/items/[0]/pic/
\ No newline at end of file
diff --git a/deploy/k8s/helm/marketing-api/templates/ingress.yaml b/deploy/k8s/helm/marketing-api/templates/ingress.yaml
deleted file mode 100644
index 94c470f49..000000000
--- a/deploy/k8s/helm/marketing-api/templates/ingress.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.marketing }}
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "marketing-api.fullname" . }}
- labels:
- app: {{ template "marketing-api.name" . }}
- chart: {{ template "marketing-api.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
diff --git a/deploy/k8s/helm/mobileshoppingagg/templates/ingress.yaml b/deploy/k8s/helm/mobileshoppingagg/templates/ingress.yaml
deleted file mode 100644
index c87af986b..000000000
--- a/deploy/k8s/helm/mobileshoppingagg/templates/ingress.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.mobileshoppingagg }}
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "mobileshoppingagg.fullname" . }}
- labels:
- app: {{ template "mobileshoppingagg.name" . }}
- chart: {{ template "mobileshoppingagg.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
diff --git a/deploy/k8s/helm/tls-support/.helmignore b/deploy/k8s/helm/tls-support/.helmignore
new file mode 100644
index 000000000..f0c131944
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/.helmignore
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/deploy/k8s/helm/tls-support/Chart.yaml b/deploy/k8s/helm/tls-support/Chart.yaml
new file mode 100644
index 000000000..e21e04e95
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/Chart.yaml
@@ -0,0 +1,5 @@
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for Kubernetes
+name: tt-ssl
+version: 0.1.0
diff --git a/deploy/k8s/helm/tls-support/templates/_helpers.tpl b/deploy/k8s/helm/tls-support/templates/_helpers.tpl
new file mode 100644
index 000000000..5088703f0
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/templates/_helpers.tpl
@@ -0,0 +1,32 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "tt-tls.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "tt-tls.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "tt-tls.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
diff --git a/deploy/k8s/helm/tls-support/templates/issuer.yaml b/deploy/k8s/helm/tls-support/templates/issuer.yaml
new file mode 100644
index 000000000..ae9587198
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/templates/issuer.yaml
@@ -0,0 +1,17 @@
+apiVersion: cert-manager.io/v1alpha2
+kind: Issuer
+metadata:
+ name: {{ .Values.issuerName }}
+ namespace: default
+ environment: {{ .Values.environment }}
+ app: {{ .Values.applicationName }}
+spec:
+ acme:
+ server: {{ .Values.server }}
+ email: not@used.com
+ privateKeySecretRef:
+ name: {{ .Values.issuerSecretName }}
+ solvers:
+ - http01:
+ ingress:
+ class: {{ .Values.ingressClass }}
\ No newline at end of file
diff --git a/deploy/k8s/helm/tls-support/values-prod.yaml b/deploy/k8s/helm/tls-support/values-prod.yaml
new file mode 100644
index 000000000..fb577b9b7
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/values-prod.yaml
@@ -0,0 +1,8 @@
+applicationName: eshop
+issuerName: letsencrypt-prod
+certName: eshop-cert-prod
+environment: prod
+server: https://acme-v02.api.letsencrypt.org/directory
+certSecretName: eshop-letsencrypt-prod
+issuerSecretName: letsencrypt-prod
+ingressClass: addon-http-application-routing
\ No newline at end of file
diff --git a/deploy/k8s/helm/tls-support/values-staging.yaml b/deploy/k8s/helm/tls-support/values-staging.yaml
new file mode 100644
index 000000000..89dcd6654
--- /dev/null
+++ b/deploy/k8s/helm/tls-support/values-staging.yaml
@@ -0,0 +1,8 @@
+applicationName: eshop
+issuerName: letsencrypt-staging
+certName: eshop-cert-staging
+environment: staging
+server: https://acme-staging-v02.api.letsencrypt.org/directory
+certSecretName: eshop-letsencrypt-staging
+issuerSecretName: letsencrypt-staging
+ingressClass: addon-http-application-routing
\ No newline at end of file
diff --git a/deploy/k8s/helm/webhooks-api/templates/_names.tpl b/deploy/k8s/helm/webhooks-api/templates/_names.tpl
index 39ee485ef..752355276 100644
--- a/deploy/k8s/helm/webhooks-api/templates/_names.tpl
+++ b/deploy/k8s/helm/webhooks-api/templates/_names.tpl
@@ -48,4 +48,13 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/webhooks-api/templates/configmap.yaml b/deploy/k8s/helm/webhooks-api/templates/configmap.yaml
index ba1f21c42..05b9b7f57 100644
--- a/deploy/k8s/helm/webhooks-api/templates/configmap.yaml
+++ b/deploy/k8s/helm/webhooks-api/templates/configmap.yaml
@@ -1,6 +1,7 @@
{{- $name := include "webhooks-api.fullname" . -}}
{{- $sqlsrv := include "sql-name" . -}}
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -14,7 +15,7 @@ metadata:
data:
webhooks__ConnectionString: Server={{ $sqlsrv }};Initial Catalog={{ .Values.inf.sql.webhooks.db }};User Id={{ .Values.inf.sql.common.user }};Password={{ .Values.inf.sql.common.pwd }};
urls__IdentityUrl: http://{{ $identity }}
- urls__IdentityUrlExternal: http://{{ $identity }}
+ urls__IdentityUrlExternal: {{ $protocol }}://{{ $identity }}
all__EventBusConnection: {{ .Values.inf.eventbus.constr }}
all__InstrumentationKey: "{{ .Values.inf.appinsights.key }}"
all__UseAzureServiceBus: "{{ .Values.inf.eventbus.useAzure }}"
\ No newline at end of file
diff --git a/deploy/k8s/helm/webhooks-api/templates/ingress.yaml b/deploy/k8s/helm/webhooks-api/templates/ingress.yaml
index 1f46b2eb6..c7c096b77 100644
--- a/deploy/k8s/helm/webhooks-api/templates/ingress.yaml
+++ b/deploy/k8s/helm/webhooks-api/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,12 +27,14 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- {{- range .Values.ingress.hosts }}
+ {{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
diff --git a/deploy/k8s/helm/webhooks-web/templates/_names.tpl b/deploy/k8s/helm/webhooks-web/templates/_names.tpl
index 39ee485ef..752355276 100644
--- a/deploy/k8s/helm/webhooks-web/templates/_names.tpl
+++ b/deploy/k8s/helm/webhooks-web/templates/_names.tpl
@@ -48,4 +48,13 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/webhooks-web/templates/configmap.yaml b/deploy/k8s/helm/webhooks-web/templates/configmap.yaml
index 8852c7586..bd09c7c62 100644
--- a/deploy/k8s/helm/webhooks-web/templates/configmap.yaml
+++ b/deploy/k8s/helm/webhooks-web/templates/configmap.yaml
@@ -2,6 +2,7 @@
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
{{- $webhooksweb := include "url-of" (list .Values.app.ingress.entries.webhooksweb .) -}}
{{- $webhooks := include "url-of" (list .Values.app.ingress.entries.webhooks .) -}}
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -13,7 +14,7 @@ metadata:
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
- urls__webhooks: http://{{ $webhooks }}
- identity_e: http://{{ $identity }}
- webhooksweb_e: http://{{ $webhooksweb }}
+ urls__webhooks: {{ $protocol }}://{{ $webhooks }}
+ identity_e: {{ $protocol }}://{{ $identity }}
+ webhooksweb_e: {{ $protocol }}://{{ $webhooksweb }}
urls_webhooksweb: http://{{ .Values.app.svc.webhooksweb }}
diff --git a/deploy/k8s/helm/webhooks-web/templates/ingress.yaml b/deploy/k8s/helm/webhooks-web/templates/ingress.yaml
index e725999f0..1e5df8c45 100644
--- a/deploy/k8s/helm/webhooks-web/templates/ingress.yaml
+++ b/deploy/k8s/helm/webhooks-web/templates/ingress.yaml
@@ -13,21 +13,33 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
+{{- if .Values.inf.mesh.enabled }}
+{{- with .Values.ingress.mesh.annotations }}
+{{ toYaml . | indent 4 }}
+{{- end }}
+{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- - host: {{ .Values.inf.k8s.dns }}
+ {{- range .Values.ingress.hosts }}
+ - host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
- serviceName: {{ .Values.app.svc.webhooksweb }}
+ serviceName: {{ $.Values.app.svc.webhooksweb }}
servicePort: http
+ {{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/webmvc/templates/_names.tpl b/deploy/k8s/helm/webmvc/templates/_names.tpl
index d44859fea..605e92e7e 100644
--- a/deploy/k8s/helm/webmvc/templates/_names.tpl
+++ b/deploy/k8s/helm/webmvc/templates/_names.tpl
@@ -49,4 +49,12 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/webmvc/templates/configmap.yaml b/deploy/k8s/helm/webmvc/templates/configmap.yaml
index ac94f5194..2aa06fc7f 100644
--- a/deploy/k8s/helm/webmvc/templates/configmap.yaml
+++ b/deploy/k8s/helm/webmvc/templates/configmap.yaml
@@ -2,6 +2,7 @@
{{- $identity := include "url-of" (list .Values.app.ingress.entries.identity .) -}}
{{- $webshoppingapigw := include "url-of" (list .Values.app.ingress.entries.webshoppingapigw .) -}}
{{- $mvc := include "url-of" (list .Values.app.ingress.entries.mvc .) -}}
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -20,6 +21,6 @@ data:
internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }}
internalurls__apigwwm: http://{{ .Values.app.svc.webmarketingapigw }}
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
- urls__apigwws: http://{{ $webshoppingapigw }}
- urls__mvc: http://{{ $mvc }}
- urls__IdentityUrl: http://{{ $identity }}
+ urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
+ urls__mvc: {{ $protocol }}://{{ $mvc }}
+ urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
diff --git a/deploy/k8s/helm/webmvc/templates/ingress.yaml b/deploy/k8s/helm/webmvc/templates/ingress.yaml
index 1195bd4a6..1899f5a18 100644
--- a/deploy/k8s/helm/webmvc/templates/ingress.yaml
+++ b/deploy/k8s/helm/webmvc/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,7 +27,9 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/webshoppingagg/templates/ingress.yaml b/deploy/k8s/helm/webshoppingagg/templates/ingress.yaml
deleted file mode 100644
index 8993b1b09..000000000
--- a/deploy/k8s/helm/webshoppingagg/templates/ingress.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-{{- if .Values.ingress.enabled -}}
-{{- $ingressPath := include "pathBase" . -}}
-{{- $serviceName := .Values.app.svc.webshoppingagg }}
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: {{ template "webshoppingagg.fullname" . }}
- labels:
- app: {{ template "webshoppingagg.name" . }}
- chart: {{ template "webshoppingagg.chart" . }}
- release: {{ .Release.Name }}
- heritage: {{ .Release.Service }}
-{{- with .Values.ingress.annotations }}
- annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- if .Values.inf.mesh.enabled }}
-{{- with .Values.ingress.mesh.annotations }}
-{{ toYaml . | indent 4 }}
-{{- end }}
-{{- end }}
-spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- - {{ .Values.inf.k8s.dns }}
- secretName: {{ .secretName }}
- {{- end }}
-{{- end }}
- rules:
- {{- range .Values.ingress.hosts }}
- - host: {{ . }}
- http:
- paths:
- - path: {{ $ingressPath }}
- backend:
- serviceName: {{ $serviceName }}
- servicePort: http
- {{- end }}
-{{- end }}
diff --git a/deploy/k8s/helm/webspa/templates/_names.tpl b/deploy/k8s/helm/webspa/templates/_names.tpl
index d44859fea..605e92e7e 100644
--- a/deploy/k8s/helm/webspa/templates/_names.tpl
+++ b/deploy/k8s/helm/webspa/templates/_names.tpl
@@ -49,4 +49,12 @@
{{- else -}}
{{- .Values.image.repository -}}
{{- end -}}
+{{- end -}}
+
+{{- define "protocol" -}}
+{{- if .Values.inf.tls.enabled -}}
+{{- printf "%s" "https" -}}
+{{- else -}}
+{{- printf "%s" "http" -}}
+{{- end -}}
{{- end -}}
\ No newline at end of file
diff --git a/deploy/k8s/helm/webspa/templates/configmap.yaml b/deploy/k8s/helm/webspa/templates/configmap.yaml
index d49f8b2d3..ecdbf8b63 100644
--- a/deploy/k8s/helm/webspa/templates/configmap.yaml
+++ b/deploy/k8s/helm/webspa/templates/configmap.yaml
@@ -4,7 +4,7 @@
{{- $webmarketingapigw := include "url-of" (list .Values.app.ingress.entries.webmarketingapigw .) -}}
{{- $spa := include "url-of" (list .Values.app.ingress.entries.spa .) -}}
{{- $mongo := include "mongo-name" . -}}
-
+{{- $protocol := include "protocol" . -}}
apiVersion: v1
kind: ConfigMap
@@ -21,7 +21,7 @@ data:
webspa__keystore: {{ .Values.inf.redis.keystore.constr }}
internalurls__apigwws: http://{{ .Values.app.svc.webshoppingapigw }}
internalurls__identity__hc: http://{{ .Values.app.svc.identity }}/hc
- urls__apigwws: http://{{ $webshoppingapigw }}
- urls__spa: http://{{ $spa }}
- urls__IdentityUrl: http://{{ $identity }}
- urls__apigwwm: http://{{ $webmarketingapigw }}
\ No newline at end of file
+ urls__apigwws: {{ $protocol }}://{{ $webshoppingapigw }}
+ urls__spa: {{ $protocol }}://{{ $spa }}
+ urls__IdentityUrl: {{ $protocol }}://{{ $identity }}
+ urls__apigwwm: {{ $protocol }}://{{ $webmarketingapigw }}
\ No newline at end of file
diff --git a/deploy/k8s/helm/webspa/templates/ingress.yaml b/deploy/k8s/helm/webspa/templates/ingress.yaml
index aeb9a4a49..2b9fdd703 100644
--- a/deploy/k8s/helm/webspa/templates/ingress.yaml
+++ b/deploy/k8s/helm/webspa/templates/ingress.yaml
@@ -13,6 +13,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -23,16 +26,20 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- - host: {{ .Values.inf.k8s.dns }}
+ {{- range .Values.ingress.hosts }}
+ - host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
- serviceName: {{ .Values.app.svc.spa }}
+ serviceName: {{ $.Values.app.svc.spa }}
servicePort: http
+ {{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/webstatus/templates/_names.tpl b/deploy/k8s/helm/webstatus/templates/_names.tpl
index d44859fea..49455d135 100644
--- a/deploy/k8s/helm/webstatus/templates/_names.tpl
+++ b/deploy/k8s/helm/webstatus/templates/_names.tpl
@@ -32,8 +32,6 @@
{{- end -}}
{{- end -}}
-
-
{{- define "pathBase" -}}
{{- if .Values.inf.k8s.suffix -}}
{{- $suffix := include "suffix-name" . -}}
diff --git a/deploy/k8s/helm/webstatus/templates/configmap.yaml b/deploy/k8s/helm/webstatus/templates/configmap.yaml
index ae0c0691c..bf40d2a7d 100644
--- a/deploy/k8s/helm/webstatus/templates/configmap.yaml
+++ b/deploy/k8s/helm/webstatus/templates/configmap.yaml
@@ -4,7 +4,6 @@
{{- $mvc := include "url-of" (list .Values.app.ingress.entries.mvc .) -}}
{{- $mongo := include "mongo-name" . -}}
-
apiVersion: v1
kind: ConfigMap
metadata:
diff --git a/deploy/k8s/helm/webstatus/templates/ingress.yaml b/deploy/k8s/helm/webstatus/templates/ingress.yaml
index bad11ae77..9902b86b5 100644
--- a/deploy/k8s/helm/webstatus/templates/ingress.yaml
+++ b/deploy/k8s/helm/webstatus/templates/ingress.yaml
@@ -14,6 +14,9 @@ metadata:
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
+{{- if and .Values.inf.tls.enabled .Values.inf.tls.issuer }}
+ cert-manager.io/issuer: {{ .Values.inf.tls.issuer }}
+{{- end }}
{{- if .Values.inf.mesh.enabled }}
{{- with .Values.ingress.mesh.annotations }}
{{ toYaml . | indent 4 }}
@@ -24,16 +27,20 @@ spec:
tls:
{{- range .Values.ingress.tls }}
- hosts:
- - {{ .Values.inf.k8s.dns }}
+ {{- range .hosts }}
+ - {{ . }}
+ {{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
- - host: {{ .Values.inf.k8s.dns }}
+ {{- range .Values.ingress.hosts }}
+ - host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
- serviceName: {{ .Values.app.svc.status }}
+ serviceName: {{ $.Values.app.svc.status }}
servicePort: http
+ {{- end }}
{{- end }}
diff --git a/deploy/k8s/helm/webstatus/values.yaml b/deploy/k8s/helm/webstatus/values.yaml
index 7d23ce227..e5a23ec85 100644
--- a/deploy/k8s/helm/webstatus/values.yaml
+++ b/deploy/k8s/helm/webstatus/values.yaml
@@ -55,54 +55,37 @@ env:
- name: HealthChecks-UI__HealthChecks__4__Uri
key: internalurls__ordering__hc
- name: HealthChecks-UI__HealthChecks__5__Name
- key: name__orderingbackground__hc
+ key: name__basket__hc
- name: HealthChecks-UI__HealthChecks__5__Uri
- key: internalurls__orderingbackground__hc
+ key: internalurls__basket__hc
- name: HealthChecks-UI__HealthChecks__6__Name
- key: name__signalrhub__hc
+ key: name__catalog__hc
- name: HealthChecks-UI__HealthChecks__6__Uri
- key: internalurls__signalrhub__hc
+ key: internalurls__catalog__hc
- name: HealthChecks-UI__HealthChecks__7__Name
- key: name__basket__hc
+ key: name__identity__hc
- name: HealthChecks-UI__HealthChecks__7__Uri
- key: internalurls__basket__hc
+ key: internalurls__identity__hc
- name: HealthChecks-UI__HealthChecks__8__Name
- key: name__catalog__hc
+ key: name__marketing__hc
- name: HealthChecks-UI__HealthChecks__8__Uri
- key: internalurls__catalog__hc
+ key: internalurls__marketing__hc
- name: HealthChecks-UI__HealthChecks__9__Name
- key: name__identity__hc
+ key: name__locations__hc
- name: HealthChecks-UI__HealthChecks__9__Uri
- key: internalurls__identity__hc
+ key: internalurls__locations__hc
- name: HealthChecks-UI__HealthChecks__10__Name
- key: name__marketing__hc
+ key: name__payment__hc
- name: HealthChecks-UI__HealthChecks__10__Uri
- key: internalurls__marketing__hc
+ key: internalurls__payment__hc
- name: HealthChecks-UI__HealthChecks__11__Name
- key: name__locations__hc
+ key: name__signalrhub__hc
- name: HealthChecks-UI__HealthChecks__11__Uri
- key: internalurls__locations__hc
+ key: internalurls__signalrhub__hc
- name: HealthChecks-UI__HealthChecks__12__Name
- key: name__payment__hc
+ key: name__orderingbackground__hc
- name: HealthChecks-UI__HealthChecks__12__Uri
- key: internalurls__payment__hc
-
- - name: HealthChecks-UI__HealthChecks__13__Name
- key: name__apigwws__hc
- - name: HealthChecks-UI__HealthChecks__13__Uri
- key: internalurls__apigwws__hc
- - name: HealthChecks-UI__HealthChecks__14__Name
- key: name__apigwwm__hc
- - name: HealthChecks-UI__HealthChecks__14__Uri
- key: internalurls__apigwwm__hc
- - name: HealthChecks-UI__HealthChecks__15__Name
- key: name__apigwms__hc
- - name: HealthChecks-UI__HealthChecks__15__Uri
- key: internalurls__apigwms__hc
- - name: HealthChecks-UI__HealthChecks__16__Name
- key: name__apigwmm__hc
- - name: HealthChecks-UI__HealthChecks__16__Uri
- key: internalurls__apigwmm__hc
+ key: internalurls__orderingbackground__hc
# values define environment variables with a fixed value (no configmap involved) (name is name of var, and value is its value)
values:
diff --git a/deploy/k8s/nginx-ingress/cm.yaml b/deploy/k8s/nginx-ingress/cm.yaml
deleted file mode 100644
index 7818fd15b..000000000
Binary files a/deploy/k8s/nginx-ingress/cm.yaml and /dev/null differ
diff --git a/deploy/k8s/nginx-ingress/local-cm.yaml b/deploy/k8s/nginx-ingress/local-cm.yaml
new file mode 100644
index 000000000..02906afc1
--- /dev/null
+++ b/deploy/k8s/nginx-ingress/local-cm.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ labels:
+ app.kubernetes.io/name: ingress-nginx
+ app.kubernetes.io/part-of: ingress-nginx
+ name: nginx-configuration
+ namespace: ingress-nginx
+data:
+ proxy-buffer-size: "128k"
+ proxy-buffers: "4 256k"
\ No newline at end of file
diff --git a/deploy/k8s/nginx-ingress/cloud-generic.yaml b/deploy/k8s/nginx-ingress/local-svc.yaml
similarity index 100%
rename from deploy/k8s/nginx-ingress/cloud-generic.yaml
rename to deploy/k8s/nginx-ingress/local-svc.yaml
diff --git a/obsolete/cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1 b/deploy/windows/add-firewall-rules-for-sts-auth-thru-docker.ps1
similarity index 100%
rename from obsolete/cli-windows/add-firewall-rules-for-sts-auth-thru-docker.ps1
rename to deploy/windows/add-firewall-rules-for-sts-auth-thru-docker.ps1
diff --git a/obsolete/cli-windows/set-dockernat-networkategory-to-private.ps1 b/deploy/windows/set-dockernat-networkategory-to-private.ps1
similarity index 100%
rename from obsolete/cli-windows/set-dockernat-networkategory-to-private.ps1
rename to deploy/windows/set-dockernat-networkategory-to-private.ps1
diff --git a/img/eShopOnContainers-Architecture-With-Azure-API-Management.png b/img/eShopOnContainers-Architecture-With-Azure-API-Management.png
deleted file mode 100644
index 434740d60..000000000
Binary files a/img/eShopOnContainers-Architecture-With-Azure-API-Management.png and /dev/null differ
diff --git a/img/eShopOnContainers-architecture.png b/img/eShopOnContainers-architecture.png
new file mode 100644
index 000000000..f97b157eb
Binary files /dev/null and b/img/eShopOnContainers-architecture.png differ
diff --git a/img/eShopOnContainers_Types_Of_Microservices.png b/img/eShopOnContainers_Types_Of_Microservices.png
deleted file mode 100644
index e0621d8a4..000000000
Binary files a/img/eShopOnContainers_Types_Of_Microservices.png and /dev/null differ
diff --git a/img/eshop-webspa-app-screenshot.png b/img/eshop-webspa-app-screenshot.png
deleted file mode 100644
index 854c5e8c0..000000000
Binary files a/img/eshop-webspa-app-screenshot.png and /dev/null differ
diff --git a/img/new-folder-structure.png b/img/new-folder-structure.png
deleted file mode 100644
index 14a62e715..000000000
Binary files a/img/new-folder-structure.png and /dev/null differ
diff --git a/img/vs-solution-structure.png b/img/vs-solution-structure.png
deleted file mode 100644
index 76b4edd24..000000000
Binary files a/img/vs-solution-structure.png and /dev/null differ
diff --git a/img/xamarin-mobile-App.png b/img/xamarin-mobile-App.png
deleted file mode 100644
index 7b63a484f..000000000
Binary files a/img/xamarin-mobile-App.png and /dev/null differ
diff --git a/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml b/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml
index 373806b06..1ae8c45a1 100644
--- a/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml
+++ b/src/ApiGateways/Envoy/config/mobileshopping/envoy.yaml
@@ -42,13 +42,20 @@ static_resources:
route:
auto_host_rewrite: true
prefix_rewrite: "/ordering-api/"
- cluster: ordering
+ cluster: ordering
- name: "o-long"
match:
prefix: "/ordering-api/"
route:
auto_host_rewrite: true
- cluster: ordering
+ cluster: ordering
+ - name: "h-long"
+ match:
+ prefix: "/hub/notificationhub"
+ route:
+ auto_host_rewrite: true
+ cluster: signalr-hub
+ timeout: 300s
- name: "b-short"
match:
prefix: "/b/"
@@ -61,7 +68,7 @@ static_resources:
prefix: "/basket-api/"
route:
auto_host_rewrite: true
- cluster: basket
+ cluster: basket
- name: "agg"
match:
prefix: "/"
@@ -70,25 +77,25 @@ static_resources:
prefix_rewrite: "/"
cluster: shoppingagg
http_filters:
- - name: envoy.router
+ - name: envoy.router
access_log:
- name: envoy.file_access_log
filter:
- not_health_check_filter: {}
+ not_health_check_filter: {}
config:
json_format:
time: "%START_TIME%"
protocol: "%PROTOCOL%"
duration: "%DURATION%"
- request_method: "%REQ(:METHOD)%"
- request_host: "%REQ(HOST)%"
- path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
+ request_method: "%REQ(:METHOD)%"
+ request_host: "%REQ(HOST)%"
+ path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
response_flags: "%RESPONSE_FLAGS%"
route_name: "%ROUTE_NAME%"
upstream_host: "%UPSTREAM_HOST%"
upstream_cluster: "%UPSTREAM_CLUSTER%"
- upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
- path: "/tmp/access.log"
+ upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
+ path: "/tmp/access.log"
clusters:
- name: shoppingagg
connect_timeout: 0.25s
@@ -113,7 +120,7 @@ static_resources:
hosts:
- socket_address:
address: basket-api
- port_value: 80
+ port_value: 80
- name: ordering
connect_timeout: 0.25s
type: strict_dns
@@ -121,4 +128,12 @@ static_resources:
hosts:
- socket_address:
address: ordering-api
- port_value: 80
\ No newline at end of file
+ port_value: 80
+ - name: signalr-hub
+ connect_timeout: 0.25s
+ type: strict_dns
+ lb_policy: round_robin
+ hosts:
+ - socket_address:
+ address: ordering-signalrhub
+ port_value: 80
diff --git a/src/ApiGateways/Envoy/config/webshopping/envoy.yaml b/src/ApiGateways/Envoy/config/webshopping/envoy.yaml
index 1491f37af..1ae8c45a1 100644
--- a/src/ApiGateways/Envoy/config/webshopping/envoy.yaml
+++ b/src/ApiGateways/Envoy/config/webshopping/envoy.yaml
@@ -42,13 +42,20 @@ static_resources:
route:
auto_host_rewrite: true
prefix_rewrite: "/ordering-api/"
- cluster: ordering
+ cluster: ordering
- name: "o-long"
match:
prefix: "/ordering-api/"
route:
auto_host_rewrite: true
- cluster: ordering
+ cluster: ordering
+ - name: "h-long"
+ match:
+ prefix: "/hub/notificationhub"
+ route:
+ auto_host_rewrite: true
+ cluster: signalr-hub
+ timeout: 300s
- name: "b-short"
match:
prefix: "/b/"
@@ -61,7 +68,7 @@ static_resources:
prefix: "/basket-api/"
route:
auto_host_rewrite: true
- cluster: basket
+ cluster: basket
- name: "agg"
match:
prefix: "/"
@@ -70,7 +77,7 @@ static_resources:
prefix_rewrite: "/"
cluster: shoppingagg
http_filters:
- - name: envoy.router
+ - name: envoy.router
access_log:
- name: envoy.file_access_log
filter:
@@ -80,15 +87,15 @@ static_resources:
time: "%START_TIME%"
protocol: "%PROTOCOL%"
duration: "%DURATION%"
- request_method: "%REQ(:METHOD)%"
- request_host: "%REQ(HOST)%"
- path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
+ request_method: "%REQ(:METHOD)%"
+ request_host: "%REQ(HOST)%"
+ path: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"
response_flags: "%RESPONSE_FLAGS%"
route_name: "%ROUTE_NAME%"
upstream_host: "%UPSTREAM_HOST%"
upstream_cluster: "%UPSTREAM_CLUSTER%"
upstream_local_address: "%UPSTREAM_LOCAL_ADDRESS%"
- path: "/tmp/access.log"
+ path: "/tmp/access.log"
clusters:
- name: shoppingagg
connect_timeout: 0.25s
@@ -113,7 +120,7 @@ static_resources:
hosts:
- socket_address:
address: basket-api
- port_value: 80
+ port_value: 80
- name: ordering
connect_timeout: 0.25s
type: strict_dns
@@ -121,4 +128,12 @@ static_resources:
hosts:
- socket_address:
address: ordering-api
- port_value: 80
\ No newline at end of file
+ port_value: 80
+ - name: signalr-hub
+ connect_timeout: 0.25s
+ type: strict_dns
+ lb_policy: round_robin
+ hosts:
+ - socket_address:
+ address: ordering-signalrhub
+ port_value: 80
diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile
index 1f5c77573..3e2aef9f0 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
index a0ba7bd58..770d084c3 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
Mobile.Shopping.HttpAggregator
Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator
..\..\..\docker-compose.dcproj
@@ -15,19 +15,19 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Services/BasketService.cs b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Services/BasketService.cs
index 5c8128be8..609b6cdd9 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Services/BasketService.cs
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Services/BasketService.cs
@@ -49,7 +49,7 @@ namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator.Services
var request = MapToCustomerBasketRequest(currentBasket);
_logger.LogDebug("Grpc update basket request {@request}", request);
- return client.UpdateBasketAsync(request);
+ return await client.UpdateBasketAsync(request);
});
}
diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile b/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile
index b449be5b1..707126347 100644
--- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile
+++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
index 92e524eb0..2cef24f4e 100644
--- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
+++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
Web.Shopping.HttpAggregator
Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator
..\..\..\docker-compose.dcproj
@@ -15,20 +15,21 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj b/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj
index 1db0dce7d..ca139c382 100644
--- a/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj
+++ b/src/BuildingBlocks/Devspaces.Support/Devspaces.Support.csproj
@@ -5,7 +5,7 @@
-
-
+
+
diff --git a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
index e07454650..69d2c0c05 100644
--- a/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
+++ b/src/BuildingBlocks/EventBus/EventBus/EventBus.csproj
@@ -6,7 +6,7 @@
-
+
\ No newline at end of file
diff --git a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
index 6e13b2196..00b95b211 100644
--- a/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
+++ b/src/BuildingBlocks/EventBus/EventBusRabbitMQ/EventBusRabbitMQ.csproj
@@ -7,11 +7,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
index 8f24578d5..8435246a3 100644
--- a/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
+++ b/src/BuildingBlocks/EventBus/EventBusServiceBus/EventBusServiceBus.csproj
@@ -7,9 +7,9 @@
-
-
-
+
+
+
diff --git a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj
index e009e08c3..bfc322c34 100644
--- a/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj
+++ b/src/BuildingBlocks/EventBus/IntegrationEventLogEF/IntegrationEventLogEF.csproj
@@ -6,14 +6,14 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
+
+
+
+
diff --git a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj
index 51567f38a..a6ccbe05e 100644
--- a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj
+++ b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHost.Customization.csproj
@@ -1,22 +1,22 @@
- netcoreapp3.0
+ netcoreapp3.1
false
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj
index 95e31375e..f10682dcb 100644
--- a/src/Services/Basket/Basket.API/Basket.API.csproj
+++ b/src/Services/Basket/Basket.API/Basket.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
..\..\..\..\docker-compose.dcproj
false
@@ -16,29 +16,30 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Basket/Basket.API/Dockerfile b/src/Services/Basket/Basket.API/Dockerfile
index 9a068d83e..872955122 100644
--- a/src/Services/Basket/Basket.API/Dockerfile
+++ b/src/Services/Basket/Basket.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj
index e229bf4dc..fa01363de 100644
--- a/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj
+++ b/src/Services/Basket/Basket.FunctionalTests/Basket.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
false
@@ -16,10 +16,10 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj
index cb4559f97..920b4f1da 100644
--- a/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj
+++ b/src/Services/Basket/Basket.UnitTests/Basket.UnitTests.csproj
@@ -1,20 +1,18 @@
- netcoreapp3.0
+ netcoreapp3.1
false
false
-
-
-
-
-
-
-
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Catalog/Catalog.API/Catalog.API.csproj b/src/Services/Catalog/Catalog.API/Catalog.API.csproj
index 2a08b699c..a2c32d99b 100644
--- a/src/Services/Catalog/Catalog.API/Catalog.API.csproj
+++ b/src/Services/Catalog/Catalog.API/Catalog.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
portable
true
Catalog.API
@@ -42,28 +42,29 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Catalog/Catalog.API/Dockerfile b/src/Services/Catalog/Catalog.API/Dockerfile
index 4c227b11a..0f11f1935 100644
--- a/src/Services/Catalog/Catalog.API/Dockerfile
+++ b/src/Services/Catalog/Catalog.API/Dockerfile
@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj
index 1a2079c49..a1e04922e 100644
--- a/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj
+++ b/src/Services/Catalog/Catalog.FunctionalTests/Catalog.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
false
@@ -33,9 +33,9 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs b/src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs
index 7410551e4..f7529f73c 100644
--- a/src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs
+++ b/src/Services/Catalog/Catalog.UnitTests/Application/CatalogControllerTest.cs
@@ -1,90 +1,132 @@
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.eShopOnContainers.WebMVC.Controllers;
-using Microsoft.eShopOnContainers.WebMVC.Services;
-using Microsoft.eShopOnContainers.WebMVC.ViewModels;
-using Microsoft.eShopOnContainers.WebMVC.ViewModels.CatalogViewModels;
+using Catalog.API.IntegrationEvents;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.eShopOnContainers.Services.Catalog.API;
+using Microsoft.eShopOnContainers.Services.Catalog.API.Controllers;
+using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure;
+using Microsoft.eShopOnContainers.Services.Catalog.API.Model;
+using Microsoft.eShopOnContainers.Services.Catalog.API.ViewModel;
+using Microsoft.Extensions.Options;
using Moq;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using Xunit;
-using CatalogModel = Microsoft.eShopOnContainers.WebMVC.ViewModels.Catalog;
namespace UnitTest.Catalog.Application
{
public class CatalogControllerTest
{
- private readonly Mock _catalogServiceMock;
+ private readonly DbContextOptions _dbOptions;
public CatalogControllerTest()
{
- _catalogServiceMock = new Mock();
+ _dbOptions = new DbContextOptionsBuilder()
+ .UseInMemoryDatabase(databaseName: "in-memory")
+ .Options;
+
+ using (var dbContext = new CatalogContext(_dbOptions))
+ {
+ dbContext.AddRange(GetFakeCatalog());
+ dbContext.SaveChanges();
+ }
}
[Fact]
public async Task Get_catalog_items_success()
{
//Arrange
- var fakeBrandFilterApplied = 1;
- var fakeTypesFilterApplied = 2;
- var fakePage = 2;
- var fakeCatalog = GetFakeCatalog();
+ var brandFilterApplied = 1;
+ var typesFilterApplied = 2;
+ var pageSize = 4;
+ var pageIndex = 1;
- var expectedNumberOfPages = 5;
- var expectedTotalPages = 50;
- var expectedCurrentPage = 2;
+ var expectedItemsInPage = 2;
+ var expectedTotalItems = 6;
- _catalogServiceMock.Setup(x => x.GetCatalogItems
- (
- It.Is(y => y == fakePage),
- It.IsAny(),
- It.Is(y => y == fakeBrandFilterApplied),
- It.Is(y => y == fakeTypesFilterApplied)
- ))
- .Returns(Task.FromResult(fakeCatalog));
+ var catalogContext = new CatalogContext(_dbOptions);
+ var catalogSettings = new TestCatalogSettings();
+
+ var integrationServicesMock = new Mock();
//Act
- var orderController = new CatalogController(_catalogServiceMock.Object);
- var actionResult = await orderController.Index(fakeBrandFilterApplied, fakeTypesFilterApplied, fakePage, null);
+ var orderController = new CatalogController(catalogContext, catalogSettings, integrationServicesMock.Object);
+ var actionResult = await orderController.ItemsByTypeIdAndBrandIdAsync(typesFilterApplied, brandFilterApplied, pageSize, pageIndex);
//Assert
- var viewResult = Assert.IsType(actionResult);
- var model = Assert.IsAssignableFrom(viewResult.ViewData.Model);
- Assert.Equal(model.PaginationInfo.TotalPages, expectedNumberOfPages);
- Assert.Equal(model.PaginationInfo.TotalItems, expectedTotalPages);
- Assert.Equal(model.PaginationInfo.ActualPage, expectedCurrentPage);
- Assert.Empty(model.PaginationInfo.Next);
- Assert.Empty(model.PaginationInfo.Previous);
- }
-
- private CatalogModel GetFakeCatalog()
+ Assert.IsType>>(actionResult);
+ var page = Assert.IsAssignableFrom>(actionResult.Value);
+ Assert.Equal(expectedTotalItems, page.Count);
+ Assert.Equal(pageIndex, page.PageIndex);
+ Assert.Equal(pageSize, page.PageSize);
+ Assert.Equal(expectedItemsInPage, page.Data.Count());
+ }
+
+ private List GetFakeCatalog()
{
- return new CatalogModel()
+ return new List()
{
- PageSize = 10,
- Count = 50,
- PageIndex = 2,
- Data = new List()
+ new CatalogItem()
+ {
+ Id = 1,
+ Name = "fakeItemA",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemA.png"
+ },
+ new CatalogItem()
+ {
+ Id = 2,
+ Name = "fakeItemB",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemB.png"
+ },
+ new CatalogItem()
+ {
+ Id = 3,
+ Name = "fakeItemC",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemC.png"
+ },
+ new CatalogItem()
{
- new CatalogItem()
- {
- Id = 1,
- Name = "fakeItemA",
- CatalogTypeId = 1
- },
- new CatalogItem()
- {
- Id = 2,
- Name = "fakeItemB",
- CatalogTypeId = 1
- },
- new CatalogItem()
- {
- Id = 3,
- Name = "fakeItemC",
- CatalogTypeId = 1
- }
+ Id = 4,
+ Name = "fakeItemD",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemD.png"
+ },
+ new CatalogItem()
+ {
+ Id = 5,
+ Name = "fakeItemE",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemE.png"
+ },
+ new CatalogItem()
+ {
+ Id = 6,
+ Name = "fakeItemF",
+ CatalogTypeId = 2,
+ CatalogBrandId = 1,
+ PictureFileName = "fakeItemF.png"
}
};
}
}
+
+ public class TestCatalogSettings : IOptionsSnapshot
+ {
+ public CatalogSettings Value => new CatalogSettings
+ {
+ PicBaseUrl = "http://image-server.com/",
+ AzureStorageEnabled = true
+ };
+
+ public CatalogSettings Get(string name) => Value;
+ }
+
}
diff --git a/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj
index 0a097242e..7c64276b4 100644
--- a/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj
+++ b/src/Services/Catalog/Catalog.UnitTests/Catalog.UnitTests.csproj
@@ -1,17 +1,16 @@
- netcoreapp3.0
+ netcoreapp3.1
false
false
-
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
@@ -20,7 +19,6 @@
-
diff --git a/src/Services/Identity/Identity.API/Dockerfile b/src/Services/Identity/Identity.API/Dockerfile
index a292540ed..035dd6fc0 100644
--- a/src/Services/Identity/Identity.API/Dockerfile
+++ b/src/Services/Identity/Identity.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Identity/Identity.API/Identity.API.csproj b/src/Services/Identity/Identity.API/Identity.API.csproj
index b70653cfb..426b5d461 100644
--- a/src/Services/Identity/Identity.API/Identity.API.csproj
+++ b/src/Services/Identity/Identity.API/Identity.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
aspnet-eShopOnContainers.Identity-90487118-103c-4ff0-b9da-e5e26f7ab0c5
..\..\..\..\docker-compose.dcproj
false
@@ -16,39 +16,39 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml b/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml
index 4727229c7..1d57c688e 100644
--- a/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml
+++ b/src/Services/Identity/Identity.API/Views/Shared/_Layout.cshtml
@@ -3,6 +3,7 @@
+
eShopOnContainers Identity
diff --git a/src/Services/Location/Locations.API/Dockerfile b/src/Services/Location/Locations.API/Dockerfile
index f10437db6..b8857b997 100644
--- a/src/Services/Location/Locations.API/Dockerfile
+++ b/src/Services/Location/Locations.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Location/Locations.API/Locations.API.csproj b/src/Services/Location/Locations.API/Locations.API.csproj
index 10eb6b5b7..d4899becb 100644
--- a/src/Services/Location/Locations.API/Locations.API.csproj
+++ b/src/Services/Location/Locations.API/Locations.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
..\..\..\..\docker-compose.dcproj
aspnet-Locations.API-20161122013619
false
@@ -10,29 +10,30 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj
index 742e2d409..0b6f4f1fa 100644
--- a/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj
+++ b/src/Services/Location/Locations.FunctionalTests/Locations.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
false
false
@@ -17,9 +17,9 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Marketing/Marketing.API/Dockerfile b/src/Services/Marketing/Marketing.API/Dockerfile
index cd249e94e..1fec56f50 100644
--- a/src/Services/Marketing/Marketing.API/Dockerfile
+++ b/src/Services/Marketing/Marketing.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Marketing/Marketing.API/Marketing.API.csproj b/src/Services/Marketing/Marketing.API/Marketing.API.csproj
index 56d685e61..bc3116fc3 100644
--- a/src/Services/Marketing/Marketing.API/Marketing.API.csproj
+++ b/src/Services/Marketing/Marketing.API/Marketing.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
..\..\..\..\docker-compose.dcproj
Microsoft.eShopOnContainers.Services.Marketing.API
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
@@ -24,31 +24,32 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj
index 6d7d6ff14..f166db7b5 100644
--- a/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj
+++ b/src/Services/Marketing/Marketing.FunctionalTests/Marketing.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
false
@@ -17,9 +17,9 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Ordering/Ordering.API/Dockerfile b/src/Services/Ordering/Ordering.API/Dockerfile
index 62894ce9f..226652f08 100644
--- a/src/Services/Ordering/Ordering.API/Dockerfile
+++ b/src/Services/Ordering/Ordering.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj
index 49688e07d..c212bfe05 100644
--- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj
+++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
aspnet-Ordering.API-20161122013547
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
..\..\..\..\docker-compose.dcproj
@@ -37,36 +37,36 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
index c21192a89..4b9b51970 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
index 751ae71ee..82ffae84f 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Extensions/CustomExtensionMethods.cs
@@ -128,13 +128,18 @@ namespace Ordering.BackgroundTasks.Extensions
public static ILoggingBuilder UseSerilog(this ILoggingBuilder builder, IConfiguration configuration)
{
+ var seqServerUrl = configuration["Serilog:SeqServerUrl"];
+ var logstashUrl = configuration["Serilog:LogstashgUrl"];
+
Log.Logger = new LoggerConfiguration()
- .MinimumLevel.Verbose()
- .Enrich.WithProperty("ApplicationContext", "BackgroundTasks")
- .Enrich.FromLogContext()
- .WriteTo.Console()
- .ReadFrom.Configuration(configuration)
- .CreateLogger();
+ .MinimumLevel.Verbose()
+ .Enrich.WithProperty("ApplicationContext", Program.AppName)
+ .Enrich.FromLogContext()
+ .WriteTo.Console()
+ .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl)
+ .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl)
+ .ReadFrom.Configuration(configuration)
+ .CreateLogger();
return builder;
}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
index 7eed9b117..012a0fa18 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
dotnet-Ordering.BackgroundTasks-9D3E1DD6-405B-447F-8AAB-1708B36D260E
false
Linux
@@ -9,24 +9,22 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
-
-
+
-
+
-
-
+
+
-
+
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
index a483bb1f8..ab30ba2d9 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs
@@ -1,28 +1,26 @@
using Autofac.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Ordering.BackgroundTasks.Extensions;
-using Ordering.BackgroundTasks.Tasks;
using Serilog;
using System.IO;
-using Microsoft.AspNetCore;
-using Microsoft.AspNetCore.Hosting;
namespace Ordering.BackgroundTasks
{
public class Program
{
- public static readonly string Namespace = typeof(Program).Namespace;
- public static readonly string AppName = Namespace;
+ public static readonly string AppName = typeof(Program).Assembly.GetName().Name;
public static void Main(string[] args)
{
CreateHostBuilder(args).Run();
}
- public static IWebHost CreateHostBuilder(string[] args) =>
- WebHost.CreateDefaultBuilder(args)
+ public static IHost CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .UseServiceProviderFactory(new AutofacServiceProviderFactory())
+ .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup())
.ConfigureAppConfiguration((host, builder) =>
{
builder.SetBasePath(Directory.GetCurrentDirectory());
@@ -32,7 +30,6 @@ namespace Ordering.BackgroundTasks
builder.AddCommandLine(args);
})
.ConfigureLogging((host, builder) => builder.UseSerilog(host.Configuration).AddSerilog())
- .UseStartup()
.Build();
}
}
diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
index 1f35b711c..8b1c80171 100644
--- a/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
+++ b/src/Services/Ordering/Ordering.BackgroundTasks/Startup.cs
@@ -21,19 +21,13 @@
public IConfiguration Configuration { get; }
- public virtual IServiceProvider ConfigureServices(IServiceCollection services)
+ public virtual void ConfigureServices(IServiceCollection services)
{
services.AddCustomHealthCheck(this.Configuration)
.Configure(this.Configuration)
.AddOptions()
.AddHostedService()
- .AddEventBus(this.Configuration)
- .AddAutofac(container => container.Populate(services));
-
- var container = new ContainerBuilder();
- container.Populate(services);
-
- return new AutofacServiceProvider(container.Build());
+ .AddEventBus(this.Configuration);
}
diff --git a/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj b/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj
index 05ae14ea0..3f95f3c0b 100644
--- a/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj
+++ b/src/Services/Ordering/Ordering.Domain/Ordering.Domain.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj
index 119f72863..523c725fc 100644
--- a/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj
+++ b/src/Services/Ordering/Ordering.FunctionalTests/Ordering.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
false
@@ -17,9 +17,9 @@
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj b/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj
index a83c6d2ff..6675a2301 100644
--- a/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj
+++ b/src/Services/Ordering/Ordering.Infrastructure/Ordering.Infrastructure.csproj
@@ -9,9 +9,9 @@
-
-
-
+
+
+
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Dockerfile b/src/Services/Ordering/Ordering.SignalrHub/Dockerfile
index b684c3027..47a9c2d7e 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Dockerfile
+++ b/src/Services/Ordering/Ordering.SignalrHub/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
index 315cf6edf..ebe4cb70e 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
+++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
..\..\..\..\docker-compose.dcproj
false
true
@@ -13,26 +13,26 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
diff --git a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj
index 69bc989a0..1ef8fc554 100644
--- a/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj
+++ b/src/Services/Ordering/Ordering.UnitTests/Ordering.UnitTests.csproj
@@ -1,18 +1,16 @@
- netcoreapp3.0
+ netcoreapp3.1
false
false
-
-
-
-
-
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Services/Payment/Payment.API/Dockerfile b/src/Services/Payment/Payment.API/Dockerfile
index 08115ed21..a54069686 100644
--- a/src/Services/Payment/Payment.API/Dockerfile
+++ b/src/Services/Payment/Payment.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj
index 48aa65102..10f0e261a 100644
--- a/src/Services/Payment/Payment.API/Payment.API.csproj
+++ b/src/Services/Payment/Payment.API/Payment.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
..\..\..\..\docker-compose.dcproj
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
false
@@ -10,22 +10,22 @@
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
+
diff --git a/src/Services/Webhooks/Webhooks.API/Dockerfile b/src/Services/Webhooks/Webhooks.API/Dockerfile
index 5e6c37b7d..f8de8604f 100644
--- a/src/Services/Webhooks/Webhooks.API/Dockerfile
+++ b/src/Services/Webhooks/Webhooks.API/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
index dfbc5cb7b..6624001c4 100644
--- a/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
+++ b/src/Services/Webhooks/Webhooks.API/Webhooks.API.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
InProcess
Linux
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
@@ -11,18 +11,18 @@
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
diff --git a/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj b/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj
index 0ce51e413..0239c1ade 100644
--- a/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj
+++ b/src/Tests/Services/Application.FunctionalTests/Application.FunctionalTests.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
true
false
false
@@ -67,10 +67,10 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/Web/WebMVC/Dockerfile b/src/Web/WebMVC/Dockerfile
index 60a2ff5ad..7256edb23 100644
--- a/src/Web/WebMVC/Dockerfile
+++ b/src/Web/WebMVC/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Web/WebMVC/Views/Shared/_Layout.cshtml b/src/Web/WebMVC/Views/Shared/_Layout.cshtml
index d52f23173..2c2943d2c 100644
--- a/src/Web/WebMVC/Views/Shared/_Layout.cshtml
+++ b/src/Web/WebMVC/Views/Shared/_Layout.cshtml
@@ -106,6 +106,7 @@
return "Authorization", getToken();
}
})
+ .withAutomaticReconnect()
.build();
connection.start().then(function () {
diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj
index bdbb29924..16a094ab9 100644
--- a/src/Web/WebMVC/WebMVC.csproj
+++ b/src/Web/WebMVC/WebMVC.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
aspnet-Microsoft.eShopOnContainers-946ae052-8305-4a99-965b-ec8636ddbae3
..\..\..\docker-compose.dcproj
3.0
@@ -23,26 +23,26 @@
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
diff --git a/src/Web/WebMVC/bundleconfig.json b/src/Web/WebMVC/bundleconfig.json
index 74e28e320..5c5793da5 100644
--- a/src/Web/WebMVC/bundleconfig.json
+++ b/src/Web/WebMVC/bundleconfig.json
@@ -11,7 +11,7 @@
{
"outputFileName": "wwwroot/js/site.js",
"inputFiles": [
- "wwwroot/lib/@aspnet/signalr/dist/browser/signalr.js",
+ "wwwroot/lib/@microsoft/signalr/dist/browser/signalr.js",
"wwwroot/lib/toastr/toastr.min.js"
],
// Optionally specify minification options
diff --git a/src/Web/WebMVC/libman.json b/src/Web/WebMVC/libman.json
index 9aa7ef3f4..f7b9d3763 100644
--- a/src/Web/WebMVC/libman.json
+++ b/src/Web/WebMVC/libman.json
@@ -9,6 +9,7 @@
{
"provider": "unpkg",
"library": "bootstrap@4.3.1",
+ "destination": "wwwroot/lib/bootstrap/",
"files": [
"dist/css/bootstrap.css",
"dist/css/bootstrap.css.map",
@@ -16,8 +17,7 @@
"dist/css/bootstrap.min.css.map",
"dist/js/bootstrap.js",
"dist/js/bootstrap.min.js"
- ],
- "destination": "wwwroot/lib/bootstrap/"
+ ]
},
{
"library": "jquery-validation-unobtrusive@3.2.11",
@@ -37,12 +37,12 @@
},
{
"provider": "unpkg",
- "library": "@aspnet/signalr@1.1.2",
- "files": [
+ "library": "@microsoft/signalr@3.0.1",
+ "destination": "wwwroot/lib/@microsoft/signalr/",
+ "files": [
"dist/browser/signalr.js",
"dist/browser/signalr.min.js"
- ],
- "destination": "wwwroot/lib/@aspnet/signalr/"
+ ]
}
]
}
\ No newline at end of file
diff --git a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts
index fa1b7e386..680ee06e9 100644
--- a/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts
+++ b/src/Web/WebSPA/Client/modules/shared/services/signalr.service.ts
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { SecurityService } from './security.service';
import { ConfigurationService } from './configuration.service';
-import { HubConnection, HubConnectionBuilder, LogLevel, HttpTransportType } from '@aspnet/signalr';
+import { HubConnection, HubConnectionBuilder, LogLevel, HttpTransportType } from '@microsoft/signalr';
import { ToastrService } from 'ngx-toastr';
import { Subject } from 'rxjs';
@@ -25,7 +25,7 @@ export class SignalrService {
this.SignalrHubUrl = this.configurationService.serverSettings.signalrHubUrl;
this.init();
});
- }
+ }
}
public stop() {
@@ -36,8 +36,8 @@ export class SignalrService {
if (this.securityService.IsAuthorized == true) {
this.register();
this.stablishConnection();
- this.registerHandlers();
- }
+ this.registerHandlers();
+ }
}
private register() {
@@ -46,6 +46,7 @@ export class SignalrService {
accessTokenFactory: () => this.securityService.GetToken()
})
.configureLogging(LogLevel.Information)
+ .withAutomaticReconnect()
.build();
}
@@ -61,6 +62,7 @@ export class SignalrService {
private registerHandlers() {
this._hubConnection.on('UpdatedOrderState', (msg) => {
+ console.log(`Order ${msg.orderId} updated to ${msg.status}`);
this.toastr.success('Updated to status: ' + msg.status, 'Order Id: ' + msg.orderId);
this.msgSignalrSource.next();
});
diff --git a/src/Web/WebSPA/Dockerfile b/src/Web/WebSPA/Dockerfile
index acb039fe7..75a7d8a74 100644
--- a/src/Web/WebSPA/Dockerfile
+++ b/src/Web/WebSPA/Dockerfile
@@ -1,5 +1,5 @@
ARG NODE_IMAGE=node:8.11
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
@@ -11,7 +11,7 @@ RUN npm install
COPY Web/WebSPA .
RUN npm run build:prod
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Web/WebSPA/WebSPA.csproj b/src/Web/WebSPA/WebSPA.csproj
index baefec967..ff161ddc3 100644
--- a/src/Web/WebSPA/WebSPA.csproj
+++ b/src/Web/WebSPA/WebSPA.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
aspnetcorespa-c23d27a4-eb88-4b18-9b77-2a93f3b15119
..\..\..\docker-compose.dcproj
false
@@ -87,17 +87,17 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/src/Web/WebSPA/package-lock.json b/src/Web/WebSPA/package-lock.json
index 86c48226d..3ea79e548 100644
--- a/src/Web/WebSPA/package-lock.json
+++ b/src/Web/WebSPA/package-lock.json
@@ -1769,10 +1769,25 @@
"tslib": "^1.9.0"
}
},
- "@aspnet/signalr": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@aspnet/signalr/-/signalr-1.0.3.tgz",
- "integrity": "sha512-8nPSarp4k+oP2M6P7tw2FZMXOMR86wH9GPb/4wiqA18c4Ds88SUmE0pSpnNQPDOoWGMj6y9F2Xz5JyoynCPXWQ=="
+ "@microsoft/signalr": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-3.0.1.tgz",
+ "integrity": "sha512-tRhqAmf5SyK02VXM6noj6DjSgt0i8yDqspHdLqdqsSrjMh4/inrwjI/BqLVE8zLD3mHp+eGHeSnlLTUVe024vA==",
+ "requires": {
+ "eventsource": "^1.0.7",
+ "request": "^2.88.0",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "ws": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
},
"@ng-bootstrap/ng-bootstrap": {
"version": "3.3.0",
@@ -2520,7 +2535,6 @@
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
@@ -2565,8 +2579,7 @@
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"assign-symbols": {
"version": "1.0.0",
@@ -2599,14 +2612,12 @@
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
- "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
- "dev": true
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"atob": {
"version": "2.1.2",
@@ -2630,14 +2641,12 @@
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
- "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
- "dev": true
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
"axobject-query": {
"version": "2.0.2",
@@ -2858,7 +2867,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
"optional": true,
"requires": {
"tweetnacl": "^0.14.3"
@@ -3385,8 +3393,7 @@
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chalk": {
"version": "1.1.3",
@@ -3600,8 +3607,7 @@
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"code-point-at": {
"version": "1.1.0",
@@ -3659,7 +3665,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
- "dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
@@ -4104,7 +4109,6 @@
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
@@ -4257,8 +4261,7 @@
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"delegates": {
"version": "1.0.0",
@@ -4424,7 +4427,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
"optional": true,
"requires": {
"jsbn": "~0.1.0",
@@ -5061,8 +5063,7 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extend-shallow": {
"version": "3.0.2",
@@ -5167,8 +5168,7 @@
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
},
"fast-deep-equal": {
"version": "2.0.1",
@@ -5372,14 +5372,12 @@
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
},
"form-data": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
- "dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
@@ -6052,7 +6050,6 @@
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
@@ -6212,14 +6209,12 @@
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
},
"har-validator": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
"integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
- "dev": true,
"requires": {
"ajv": "^5.3.0",
"har-schema": "^2.0.0"
@@ -6229,7 +6224,6 @@
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
- "dev": true,
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
@@ -6240,14 +6234,12 @@
"fast-deep-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
- "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
- "dev": true
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
},
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
- "dev": true
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
}
}
},
@@ -6445,7 +6437,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
@@ -7090,8 +7081,7 @@
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"is-utf8": {
"version": "0.2.1",
@@ -7146,8 +7136,7 @@
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"istanbul-instrumenter-loader": {
"version": "3.0.1",
@@ -7289,7 +7278,6 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true,
"optional": true
},
"jsesc": {
@@ -7307,8 +7295,7 @@
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
},
"json-schema-traverse": {
"version": "0.4.1",
@@ -7333,8 +7320,7 @@
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"json3": {
"version": "3.3.2",
@@ -7377,7 +7363,6 @@
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
@@ -8290,9 +8275,9 @@
"dev": true
},
"ngx-toastr": {
- "version": "9.0.2",
- "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-9.0.2.tgz",
- "integrity": "sha512-wSc1Oh0dshJR0TaZUu52YRiAW3JIjS1SZarZoj/B1yK8zSp6G+a4ueD8qCY50qLpQ3SddT19zz1n90sp64jH1Q==",
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-10.1.0.tgz",
+ "integrity": "sha512-LXGL8jKIm0SGklkXytNKbR6VrF94all35SaUfgd1gOUzgllTW2ldqORDZlgIaiMB3Dcybaald8p3boEHvfjEIQ==",
"requires": {
"tslib": "^1.9.0"
}
@@ -8631,8 +8616,7 @@
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
},
"object-assign": {
"version": "4.1.1",
@@ -9183,8 +9167,7 @@
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"pify": {
"version": "3.0.0",
@@ -9499,8 +9482,7 @@
"psl": {
"version": "1.1.29",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
- "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
- "dev": true
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
},
"public-encrypt": {
"version": "4.0.2",
@@ -9902,7 +9884,6 @@
"version": "2.88.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
"integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
@@ -11260,7 +11241,6 @@
"version": "1.14.2",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
- "dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
@@ -12052,7 +12032,6 @@
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
"integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dev": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
@@ -12061,8 +12040,7 @@
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
}
}
},
@@ -12201,7 +12179,6 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
@@ -12210,7 +12187,6 @@
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true,
"optional": true
},
"type": {
@@ -12694,7 +12670,6 @@
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
diff --git a/src/Web/WebSPA/package.json b/src/Web/WebSPA/package.json
index 96b725445..4935ddfbb 100644
--- a/src/Web/WebSPA/package.json
+++ b/src/Web/WebSPA/package.json
@@ -37,7 +37,7 @@
"@angular/platform-browser-dynamic": "^7.2.10",
"@angular/platform-server": "^7.2.10",
"@angular/router": "^7.2.10",
- "@aspnet/signalr": "3.0.0-preview6.19307.2",
+ "@microsoft/signalr": "3.0.1",
"@ng-bootstrap/ng-bootstrap": "3.3.0",
"bootstrap": "4.3.1",
"core-js": "^2.5.0",
@@ -45,7 +45,7 @@
"font-awesome": "4.7.0",
"isomorphic-fetch": "2.2.1",
"jquery": "3.4.1",
- "ngx-toastr": "^9.0.2",
+ "ngx-toastr": "10.1.0",
"normalize.css": "8.0.0",
"popper.js": "^1.14.4",
"preboot": "6.0.0-beta.5",
diff --git a/src/Web/WebStatus/Dockerfile b/src/Web/WebStatus/Dockerfile
index b027268ba..acba370fe 100644
--- a/src/Web/WebStatus/Dockerfile
+++ b/src/Web/WebStatus/Dockerfile
@@ -1,8 +1,8 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Web/WebStatus/WebStatus.csproj b/src/Web/WebStatus/WebStatus.csproj
index 39d454473..ecdf92b15 100644
--- a/src/Web/WebStatus/WebStatus.csproj
+++ b/src/Web/WebStatus/WebStatus.csproj
@@ -1,6 +1,6 @@
- netcoreapp3.0
+ netcoreapp3.1
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
..\..\..\docker-compose.dcproj
true
@@ -8,22 +8,22 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
diff --git a/src/Web/WebhookClient/Dockerfile b/src/Web/WebhookClient/Dockerfile
index bce6a4f54..f0511b302 100644
--- a/src/Web/WebhookClient/Dockerfile
+++ b/src/Web/WebhookClient/Dockerfile
@@ -1,9 +1,9 @@
-FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
+FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
-FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
+FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY "eShopOnContainers-ServicesAndWebApps.sln" "eShopOnContainers-ServicesAndWebApps.sln"
diff --git a/src/Web/WebhookClient/WebhookClient.csproj b/src/Web/WebhookClient/WebhookClient.csproj
index 7c67bced2..fbb9f7af9 100644
--- a/src/Web/WebhookClient/WebhookClient.csproj
+++ b/src/Web/WebhookClient/WebhookClient.csproj
@@ -1,7 +1,7 @@
- netcoreapp3.0
+ netcoreapp3.1
InProcess
Linux
36215d41-f31a-4aa6-9929-bd67d650e7b5
@@ -13,9 +13,9 @@
-
+
-
+
diff --git a/src/docker-compose-tests.override.yml b/src/docker-compose-tests.override.yml
index 35e8170da..6a2cf1991 100644
--- a/src/docker-compose-tests.override.yml
+++ b/src/docker-compose-tests.override.yml
@@ -41,7 +41,7 @@ services:
ports:
- "5105:80"
- basket-api-test:
+ basket-api-functional-test:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:80
@@ -61,7 +61,7 @@ services:
- dotnet
- test
- --logger
- - trx;LogFileName=/tests/basket-test-results.xml
+ - trx;LogFileName=/tests/basket-functional-test-results.xml
basket-api-unit-test:
environment:
@@ -85,7 +85,7 @@ services:
- --logger
- trx;LogFileName=/tests/basket-unit-test-results.xml
- catalog-api-test:
+ catalog-api-functional-test:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:80
@@ -107,7 +107,7 @@ services:
- dotnet
- test
- --logger
- - trx;LogFileName=/tests/catalog-test-results.xml
+ - trx;LogFileName=/tests/catalog-functional-test-results.xml
catalog-api-unit-test:
environment:
@@ -133,7 +133,7 @@ services:
- --logger
- trx;LogFileName=/tests/catalog-unit-test-results.xml
- ordering-api-test:
+ ordering-api-functional-test:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:80
@@ -155,7 +155,7 @@ services:
- dotnet
- test
- --logger
- - trx;LogFileName=/tests/ordering-test-results.xml
+ - trx;LogFileName=/tests/ordering-functional-test-results.xml
ordering-api-unit-test:
environment:
@@ -181,7 +181,7 @@ services:
- --logger
- trx;LogFileName=/tests/ordering-unit-test-results.xml
- marketing-api-test:
+ marketing-api-functional-test:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:80
@@ -208,7 +208,7 @@ services:
- dotnet
- test
- --logger
- - trx;LogFileName=/tests/marketing-test-results.xml
+ - trx;LogFileName=/tests/marketing-functional-test-results.xml
payment-api-test:
environment:
@@ -223,7 +223,7 @@ services:
ports:
- "5108:80"
- locations-api-test:
+ locations-api-functional-test:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=http://0.0.0.0:80
@@ -244,4 +244,4 @@ services:
- dotnet
- test
- --logger
- - trx;LogFileName=/tests/locations-test-results.xml
\ No newline at end of file
+ - trx;LogFileName=/tests/locations-functional-test-results.xml
\ No newline at end of file
diff --git a/src/docker-compose-tests.yml b/src/docker-compose-tests.yml
index 13f1ddf46..75daf5a2f 100644
--- a/src/docker-compose-tests.yml
+++ b/src/docker-compose-tests.yml
@@ -2,7 +2,7 @@ version: '3.4'
services:
sql-data-test:
- image: microsoft/mssql-server-linux:2017-latest
+ image: mcr.microsoft.com/mssql/server:2017-latest
nosql-data-test:
image: mongo
@@ -21,7 +21,7 @@ services:
depends_on:
- sql-data-test
- basket-api-test:
+ basket-api-functional-test:
image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest}
build:
context: .
@@ -35,7 +35,7 @@ services:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
basket-api-unit-test:
- image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest}
+ image: ${REGISTRY:-eshop}/basket-api-unit-test:${TAG:-latest}
build:
context: .
dockerfile: Services/Basket/Basket.API/Dockerfile
@@ -47,8 +47,8 @@ services:
volumes:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
- catalog-api-test:
- image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest}
+ catalog-api-functional-test:
+ image: ${REGISTRY:-eshop}/catalog-api-functional-test:${TAG:-latest}
build:
context: .
dockerfile: Services/Catalog/Catalog.API/Dockerfile
@@ -60,7 +60,7 @@ services:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
catalog-api-unit-test:
- image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest}
+ image: ${REGISTRY:-eshop}/catalog-api-unit-test:${TAG:-latest}
build:
context: .
dockerfile: Services/Catalog/Catalog.API/Dockerfile
@@ -71,7 +71,7 @@ services:
volumes:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
- ordering-api-test:
+ ordering-api-functional-test:
image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest}
build:
context: .
@@ -84,7 +84,7 @@ services:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
ordering-api-unit-test:
- image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest}
+ image: ${REGISTRY:-eshop}/ordering-api-unit-test:${TAG:-latest}
build:
context: .
dockerfile: Services/Ordering/Ordering.API/Dockerfile
@@ -95,7 +95,7 @@ services:
volumes:
- ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests
- marketing-api-test:
+ marketing-api-functional-test:
image: ${REGISTRY:-eshop}/marketing-api-test:${TAG:-latest}
build:
context: .
@@ -117,7 +117,7 @@ services:
depends_on:
- rabbitmq-test
- locations-api-test:
+ locations-api-functional-test:
image: ${REGISTRY:-eshop}/locations-api-test:${TAG:-latest}
build:
context: .
diff --git a/src/docker-compose.override.yml b/src/docker-compose.override.yml
index 72b3e25f0..4f5d44d99 100644
--- a/src/docker-compose.override.yml
+++ b/src/docker-compose.override.yml
@@ -349,7 +349,7 @@ services:
- UseCustomizationData=True
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
- OrchestratorType=${ORCHESTRATOR_TYPE}
- - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5112
+ - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202
ports:
- "5104:80"
@@ -360,7 +360,7 @@ services:
- PurchaseUrl=http://webshoppingapigw
- IdentityUrl=http://10.0.75.1:5105
- MarketingUrl=http://webmarketingapigw
- - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5112
+ - SignalrHubUrl=http://${ESHOP_EXTERNAL_DNS_NAME_OR_IP}:5202
- IdentityUrlHC=http://identity-api/hc
- UseCustomizationData=True
- ApplicationInsights__InstrumentationKey=${INSTRUMENTATION_KEY}
diff --git a/src/docker-compose.windows.yml b/src/docker-compose.windows.yml
index 44aba924f..d3e3b802e 100644
--- a/src/docker-compose.windows.yml
+++ b/src/docker-compose.windows.yml
@@ -6,7 +6,7 @@ version: '3.4'
services:
sqldata:
- image: microsoft/mssql-server-windows-developer
+ image: mcr.microsoft.com/mssql/server:2017-latest
nosqldata:
image: mongo:windowsservercore
diff --git a/src/docker-compose.yml b/src/docker-compose.yml
index 65edc42f9..2172a6ec9 100644
--- a/src/docker-compose.yml
+++ b/src/docker-compose.yml
@@ -6,7 +6,7 @@ services:
image: datalust/seq:latest
sqldata:
- image: microsoft/mssql-server-linux:2017-latest
+ image: mcr.microsoft.com/mssql/server:2017-latest
nosqldata:
image: mongo